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.3k|{
  221|  10.3k|	if (crypto_backend_initialised)
  ------------------
  |  Branch (221:6): [True: 10.3k, False: 1]
  ------------------
  222|  10.3k|		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|   820k|{
  324|   820k|	int size;
  325|   820k|	const EVP_MD *hash_id;
  326|       |
  327|   820k|	hash_id = hash_id_get(name);
  328|   820k|	if (!hash_id)
  ------------------
  |  Branch (328:6): [True: 442, False: 819k]
  ------------------
  329|    442|		return -EINVAL;
  330|       |
  331|   819k|	size = EVP_MD_size(hash_id);
  ------------------
  |  |  543|   819k|#define EVP_MD_size EVP_MD_get_size
  ------------------
  332|   819k|	hash_id_free(hash_id);
  333|   819k|	return size;
  334|   820k|}
crypt_hash_init:
  337|  9.85k|{
  338|  9.85k|	struct crypt_hash *h;
  339|       |
  340|  9.85k|	h = malloc(sizeof(*h));
  341|  9.85k|	if (!h)
  ------------------
  |  Branch (341:6): [True: 0, False: 9.85k]
  ------------------
  342|      0|		return -ENOMEM;
  343|       |
  344|  9.85k|	h->md = EVP_MD_CTX_new();
  345|  9.85k|	if (!h->md) {
  ------------------
  |  Branch (345:6): [True: 0, False: 9.85k]
  ------------------
  346|      0|		free(h);
  347|      0|		return -ENOMEM;
  348|      0|	}
  349|       |
  350|  9.85k|	h->hash_id = hash_id_get(name);
  351|  9.85k|	if (!h->hash_id) {
  ------------------
  |  Branch (351:6): [True: 0, False: 9.85k]
  ------------------
  352|      0|		EVP_MD_CTX_free(h->md);
  353|      0|		free(h);
  354|      0|		return -EINVAL;
  355|      0|	}
  356|       |
  357|  9.85k|	if (EVP_DigestInit_ex(h->md, h->hash_id, NULL) != 1) {
  ------------------
  |  Branch (357:6): [True: 0, False: 9.85k]
  ------------------
  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.85k|	h->hash_len = EVP_MD_size(h->hash_id);
  ------------------
  |  |  543|  9.85k|#define EVP_MD_size EVP_MD_get_size
  ------------------
  365|  9.85k|	*ctx = h;
  366|  9.85k|	return 0;
  367|  9.85k|}
crypt_hash_write:
  378|  19.6k|{
  379|  19.6k|	if (EVP_DigestUpdate(ctx->md, buffer, length) != 1)
  ------------------
  |  Branch (379:6): [True: 0, False: 19.6k]
  ------------------
  380|      0|		return -EINVAL;
  381|       |
  382|  19.6k|	return 0;
  383|  19.6k|}
crypt_hash_final:
  386|  9.85k|{
  387|  9.85k|	unsigned char tmp[EVP_MAX_MD_SIZE];
  388|  9.85k|	unsigned int tmp_len = 0;
  389|       |
  390|  9.85k|	if (length > (size_t)ctx->hash_len)
  ------------------
  |  Branch (390:6): [True: 0, False: 9.85k]
  ------------------
  391|      0|		return -EINVAL;
  392|       |
  393|  9.85k|	if (EVP_DigestFinal_ex(ctx->md, tmp, &tmp_len) != 1)
  ------------------
  |  Branch (393:6): [True: 0, False: 9.85k]
  ------------------
  394|      0|		return -EINVAL;
  395|       |
  396|  9.85k|	if (tmp_len < length) {
  ------------------
  |  Branch (396:6): [True: 0, False: 9.85k]
  ------------------
  397|      0|		crypt_backend_memzero(tmp, sizeof(tmp));
  398|      0|		return -EINVAL;
  399|      0|	}
  400|       |
  401|  9.85k|	crypt_backend_memcpy(buffer, tmp, length);
  402|  9.85k|	crypt_backend_memzero(tmp, sizeof(tmp));
  403|       |
  404|  9.85k|	if (crypt_hash_restart(ctx))
  ------------------
  |  Branch (404:6): [True: 0, False: 9.85k]
  ------------------
  405|      0|		return -EINVAL;
  406|       |
  407|  9.85k|	return 0;
  408|  9.85k|}
crypt_hash_destroy:
  411|  9.85k|{
  412|  9.85k|	hash_id_free(ctx->hash_id);
  413|  9.85k|	EVP_MD_CTX_free(ctx->md);
  414|  9.85k|	free(ctx);
  415|  9.85k|}
crypt_fips_mode:
  954|  6.46k|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|   830k|{
  287|   830k|#if OPENSSL3_API
  288|   830k|	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|   830k|}
crypto_openssl.c:crypt_hash_compat_name:
  262|   830k|{
  263|   830k|	const char *hash_name = name;
  264|   830k|	int i;
  265|   830k|	static struct hash_alg hash_algs[] = {
  266|   830k|	{ "blake2b-512", "blake2b512" },
  267|   830k|	{ "blake2s-256", "blake2s256" },
  268|   830k|	{ NULL,          NULL,         }};
  269|       |
  270|   830k|	if (!name)
  ------------------
  |  Branch (270:6): [True: 0, False: 830k]
  ------------------
  271|      0|		return NULL;
  272|       |
  273|   830k|	i = 0;
  274|  2.47M|	while (hash_algs[i].name) {
  ------------------
  |  Branch (274:9): [True: 1.65M, False: 823k]
  ------------------
  275|  1.65M|		if (!strcasecmp(name, hash_algs[i].name)) {
  ------------------
  |  Branch (275:7): [True: 6.21k, False: 1.64M]
  ------------------
  276|  6.21k|			hash_name =  hash_algs[i].openssl_name;
  277|  6.21k|			break;
  278|  6.21k|		}
  279|  1.64M|		i++;
  280|  1.64M|	}
  281|       |
  282|   830k|	return hash_name;
  283|   830k|}
crypto_openssl.c:hash_id_free:
  295|   829k|{
  296|   829k|#if OPENSSL3_API
  297|   829k|	EVP_MD_free(CONST_CAST(EVP_MD*)hash_id);
  ------------------
  |  |   50|   829k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  298|       |#else
  299|       |	UNUSED(hash_id);
  300|       |#endif
  301|   829k|}
crypto_openssl.c:crypt_hash_restart:
  370|  9.85k|{
  371|  9.85k|	if (EVP_DigestInit_ex(ctx->md, ctx->hash_id, NULL) != 1)
  ------------------
  |  Branch (371:6): [True: 0, False: 9.85k]
  ------------------
  372|      0|		return -EINVAL;
  373|       |
  374|  9.85k|	return 0;
  375|  9.85k|}

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

crypt_pbkdf_get_limits:
   30|  4.31k|{
   31|  4.31k|	if (!kdf || !limits)
  ------------------
  |  Branch (31:6): [True: 0, False: 4.31k]
  |  Branch (31:14): [True: 0, False: 4.31k]
  ------------------
   32|      0|		return -EINVAL;
   33|       |
   34|  4.31k|	if (!strcmp(kdf, "pbkdf2")) {
  ------------------
  |  Branch (34:6): [True: 0, False: 4.31k]
  ------------------
   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.31k|	} else if (!strcmp(kdf, "argon2i") || !strcmp(kdf, "argon2id")) {
  ------------------
  |  Branch (43:13): [True: 0, False: 4.31k]
  |  Branch (43:40): [True: 4.31k, False: 0]
  ------------------
   44|  4.31k|		limits->min_iterations = 4;
   45|  4.31k|		limits->max_iterations = UINT32_MAX;
   46|  4.31k|		limits->min_memory     = 32;      /* hard limit */
   47|  4.31k|		limits->min_bench_memory=64*1024; /* 64 MiB minimum for benchmark */
   48|  4.31k|		limits->max_memory     = 4*1024*1024; /* 4GiB */
   49|  4.31k|		limits->min_parallel   = 1;
   50|  4.31k|		limits->max_parallel   = 4;
   51|  4.31k|		return 0;
   52|  4.31k|	}
   53|       |
   54|      0|	return -EINVAL;
   55|  4.31k|}

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

LUKS2_disk_hdr_read:
  642|  8.23k|{
  643|  8.23k|	enum { HDR_OK, HDR_OBSOLETE, HDR_FAIL, HDR_FAIL_IO } state_hdr1, state_hdr2;
  644|  8.23k|	struct luks2_hdr_disk hdr_disk1, hdr_disk2;
  645|  8.23k|	char *json_area1 = NULL, *json_area2 = NULL;
  646|  8.23k|	json_object *jobj_hdr1 = NULL, *jobj_hdr2 = NULL;
  647|  8.23k|	unsigned int i;
  648|  8.23k|	int r;
  649|  8.23k|	uint64_t hdr_size, json_area_end1 = 0, json_area_end2 = 0;
  650|  8.23k|	uint64_t hdr2_offsets[] = LUKS2_HDR2_OFFSETS;
  ------------------
  |  |  155|  8.23k|#define LUKS2_HDR2_OFFSETS { 0x04000, 0x008000, 0x010000, 0x020000, \
  |  |  156|  8.23k|                             0x40000, 0x080000, 0x100000, 0x200000, LUKS2_HDR_OFFSET_MAX }
  |  |  ------------------
  |  |  |  |  150|  8.23k|#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.23k|	if (do_recovery && do_blkprobe && !crypt_metadata_locking_enabled()) {
  ------------------
  |  Branch (653:6): [True: 8.23k, False: 0]
  |  Branch (653:21): [True: 8.23k, False: 0]
  |  Branch (653:36): [True: 0, False: 8.23k]
  ------------------
  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.23k|	state_hdr1 = HDR_FAIL;
  662|  8.23k|	r = hdr_read_disk(cd, device, &hdr_disk1, &json_area1, 0, 0);
  663|  8.23k|	if (r == 0) {
  ------------------
  |  Branch (663:6): [True: 1.45k, False: 6.77k]
  ------------------
  664|  1.45k|		jobj_hdr1 = parse_and_validate_json(cd, json_area1, be64_to_cpu(hdr_disk1.hdr_size), &json_area_end1);
  ------------------
  |  |  107|  1.45k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  665|  1.45k|		state_hdr1 = jobj_hdr1 ? HDR_OK : HDR_OBSOLETE;
  ------------------
  |  Branch (665:16): [True: 649, False: 809]
  ------------------
  666|  6.77k|	} else if (r == -EIO)
  ------------------
  |  Branch (666:13): [True: 0, False: 6.77k]
  ------------------
  667|      0|		state_hdr1 = HDR_FAIL_IO;
  668|       |
  669|       |	/*
  670|       |	 * Read secondary LUKS2 header (follows primary).
  671|       |	 */
  672|  8.23k|	state_hdr2 = HDR_FAIL;
  673|  8.23k|	if (state_hdr1 != HDR_FAIL && state_hdr1 != HDR_FAIL_IO) {
  ------------------
  |  Branch (673:6): [True: 1.45k, False: 6.77k]
  |  Branch (673:32): [True: 1.45k, False: 0]
  ------------------
  674|  1.45k|		r = hdr_read_disk(cd, device, &hdr_disk2, &json_area2, be64_to_cpu(hdr_disk1.hdr_size), 1);
  ------------------
  |  |  107|  1.45k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  675|  1.45k|		if (r == 0) {
  ------------------
  |  Branch (675:7): [True: 0, False: 1.45k]
  ------------------
  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.45k|		} else if (r == -EIO)
  ------------------
  |  Branch (678:14): [True: 0, False: 1.45k]
  ------------------
  679|      0|			state_hdr2 = HDR_FAIL_IO;
  680|  6.77k|	} else {
  681|       |		/*
  682|       |		 * No header size, check all known offsets.
  683|       |		 */
  684|  6.77k|		hdr_disk2.hdr_size = 0;
  685|  34.4k|		for (r = -EINVAL,i = 0; r < 0 && i < ARRAY_SIZE(hdr2_offsets); i++)
  ------------------
  |  |   21|  28.9k|# define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
  ------------------
  |  Branch (685:27): [True: 28.9k, False: 5.54k]
  |  Branch (685:36): [True: 27.7k, False: 1.23k]
  ------------------
  686|  27.7k|			r = hdr_read_disk(cd, device, &hdr_disk2, &json_area2, hdr2_offsets[i], 1);
  687|       |
  688|  6.77k|		if (r == 0) {
  ------------------
  |  Branch (688:7): [True: 5.54k, False: 1.23k]
  ------------------
  689|  5.54k|			jobj_hdr2 = parse_and_validate_json(cd, json_area2, be64_to_cpu(hdr_disk2.hdr_size), &json_area_end2);
  ------------------
  |  |  107|  5.54k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  690|  5.54k|			state_hdr2 = jobj_hdr2 ? HDR_OK : HDR_OBSOLETE;
  ------------------
  |  Branch (690:17): [True: 5.53k, False: 14]
  ------------------
  691|  5.54k|		} else if (r == -EIO)
  ------------------
  |  Branch (691:14): [True: 0, False: 1.23k]
  ------------------
  692|      0|			state_hdr2 = HDR_FAIL_IO;
  693|  6.77k|	}
  694|       |
  695|       |	/*
  696|       |	 * Check sequence id if both headers are read correctly.
  697|       |	 */
  698|  8.23k|	if (state_hdr1 == HDR_OK && state_hdr2 == HDR_OK) {
  ------------------
  |  Branch (698:6): [True: 649, False: 7.58k]
  |  Branch (698:30): [True: 0, False: 649]
  ------------------
  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.23k|	if (state_hdr1 == HDR_OK)
  ------------------
  |  Branch (706:6): [True: 649, False: 7.58k]
  ------------------
  707|    649|		hdr_size = LUKS2_hdr_and_areas_size_jobj(jobj_hdr1);
  708|  7.58k|	else if (state_hdr2 == HDR_OK)
  ------------------
  |  Branch (708:11): [True: 5.53k, False: 2.05k]
  ------------------
  709|  5.53k|		hdr_size = LUKS2_hdr_and_areas_size_jobj(jobj_hdr2);
  710|  2.05k|	else {
  711|  2.05k|		r = (state_hdr1 == HDR_FAIL_IO && state_hdr2 == HDR_FAIL_IO) ? -EIO : -EINVAL;
  ------------------
  |  Branch (711:8): [True: 0, False: 2.05k]
  |  Branch (711:37): [True: 0, False: 0]
  ------------------
  712|  2.05k|		goto err;
  713|  2.05k|	}
  714|       |
  715|  6.18k|	r = device_check_size(cd, device, hdr_size, 0);
  716|  6.18k|	if (r)
  ------------------
  |  Branch (716:6): [True: 1, False: 6.18k]
  ------------------
  717|      1|		goto err;
  718|       |
  719|       |	/*
  720|       |	 * Try to rewrite (recover) bad header. Always regenerate salt for bad header.
  721|       |	 */
  722|  6.18k|	if (state_hdr1 == HDR_OK && state_hdr2 != HDR_OK) {
  ------------------
  |  Branch (722:6): [True: 648, False: 5.53k]
  |  Branch (722:30): [True: 648, False: 0]
  ------------------
  723|    648|		log_dbg(cd, "Secondary LUKS2 header requires recovery.");
  ------------------
  |  |  186|    648|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    648|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  724|       |
  725|    648|		if (do_blkprobe && (r = detect_device_signatures(cd, device_path(device)))) {
  ------------------
  |  Branch (725:7): [True: 648, False: 0]
  |  Branch (725:22): [True: 24, False: 624]
  ------------------
  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|    624|		if (do_recovery) {
  ------------------
  |  Branch (731:7): [True: 624, False: 0]
  ------------------
  732|    624|			memcpy(&hdr_disk2, &hdr_disk1, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|    624|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  733|    624|			r = crypt_random_get(cd, (char*)hdr_disk2.salt, sizeof(hdr_disk2.salt), CRYPT_RND_SALT);
  734|    624|			if (r)
  ------------------
  |  Branch (734:8): [True: 0, False: 624]
  ------------------
  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|    624|			else {
  737|    624|				hdr_from_disk(&hdr_disk1, &hdr_disk2, hdr, 0);
  738|    624|				r = hdr_write_disk(cd, device, hdr, json_area1, hdr->hdr_size - LUKS2_HDR_BIN_LEN, 1);
  ------------------
  |  |  143|    624|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  739|    624|			}
  740|    624|			if (r)
  ------------------
  |  Branch (740:8): [True: 312, False: 312]
  ------------------
  741|    312|				log_dbg(cd, "Secondary LUKS2 header recovery failed.");
  ------------------
  |  |  186|    312|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    312|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  742|    624|		}
  743|  5.53k|	} else if (state_hdr1 != HDR_OK && state_hdr2 == HDR_OK) {
  ------------------
  |  Branch (743:13): [True: 5.53k, False: 0]
  |  Branch (743:37): [True: 5.53k, False: 0]
  ------------------
  744|  5.53k|		log_dbg(cd, "Primary LUKS2 header requires recovery.");
  ------------------
  |  |  186|  5.53k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  5.53k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  745|       |
  746|  5.53k|		if (do_blkprobe && (r = detect_device_signatures(cd, device_path(device)))) {
  ------------------
  |  Branch (746:7): [True: 5.53k, False: 0]
  |  Branch (746:22): [True: 1.84k, False: 3.68k]
  ------------------
  747|  1.84k|			log_err(cd, _("Device contains ambiguous signatures, cannot auto-recover LUKS2.\n"
  ------------------
  |  |  189|  1.84k|#define log_err(c, x...) crypt_logf(c, CRYPT_LOG_ERROR, x)
  |  |  ------------------
  |  |  |  |  176|  1.84k|#define CRYPT_LOG_ERROR  1
  |  |  ------------------
  ------------------
  748|  1.84k|				      "Please run \"cryptsetup repair\" for recovery."));
  749|  1.84k|			goto err;
  750|  1.84k|		}
  751|       |
  752|  3.68k|		if (do_recovery) {
  ------------------
  |  Branch (752:7): [True: 3.68k, False: 0]
  ------------------
  753|  3.68k|			memcpy(&hdr_disk1, &hdr_disk2, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  3.68k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  754|  3.68k|			r = crypt_random_get(cd, (char*)hdr_disk1.salt, sizeof(hdr_disk1.salt), CRYPT_RND_SALT);
  755|  3.68k|			if (r)
  ------------------
  |  Branch (755:8): [True: 0, False: 3.68k]
  ------------------
  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.68k|			else {
  758|  3.68k|				hdr_from_disk(&hdr_disk2, &hdr_disk1, hdr, 1);
  759|  3.68k|				r = hdr_write_disk(cd, device, hdr, json_area2, hdr->hdr_size - LUKS2_HDR_BIN_LEN, 0);
  ------------------
  |  |  143|  3.68k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  760|  3.68k|			}
  761|  3.68k|			if (r)
  ------------------
  |  Branch (761:8): [True: 1.84k, False: 1.84k]
  ------------------
  762|  1.84k|				log_dbg(cd, "Primary LUKS2 header recovery failed.");
  ------------------
  |  |  186|  1.84k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  1.84k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  763|  3.68k|		}
  764|  3.68k|	}
  765|       |
  766|  4.31k|	free(json_area1);
  767|  4.31k|	json_area1 = NULL;
  768|  4.31k|	free(json_area2);
  769|  4.31k|	json_area2 = NULL;
  770|       |
  771|       |	/* wrong lock for write mode during recovery attempt */
  772|  4.31k|	if (r == -EAGAIN)
  ------------------
  |  Branch (772:6): [True: 2.15k, False: 2.15k]
  ------------------
  773|  2.15k|		goto err;
  774|       |
  775|       |	/*
  776|       |	 * Even if status is failed, the second header includes salt.
  777|       |	 */
  778|  2.15k|	if (state_hdr1 == HDR_OK) {
  ------------------
  |  Branch (778:6): [True: 312, False: 1.84k]
  ------------------
  779|    312|		hdr_from_disk(&hdr_disk1, &hdr_disk2, hdr, 0);
  780|    312|		hdr->jobj = jobj_hdr1;
  781|    312|		json_object_put(jobj_hdr2);
  782|  1.84k|	} else if (state_hdr2 == HDR_OK) {
  ------------------
  |  Branch (782:13): [True: 1.84k, False: 0]
  ------------------
  783|  1.84k|		hdr_from_disk(&hdr_disk2, &hdr_disk1, hdr, 1);
  784|  1.84k|		hdr->jobj = jobj_hdr2;
  785|  1.84k|		json_object_put(jobj_hdr1);
  786|  1.84k|	}
  787|       |
  788|  2.15k|	if (json_area_end1 > json_area_end2)
  ------------------
  |  Branch (788:6): [True: 312, False: 1.84k]
  ------------------
  789|    312|		hdr->on_disk_json_end_offset = json_area_end1;
  790|  1.84k|	else
  791|  1.84k|		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.15k|	return 0;
  798|  6.08k|err:
  799|  6.08k|	log_dbg(cd, "LUKS2 header read failed (%d).", r);
  ------------------
  |  |  186|  6.08k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  6.08k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  800|       |
  801|  6.08k|	free(json_area1);
  802|  6.08k|	free(json_area2);
  803|  6.08k|	json_object_put(jobj_hdr1);
  804|  6.08k|	json_object_put(jobj_hdr2);
  805|       |	hdr->jobj = NULL;
  806|  6.08k|	return r;
  807|  4.31k|}
LUKS2_hdr_version_unlocked:
  810|  6.08k|{
  811|  6.08k|	struct {
  812|  6.08k|		char magic[LUKS2_MAGIC_L];
  813|  6.08k|		uint16_t version;
  814|  6.08k|	}  __attribute__ ((packed)) hdr;
  815|  6.08k|	int r = 0, devfd, flags = O_RDONLY;
  816|       |
  817|  6.08k|	assert(cd);
  ------------------
  |  Branch (817:2): [True: 0, False: 6.08k]
  |  Branch (817:2): [True: 6.08k, False: 0]
  ------------------
  818|  6.08k|	assert(device);
  ------------------
  |  Branch (818:2): [True: 0, False: 6.08k]
  |  Branch (818:2): [True: 6.08k, False: 0]
  ------------------
  819|       |
  820|  6.08k|	if (device_direct_io(device))
  ------------------
  |  Branch (820:6): [True: 6.08k, False: 0]
  ------------------
  821|  6.08k|		flags |= O_DIRECT;
  822|       |
  823|  6.08k|	devfd = device_open(cd, device, flags);
  824|  6.08k|	if (devfd != -1 && (read_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (824:6): [True: 6.08k, False: 0]
  |  Branch (824:21): [True: 6.08k, False: 0]
  ------------------
  825|  6.08k|	     device_alignment(device), &hdr, sizeof(hdr), 0) == sizeof(hdr)) &&
  826|  6.08k|	    !memcmp(hdr.magic, LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   18|  6.08k|#define LUKS2_MAGIC_1ST "LUKS\xba\xbe"
  ------------------
              	    !memcmp(hdr.magic, LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   20|  6.08k|#define LUKS2_MAGIC_L 6
  ------------------
  |  Branch (826:6): [True: 2.32k, False: 3.76k]
  ------------------
  827|  2.32k|		r = (int)be16_to_cpu(hdr.version);
  ------------------
  |  |  105|  2.32k|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  828|       |
  829|  6.08k|	return r;
  830|  6.08k|}
luks2_disk_metadata.c:hdr_write_disk:
  294|  4.31k|{
  295|  4.31k|	struct luks2_hdr_disk hdr_disk;
  296|  4.31k|	uint64_t offset = secondary ? hdr->hdr_size : 0;
  ------------------
  |  Branch (296:20): [True: 624, False: 3.68k]
  ------------------
  297|  4.31k|	size_t hdr_json_len;
  298|  4.31k|	int devfd, r;
  299|       |
  300|  4.31k|	hdr_json_len = hdr->hdr_size - LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  4.31k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  301|       |
  302|  4.31k|	assert(write_area_len <= hdr_json_len);
  ------------------
  |  Branch (302:2): [True: 0, False: 4.31k]
  |  Branch (302:2): [True: 4.31k, False: 0]
  ------------------
  303|       |
  304|  4.31k|	log_dbg(cd, "Trying to write LUKS2 header (%zu bytes) at offset %" PRIu64 ".",
  ------------------
  |  |  186|  4.31k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  4.31k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  305|  4.31k|		write_area_len, offset);
  306|       |
  307|  4.31k|	devfd = device_open_locked(cd, device, O_RDWR);
  308|  4.31k|	if (devfd < 0)
  ------------------
  |  Branch (308:6): [True: 2.15k, False: 2.15k]
  ------------------
  309|  2.15k|		return devfd == -1 ? -EINVAL : devfd;
  ------------------
  |  Branch (309:10): [True: 0, False: 2.15k]
  ------------------
  310|       |
  311|  2.15k|	hdr_to_disk(hdr, &hdr_disk, secondary, offset);
  312|       |
  313|       |	/*
  314|       |	 * Write header without checksum but with proper seqid.
  315|       |	 */
  316|  2.15k|	if (write_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (316:6): [True: 0, False: 2.15k]
  ------------------
  317|  2.15k|				  device_alignment(device), (char *)&hdr_disk,
  318|  2.15k|				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  2.15k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  2.15k|#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.15k|	if (write_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (325:6): [True: 0, False: 2.15k]
  ------------------
  326|  2.15k|				  device_alignment(device),
  327|  2.15k|				  CONST_CAST(char*)json_area, write_area_len,
  ------------------
  |  |   13|  2.15k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  328|  2.15k|				  LUKS2_HDR_BIN_LEN + offset) < (ssize_t)write_area_len) {
  ------------------
  |  |  143|  2.15k|#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.15k|	r = hdr_checksum_calculate(hdr_disk.checksum_alg, &hdr_disk,
  336|  2.15k|				   json_area, hdr_json_len);
  337|  2.15k|	if (r < 0) {
  ------------------
  |  Branch (337:6): [True: 0, False: 2.15k]
  ------------------
  338|      0|		return r;
  339|      0|	}
  340|  2.15k|	log_dbg_checksum(cd, hdr_disk.csum, hdr_disk.checksum_alg, "in-memory");
  341|       |
  342|  2.15k|	if (write_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (342:6): [True: 0, False: 2.15k]
  ------------------
  343|  2.15k|				  device_alignment(device), (char *)&hdr_disk,
  344|  2.15k|				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN)
  ------------------
  |  |  143|  2.15k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              				  LUKS2_HDR_BIN_LEN, offset) < (ssize_t)LUKS2_HDR_BIN_LEN)
  ------------------
  |  |  143|  2.15k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  345|      0|		r = -EIO;
  346|       |
  347|  2.15k|	device_sync(cd, device);
  348|  2.15k|	return r;
  349|  2.15k|}
luks2_disk_metadata.c:hdr_to_disk:
  152|  2.15k|{
  153|  2.15k|	assert(((char*)&(hdr_disk->_padding4096) - (char*)&(hdr_disk->magic)) == 512);
  ------------------
  |  Branch (153:2): [True: 0, False: 2.15k]
  |  Branch (153:2): [True: 2.15k, False: 0]
  ------------------
  154|       |
  155|  2.15k|	memset(hdr_disk, 0, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  2.15k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  156|       |
  157|  2.15k|	memcpy(&hdr_disk->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L);
  ------------------
  |  |   19|    312|#define LUKS2_MAGIC_2ND "SKUL\xba\xbe"
  ------------------
              	memcpy(&hdr_disk->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L);
  ------------------
  |  |   18|  3.99k|#define LUKS2_MAGIC_1ST "LUKS\xba\xbe"
  ------------------
              	memcpy(&hdr_disk->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L);
  ------------------
  |  |   20|  2.15k|#define LUKS2_MAGIC_L 6
  ------------------
  |  Branch (157:27): [True: 312, False: 1.84k]
  ------------------
  158|  2.15k|	hdr_disk->version     = cpu_to_be16(hdr->version);
  ------------------
  |  |   97|  2.15k|#define cpu_to_be16(x) ((uint16_t) htobe16(x))
  ------------------
  159|  2.15k|	hdr_disk->hdr_size    = cpu_to_be64(hdr->hdr_size);
  ------------------
  |  |   99|  2.15k|#define cpu_to_be64(x) ((uint64_t) htobe64(x))
  ------------------
  160|  2.15k|	hdr_disk->hdr_offset  = cpu_to_be64(offset);
  ------------------
  |  |   99|  2.15k|#define cpu_to_be64(x) ((uint64_t) htobe64(x))
  ------------------
  161|  2.15k|	hdr_disk->seqid       = cpu_to_be64(hdr->seqid);
  ------------------
  |  |   99|  2.15k|#define cpu_to_be64(x) ((uint64_t) htobe64(x))
  ------------------
  162|       |
  163|  2.15k|	memcpy(hdr_disk->label, hdr->label, MIN(strlen(hdr->label), LUKS2_LABEL_L));
  ------------------
  |  Branch (163:38): [True: 2.15k, False: 0]
  ------------------
  164|  2.15k|	hdr_disk->label[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  2.15k|#define LUKS2_LABEL_L 48
  ------------------
  165|  2.15k|	memcpy(hdr_disk->subsystem, hdr->subsystem, MIN(strlen(hdr->subsystem), LUKS2_LABEL_L));
  ------------------
  |  Branch (165:46): [True: 2.15k, False: 0]
  ------------------
  166|  2.15k|	hdr_disk->subsystem[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  2.15k|#define LUKS2_LABEL_L 48
  ------------------
  167|  2.15k|	memcpy(hdr_disk->checksum_alg, hdr->checksum_alg, MIN(strlen(hdr->checksum_alg), LUKS2_CHECKSUM_ALG_L));
  ------------------
  |  Branch (167:52): [True: 2.15k, False: 0]
  ------------------
  168|  2.15k|	hdr_disk->checksum_alg[LUKS2_CHECKSUM_ALG_L - 1] = '\0';
  ------------------
  |  |   24|  2.15k|#define LUKS2_CHECKSUM_ALG_L 32
  ------------------
  169|  2.15k|	memcpy(hdr_disk->uuid, hdr->uuid, MIN(strlen(hdr->uuid), LUKS2_UUID_L));
  ------------------
  |  Branch (169:36): [True: 2.15k, False: 0]
  ------------------
  170|  2.15k|	hdr_disk->uuid[LUKS2_UUID_L - 1] = '\0';
  ------------------
  |  |   21|  2.15k|#define LUKS2_UUID_L 40
  ------------------
  171|       |
  172|  2.15k|	memcpy(hdr_disk->salt, secondary ? hdr->salt2 : hdr->salt1, LUKS2_SALT_L);
  ------------------
  |  |   23|  2.15k|#define LUKS2_SALT_L 64
  ------------------
  |  Branch (172:25): [True: 312, False: 1.84k]
  ------------------
  173|  2.15k|}
luks2_disk_metadata.c:hdr_checksum_calculate:
   63|  9.83k|{
   64|  9.83k|	struct crypt_hash *hd = NULL;
   65|  9.83k|	int hash_size, r;
   66|       |
   67|  9.83k|	hash_size = crypt_hash_size(alg);
   68|  9.83k|	if (hash_size <= 0 || crypt_hash_init(&hd, alg))
  ------------------
  |  Branch (68:6): [True: 0, False: 9.83k]
  |  Branch (68:24): [True: 0, False: 9.83k]
  ------------------
   69|      0|		return -EINVAL;
   70|       |
   71|       |	/* Binary header, csum zeroed. */
   72|  9.83k|	r = crypt_hash_write(hd, (char*)hdr_disk, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  9.83k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
   73|       |
   74|       |	/* JSON area (including unused space) */
   75|  9.83k|	if (!r)
  ------------------
  |  Branch (75:6): [True: 9.83k, False: 0]
  ------------------
   76|  9.83k|		r = crypt_hash_write(hd, json_area, json_len);
   77|       |
   78|  9.83k|	if (!r)
  ------------------
  |  Branch (78:6): [True: 9.83k, False: 0]
  ------------------
   79|  9.83k|		r = crypt_hash_final(hd, (char*)hdr_disk->csum, (size_t)hash_size);
   80|       |
   81|  9.83k|	crypt_hash_destroy(hd);
   82|  9.83k|	return r;
   83|  9.83k|}
luks2_disk_metadata.c:log_dbg_checksum:
   45|  17.5k|{
   46|  17.5k|	char csum_txt[2*LUKS2_CHECKSUM_L+1];
   47|  17.5k|	int i;
   48|       |
   49|   800k|	for (i = 0; i < crypt_hash_size(csum_alg); i++)
  ------------------
  |  Branch (49:14): [True: 782k, False: 17.5k]
  ------------------
   50|   782k|		if (snprintf(&csum_txt[i*2], 3, "%02hhx", (const char)csum[i]) != 2)
  ------------------
  |  Branch (50:7): [True: 0, False: 782k]
  ------------------
   51|      0|			return;
   52|       |
   53|  17.5k|	log_dbg(cd, "Checksum:%s (%s)", &csum_txt[0], info);
  ------------------
  |  |  186|  17.5k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  17.5k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
   54|  17.5k|}
luks2_disk_metadata.c:hdr_read_disk:
  228|  37.4k|{
  229|  37.4k|	size_t hdr_json_size = 0;
  230|  37.4k|	int devfd, r;
  231|       |
  232|  37.4k|	log_dbg(cd, "Trying to read %s LUKS2 header at offset 0x%" PRIx64 ".",
  ------------------
  |  |  186|  74.8k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  37.4k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 29.1k, False: 8.23k]
  |  |  ------------------
  ------------------
  233|  37.4k|		secondary ? "secondary" : "primary", offset);
  234|       |
  235|  37.4k|	devfd = device_open_locked(cd, device, O_RDONLY);
  236|  37.4k|	if (devfd < 0)
  ------------------
  |  Branch (236:6): [True: 0, False: 37.4k]
  ------------------
  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|  37.4k|	if (read_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (243:6): [True: 0, False: 37.4k]
  ------------------
  244|  37.4k|				 device_alignment(device), hdr_disk,
  245|  37.4k|				 LUKS2_HDR_BIN_LEN, offset) != LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  37.4k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              				 LUKS2_HDR_BIN_LEN, offset) != LUKS2_HDR_BIN_LEN) {
  ------------------
  |  |  143|  37.4k|#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|  37.4k|	r = hdr_disk_sanity_check_pre(cd, hdr_disk, &hdr_json_size, secondary, offset);
  254|  37.4k|	if (r < 0)
  ------------------
  |  Branch (254:6): [True: 29.2k, False: 8.12k]
  ------------------
  255|  29.2k|		return r;
  256|       |
  257|       |	/*
  258|       |	 * Allocate and read JSON area. Always the whole area must be read.
  259|       |	 */
  260|  8.12k|	*json_area = malloc(hdr_json_size);
  261|  8.12k|	if (!*json_area)
  ------------------
  |  Branch (261:6): [True: 0, False: 8.12k]
  ------------------
  262|      0|		return -ENOMEM;
  263|       |
  264|  8.12k|	if (read_lseek_blockwise(devfd, device_block_size(cd, device),
  ------------------
  |  Branch (264:6): [True: 0, False: 8.12k]
  ------------------
  265|  8.12k|				 device_alignment(device), *json_area, hdr_json_size,
  266|  8.12k|				 offset + LUKS2_HDR_BIN_LEN) != (ssize_t)hdr_json_size) {
  ------------------
  |  |  143|  8.12k|#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|  8.12k|	if (hdr_checksum_check(cd, hdr_disk->checksum_alg, hdr_disk,
  ------------------
  |  Branch (275:6): [True: 1.12k, False: 7.00k]
  ------------------
  276|  8.12k|				*json_area, hdr_json_size)) {
  277|  1.12k|		log_dbg(cd, "LUKS2 header checksum error (offset %" PRIu64 ").", offset);
  ------------------
  |  |  186|  1.12k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  1.12k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  278|  1.12k|		free(*json_area);
  279|  1.12k|		*json_area = NULL;
  280|  1.12k|		r = -EINVAL;
  281|  1.12k|	}
  282|  8.12k|	memset(hdr_disk->csum, 0, LUKS2_CHECKSUM_L);
  ------------------
  |  |   25|  8.12k|#define LUKS2_CHECKSUM_L 64
  ------------------
  283|       |
  284|  8.12k|	return r;
  285|  8.12k|}
luks2_disk_metadata.c:hdr_disk_sanity_check_pre:
  182|  37.4k|{
  183|  37.4k|	uint64_t hdr_size;
  184|       |
  185|  37.4k|	if (memcmp(hdr->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   19|  29.1k|#define LUKS2_MAGIC_2ND "SKUL\xba\xbe"
  ------------------
              	if (memcmp(hdr->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   18|  45.6k|#define LUKS2_MAGIC_1ST "LUKS\xba\xbe"
  ------------------
              	if (memcmp(hdr->magic, secondary ? LUKS2_MAGIC_2ND : LUKS2_MAGIC_1ST, LUKS2_MAGIC_L))
  ------------------
  |  |   20|  37.4k|#define LUKS2_MAGIC_L 6
  ------------------
  |  Branch (185:6): [True: 28.8k, False: 8.53k]
  |  Branch (185:25): [True: 29.1k, False: 8.23k]
  ------------------
  186|  28.8k|		return -EINVAL;
  187|       |
  188|  8.53k|	if (be16_to_cpu(hdr->version) != 2) {
  ------------------
  |  |  105|  8.53k|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  |  Branch (188:6): [True: 75, False: 8.45k]
  ------------------
  189|     75|		log_dbg(cd, "Unsupported LUKS2 header version %u.", be16_to_cpu(hdr->version));
  ------------------
  |  |  186|     75|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     75|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  190|     75|		return -EINVAL;
  191|     75|	}
  192|       |
  193|  8.45k|	if (offset != be64_to_cpu(hdr->hdr_offset)) {
  ------------------
  |  |  107|  8.45k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  |  Branch (193:6): [True: 173, False: 8.28k]
  ------------------
  194|    173|		log_dbg(cd, "LUKS2 offset 0x%04" PRIx64 " on device differs to expected offset 0x%04" PRIx64 ".",
  ------------------
  |  |  186|    173|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    173|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  195|    173|			be64_to_cpu(hdr->hdr_offset), offset);
  196|    173|		return -EINVAL;
  197|    173|	}
  198|       |
  199|  8.28k|	hdr_size = be64_to_cpu(hdr->hdr_size);
  ------------------
  |  |  107|  8.28k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  200|       |
  201|  8.28k|	if (hdr_size < LUKS2_HDR_16K_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  141|  16.5k|#define LUKS2_HDR_16K_LEN 0x4000
  ------------------
              	if (hdr_size < LUKS2_HDR_16K_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  150|  8.26k|#define LUKS2_HDR_OFFSET_MAX 0x400000 /* 4 MiB */
  ------------------
  |  Branch (201:6): [True: 24, False: 8.26k]
  |  Branch (201:38): [True: 120, False: 8.14k]
  ------------------
  202|    144|		log_dbg(cd, "LUKS2 header has bogus size 0x%04" PRIx64 ".", hdr_size);
  ------------------
  |  |  186|    144|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    144|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  203|    144|		return -EINVAL;
  204|    144|	}
  205|       |
  206|  8.14k|	if (secondary && (offset != hdr_size)) {
  ------------------
  |  Branch (206:6): [True: 5.76k, False: 2.37k]
  |  Branch (206:19): [True: 12, False: 5.75k]
  ------------------
  207|     12|		log_dbg(cd, "LUKS2 offset 0x%04" PRIx64 " in secondary header does not match size 0x%04" PRIx64 ".",
  ------------------
  |  |  186|     12|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     12|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  208|     12|			offset, hdr_size);
  209|     12|		return -EINVAL;
  210|     12|	}
  211|       |
  212|       |	/* FIXME: sanity check checksum alg. */
  213|       |
  214|  8.12k|	log_dbg(cd, "LUKS2 header version %u of size %" PRIu64 " bytes, checksum %s.",
  ------------------
  |  |  186|  8.12k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  8.12k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  215|  8.12k|		be16_to_cpu(hdr->version), hdr_size,
  216|  8.12k|		hdr->checksum_alg);
  217|       |
  218|  8.12k|	*hdr_json_size = hdr_size - LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  8.12k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  219|  8.12k|	return 0;
  220|  8.14k|}
luks2_disk_metadata.c:hdr_checksum_check:
   91|  8.12k|{
   92|  8.12k|	struct luks2_hdr_disk hdr_tmp;
   93|  8.12k|	int hash_size, r;
   94|       |
   95|  8.12k|	hash_size = crypt_hash_size(alg);
   96|  8.12k|	if (hash_size <= 0)
  ------------------
  |  Branch (96:6): [True: 446, False: 7.68k]
  ------------------
   97|    446|		return -EINVAL;
   98|       |
   99|       |	/* Copy header and zero checksum. */
  100|  7.68k|	memcpy(&hdr_tmp, hdr_disk, LUKS2_HDR_BIN_LEN);
  ------------------
  |  |  143|  7.68k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  101|  7.68k|	memset(&hdr_tmp.csum, 0, sizeof(hdr_tmp.csum));
  102|       |
  103|  7.68k|	r = hdr_checksum_calculate(alg, &hdr_tmp, json_area, json_len);
  104|  7.68k|	if (r < 0)
  ------------------
  |  Branch (104:6): [True: 0, False: 7.68k]
  ------------------
  105|      0|		return r;
  106|       |
  107|  7.68k|	log_dbg_checksum(cd, hdr_disk->csum, alg, "on-disk");
  108|  7.68k|	log_dbg_checksum(cd, hdr_tmp.csum, alg, "in-memory");
  109|       |
  110|  7.68k|	if (memcmp(hdr_tmp.csum, hdr_disk->csum, (size_t)hash_size))
  ------------------
  |  Branch (110:6): [True: 676, False: 7.00k]
  ------------------
  111|    676|		return -EINVAL;
  112|       |
  113|  7.00k|	return 0;
  114|  7.68k|}
luks2_disk_metadata.c:parse_and_validate_json:
  554|  7.00k|{
  555|  7.00k|	int json_len, r;
  556|  7.00k|	json_object *jobj;
  557|  7.00k|	uint64_t max_length;
  558|       |
  559|  7.00k|	assert(json_area_end);
  ------------------
  |  Branch (559:2): [True: 0, False: 7.00k]
  |  Branch (559:2): [True: 7.00k, False: 0]
  ------------------
  560|       |
  561|  7.00k|	if (hdr_size <= LUKS2_HDR_BIN_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  143|  14.0k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
              	if (hdr_size <= LUKS2_HDR_BIN_LEN || hdr_size > LUKS2_HDR_OFFSET_MAX) {
  ------------------
  |  |  150|  7.00k|#define LUKS2_HDR_OFFSET_MAX 0x400000 /* 4 MiB */
  ------------------
  |  Branch (561:6): [True: 0, False: 7.00k]
  |  Branch (561:39): [True: 0, False: 7.00k]
  ------------------
  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|  7.00k|	max_length = hdr_size - LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  7.00k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  567|       |
  568|  7.00k|	jobj = parse_json_len(cd, json_area, max_length, &json_len);
  569|  7.00k|	if (!jobj)
  ------------------
  |  Branch (569:6): [True: 419, False: 6.58k]
  ------------------
  570|    419|		return NULL;
  571|       |
  572|       |	/* successful parse_json_len must not return offset <= 0 */
  573|  7.00k|	assert(json_len > 0);
  ------------------
  |  Branch (573:2): [True: 0, False: 6.58k]
  |  Branch (573:2): [True: 6.58k, False: 0]
  ------------------
  574|       |
  575|  6.58k|	r = validate_json_area(cd, json_area, json_len, max_length);
  576|  6.58k|	if (!r)
  ------------------
  |  Branch (576:6): [True: 6.46k, False: 122]
  ------------------
  577|  6.46k|		r = validate_luks2_json_object(cd, jobj, max_length);
  578|       |
  579|  6.58k|	if (r) {
  ------------------
  |  Branch (579:6): [True: 404, False: 6.18k]
  ------------------
  580|    404|		json_object_put(jobj);
  581|    404|		jobj = NULL;
  582|    404|	}
  583|       |
  584|  6.58k|	*json_area_end = json_len;
  585|       |
  586|  6.58k|	return jobj;
  587|  6.58k|}
luks2_disk_metadata.c:parse_json_len:
   16|  7.00k|{
   17|  7.00k|	json_object *jobj;
   18|  7.00k|	json_tokener *jtok;
   19|       |
   20|       |	 /* INT32_MAX is internal (json-c) json_tokener_parse_ex() limit */
   21|  7.00k|	if (!json_area || max_length > INT32_MAX)
  ------------------
  |  Branch (21:6): [True: 0, False: 7.00k]
  |  Branch (21:20): [True: 0, False: 7.00k]
  ------------------
   22|      0|		return NULL;
   23|       |
   24|  7.00k|	jtok = json_tokener_new();
   25|  7.00k|	if (!jtok) {
  ------------------
  |  Branch (25:6): [True: 0, False: 7.00k]
  ------------------
   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|  7.00k|	jobj = json_tokener_parse_ex(jtok, json_area, max_length);
   31|  7.00k|	if (!jobj)
  ------------------
  |  Branch (31:6): [True: 419, False: 6.58k]
  ------------------
   32|    419|		log_dbg(cd, "ERROR: Failed to parse json data (%d): %s",
  ------------------
  |  |  186|    419|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    419|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
   33|  7.00k|			json_tokener_get_error(jtok),
   34|  7.00k|			json_tokener_error_desc(json_tokener_get_error(jtok)));
   35|  6.58k|	else
   36|  6.58k|		*json_len = jtok->char_offset;
   37|       |
   38|  7.00k|	json_tokener_free(jtok);
   39|       |
   40|  7.00k|	return jobj;
   41|  7.00k|}
luks2_disk_metadata.c:validate_json_area:
  492|  6.58k|{
  493|  6.58k|	char c;
  494|       |
  495|       |	/* Enforce there are no needless opening bytes */
  496|  6.58k|	if (*json_area != '{') {
  ------------------
  |  Branch (496:6): [True: 109, False: 6.47k]
  ------------------
  497|    109|		log_dbg(cd, "ERROR: Opening character must be left curly bracket: '{'.");
  ------------------
  |  |  186|    109|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    109|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  498|    109|		return -EINVAL;
  499|    109|	}
  500|       |
  501|  6.47k|	if (json_len >= max_length) {
  ------------------
  |  Branch (501:6): [True: 0, False: 6.47k]
  ------------------
  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|   384M|	do {
  513|   384M|		c = *(json_area + json_len);
  514|   384M|		if (c != '\0') {
  ------------------
  |  Branch (514:7): [True: 13, False: 384M]
  ------------------
  515|     13|			log_dbg(cd, "ERROR: Forbidden ascii code 0x%02hhx found beyond json data string at offset %" PRIu64,
  ------------------
  |  |  186|     13|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     13|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  516|     13|				c, json_len);
  517|     13|			return -EINVAL;
  518|     13|		}
  519|   384M|	} while (++json_len < max_length);
  ------------------
  |  Branch (519:11): [True: 384M, False: 6.46k]
  ------------------
  520|       |
  521|  6.46k|	return 0;
  522|  6.47k|}
luks2_disk_metadata.c:validate_luks2_json_object:
  525|  6.46k|{
  526|  6.46k|	int r;
  527|       |
  528|       |	/* we require top level object to be of json_type_object */
  529|  6.46k|	r = !json_object_is_type(jobj_hdr, json_type_object);
  530|  6.46k|	if (r) {
  ------------------
  |  Branch (530:6): [True: 2, False: 6.46k]
  ------------------
  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.46k|	r = LUKS2_hdr_validate(cd, jobj_hdr, length);
  536|  6.46k|	if (r) {
  ------------------
  |  Branch (536:6): [True: 280, False: 6.18k]
  ------------------
  537|    280|		log_dbg(cd, "Repairing JSON metadata.");
  ------------------
  |  |  186|    280|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    280|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  538|       |		/* try to correct known glitches */
  539|    280|		LUKS2_hdr_repair(cd, jobj_hdr);
  540|       |
  541|       |		/* run validation again */
  542|    280|		r = LUKS2_hdr_validate(cd, jobj_hdr, length);
  543|    280|	}
  544|       |
  545|  6.46k|	if (r)
  ------------------
  |  Branch (545:6): [True: 280, False: 6.18k]
  ------------------
  546|    280|		log_dbg(cd, "ERROR: LUKS2 validation failed");
  ------------------
  |  |  186|    280|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    280|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  547|       |
  548|  6.46k|	return r;
  549|  6.46k|}
luks2_disk_metadata.c:detect_device_signatures:
  590|  6.18k|{
  591|  6.18k|	blk_probe_status prb_state;
  592|  6.18k|	int r;
  593|  6.18k|	struct blkid_handle *h;
  594|       |
  595|  6.18k|	if (!blk_supported()) {
  ------------------
  |  Branch (595:6): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|	if ((r = blk_init_by_path(&h, path))) {
  ------------------
  |  Branch (600:6): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|	blk_set_chains_for_fast_detection(h);
  607|       |
  608|       |	/* Filter out crypto_LUKS. we don't care now */
  609|  6.18k|	blk_superblocks_filter_luks(h);
  610|       |
  611|  6.18k|	prb_state = blk_safeprobe(h);
  612|       |
  613|  6.18k|	switch (prb_state) {
  ------------------
  |  Branch (613:10): [True: 6.18k, False: 0]
  ------------------
  614|      0|	case PRB_AMBIGUOUS:
  ------------------
  |  Branch (614:2): [True: 0, False: 6.18k]
  ------------------
  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|    504|	case PRB_FAIL:
  ------------------
  |  Branch (617:2): [True: 504, False: 5.67k]
  ------------------
  618|    504|		log_dbg(cd, "Blkid probe failed.");
  ------------------
  |  |  186|    504|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    504|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  619|    504|		r = -EINVAL;
  620|    504|		break;
  621|  1.36k|	case PRB_OK: /* crypto_LUKS type is filtered out */
  ------------------
  |  Branch (621:2): [True: 1.36k, False: 4.81k]
  ------------------
  622|  1.36k|		r = -EINVAL;
  623|       |
  624|  1.36k|		if (blk_is_partition(h))
  ------------------
  |  Branch (624:7): [True: 516, False: 853]
  ------------------
  625|    516|			log_dbg(cd, "Blkid probe detected partition type '%s'", blk_get_partition_type(h));
  ------------------
  |  |  186|    516|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    516|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  626|    853|		else if (blk_is_superblock(h))
  ------------------
  |  Branch (626:12): [True: 853, False: 0]
  ------------------
  627|    853|			log_dbg(cd, "blkid probe detected superblock type '%s'", blk_get_superblock_type(h));
  ------------------
  |  |  186|    853|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    853|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  628|  1.36k|		break;
  629|  4.31k|	case PRB_EMPTY:
  ------------------
  |  Branch (629:2): [True: 4.31k, False: 1.87k]
  ------------------
  630|  4.31k|		log_dbg(cd, "Blkid probe detected no foreign device signature.");
  ------------------
  |  |  186|  4.31k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  4.31k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  631|  6.18k|	}
  632|  6.18k|	blk_free(h);
  633|  6.18k|	return r;
  634|  6.18k|}
luks2_disk_metadata.c:hdr_from_disk:
  123|  6.46k|{
  124|  6.46k|	hdr->version  = be16_to_cpu(hdr_disk1->version);
  ------------------
  |  |  105|  6.46k|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  125|  6.46k|	hdr->hdr_size = be64_to_cpu(hdr_disk1->hdr_size);
  ------------------
  |  |  107|  6.46k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  126|  6.46k|	hdr->seqid    = be64_to_cpu(hdr_disk1->seqid);
  ------------------
  |  |  107|  6.46k|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  127|       |
  128|  6.46k|	memcpy(hdr->label, hdr_disk1->label, LUKS2_LABEL_L);
  ------------------
  |  |   22|  6.46k|#define LUKS2_LABEL_L 48
  ------------------
  129|  6.46k|	hdr->label[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  6.46k|#define LUKS2_LABEL_L 48
  ------------------
  130|  6.46k|	memcpy(hdr->subsystem, hdr_disk1->subsystem, LUKS2_LABEL_L);
  ------------------
  |  |   22|  6.46k|#define LUKS2_LABEL_L 48
  ------------------
  131|  6.46k|	hdr->subsystem[LUKS2_LABEL_L - 1] = '\0';
  ------------------
  |  |   22|  6.46k|#define LUKS2_LABEL_L 48
  ------------------
  132|  6.46k|	memcpy(hdr->checksum_alg, hdr_disk1->checksum_alg, LUKS2_CHECKSUM_ALG_L);
  ------------------
  |  |   24|  6.46k|#define LUKS2_CHECKSUM_ALG_L 32
  ------------------
  133|  6.46k|	hdr->checksum_alg[LUKS2_CHECKSUM_ALG_L - 1] = '\0';
  ------------------
  |  |   24|  6.46k|#define LUKS2_CHECKSUM_ALG_L 32
  ------------------
  134|  6.46k|	memcpy(hdr->uuid, hdr_disk1->uuid, LUKS2_UUID_L);
  ------------------
  |  |   21|  6.46k|#define LUKS2_UUID_L 40
  ------------------
  135|  6.46k|	hdr->uuid[LUKS2_UUID_L - 1] = '\0';
  ------------------
  |  |   21|  6.46k|#define LUKS2_UUID_L 40
  ------------------
  136|       |
  137|  6.46k|	if (secondary) {
  ------------------
  |  Branch (137:6): [True: 5.52k, False: 936]
  ------------------
  138|  5.52k|		memcpy(hdr->salt1, hdr_disk2->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|  5.52k|#define LUKS2_SALT_L 64
  ------------------
  139|  5.52k|		memcpy(hdr->salt2, hdr_disk1->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|  5.52k|#define LUKS2_SALT_L 64
  ------------------
  140|  5.52k|	} else {
  141|    936|		memcpy(hdr->salt1, hdr_disk1->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|    936|#define LUKS2_SALT_L 64
  ------------------
  142|    936|		memcpy(hdr->salt2, hdr_disk2->salt, LUKS2_SALT_L);
  ------------------
  |  |   23|    936|#define LUKS2_SALT_L 64
  ------------------
  143|    936|	}
  144|  6.46k|}

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

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

LUKS2_array_jobj:
   53|  1.88k|{
   54|  1.88k|	json_object *jobj1;
   55|  1.88k|	int i;
   56|       |
   57|  5.45k|	for (i = 0; i < (int) json_object_array_length(array); i++) {
  ------------------
  |  Branch (57:14): [True: 3.57k, False: 1.87k]
  ------------------
   58|  3.57k|		jobj1 = json_object_array_get_idx(array, i);
   59|  3.57k|		if (!strcmp(num, json_object_get_string(jobj1)))
  ------------------
  |  Branch (59:7): [True: 1, False: 3.57k]
  ------------------
   60|      1|			return jobj1;
   61|  3.57k|	}
   62|       |
   63|  1.87k|	return NULL;
   64|  1.88k|}
LUKS2_get_segment_jobj:
  170|  2.15k|{
  171|  2.15k|	if (!hdr)
  ------------------
  |  Branch (171:6): [True: 0, False: 2.15k]
  ------------------
  172|      0|		return NULL;
  173|       |
  174|  2.15k|	if (segment == CRYPT_DEFAULT_SEGMENT)
  ------------------
  |  |   44|  2.15k|#define CRYPT_DEFAULT_SEGMENT -2
  ------------------
  |  Branch (174:6): [True: 2.15k, False: 0]
  ------------------
  175|  2.15k|		segment = LUKS2_get_default_segment(hdr);
  176|       |
  177|  2.15k|	return json_segments_get_segment(json_get_segments_jobj(hdr->jobj), segment);
  178|  2.15k|}
LUKS2_get_segments_jobj:
  181|  4.30k|{
  182|  4.30k|	return hdr ? json_get_segments_jobj(hdr->jobj) : NULL;
  ------------------
  |  Branch (182:9): [True: 4.30k, False: 0]
  ------------------
  183|  4.30k|}
LUKS2_segments_count:
  186|  2.15k|{
  187|  2.15k|	if (!hdr)
  ------------------
  |  Branch (187:6): [True: 0, False: 2.15k]
  ------------------
  188|      0|		return -EINVAL;
  189|       |
  190|  2.15k|	return json_segments_count(LUKS2_get_segments_jobj(hdr));
  191|  2.15k|}
LUKS2_get_default_segment:
  194|  2.15k|{
  195|  2.15k|	int s = LUKS2_get_segment_id_by_flag(hdr, "backup-final");
  196|  2.15k|	if (s >= 0)
  ------------------
  |  Branch (196:6): [True: 1, False: 2.15k]
  ------------------
  197|      1|		return s;
  198|       |
  199|  2.15k|	if (LUKS2_segments_count(hdr) >= 1)
  ------------------
  |  Branch (199:6): [True: 2.15k, False: 0]
  ------------------
  200|  2.15k|		return 0;
  201|       |
  202|      0|	return -EINVAL;
  203|  2.15k|}
crypt_jobj_get_uint32:
  210|     12|{
  211|     12|	return json_object_get_int64(jobj);
  212|     12|}
crypt_jobj_get_uint64:
  232|  25.4k|{
  233|  25.4k|	uint64_t r;
  234|  25.4k|	json_str_to_uint64(jobj, &r);
  235|  25.4k|	return r;
  236|  25.4k|}
json_contains:
  270|  93.6k|{
  271|  93.6k|	json_object *sobj;
  272|       |
  273|  93.6k|	if (!json_object_object_get_ex(jobj, key, &sobj) ||
  ------------------
  |  Branch (273:6): [True: 228, False: 93.4k]
  ------------------
  274|  93.4k|	    !json_object_is_type(sobj, type)) {
  ------------------
  |  Branch (274:6): [True: 12, False: 93.3k]
  ------------------
  275|    240|		log_dbg(cd, "%s \"%s\" is missing \"%s\" (%s) specification.",
  ------------------
  |  |  186|    240|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    240|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  276|    240|			section, name, key, json_type_to_name(type));
  277|    240|		return NULL;
  278|    240|	}
  279|       |
  280|  93.3k|	return sobj;
  281|  93.6k|}
json_contains_string:
  285|  33.8k|{
  286|  33.8k|	json_object *sobj = json_contains(cd, jobj, name, section, key, json_type_string);
  287|       |
  288|  33.8k|	if (!sobj)
  ------------------
  |  Branch (288:6): [True: 48, False: 33.8k]
  ------------------
  289|     48|		return NULL;
  290|       |
  291|  33.8k|	if (strlen(json_object_get_string(sobj)) < 1)
  ------------------
  |  Branch (291:6): [True: 18, False: 33.7k]
  ------------------
  292|     18|		return NULL;
  293|       |
  294|  33.7k|	return sobj;
  295|  33.8k|}
validate_json_uint32:
  298|    136|{
  299|    136|	int64_t tmp;
  300|       |
  301|    136|	errno = 0;
  302|    136|	tmp = json_object_get_int64(jobj);
  303|       |
  304|    136|	return (errno || tmp < 0 || tmp > UINT32_MAX) ? false : true;
  ------------------
  |  Branch (304:10): [True: 6, False: 130]
  |  Branch (304:19): [True: 16, False: 114]
  |  Branch (304:30): [True: 10, False: 104]
  ------------------
  305|    136|}
LUKS2_token_validate:
  439|     30|{
  440|     30|	json_object *jarr, *jobj_keyslots;
  441|       |
  442|       |	/* keyslots are not yet validated, but we need to know token doesn't reference missing keyslot */
  443|     30|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (443:6): [True: 2, False: 28]
  ------------------
  444|      2|		return 1;
  445|       |
  446|     28|	if (!json_contains_string(cd, jobj_token, key, "Token", "type"))
  ------------------
  |  Branch (446:6): [True: 6, False: 22]
  ------------------
  447|      6|		return 1;
  448|       |
  449|     22|	jarr = json_contains(cd, jobj_token, key, "Token", "keyslots", json_type_array);
  450|     22|	if (!jarr)
  ------------------
  |  Branch (450:6): [True: 4, False: 18]
  ------------------
  451|      4|		return 1;
  452|       |
  453|     18|	if (!validate_keyslots_array(cd, jarr, jobj_keyslots))
  ------------------
  |  Branch (453:6): [True: 10, False: 8]
  ------------------
  454|     10|		return 1;
  455|       |
  456|      8|	return 0;
  457|     18|}
LUKS2_hdr_validate:
 1105|  6.74k|{
 1106|  6.74k|	struct {
 1107|  6.74k|		int (*validate)(struct crypt_device *, json_object *);
 1108|  6.74k|	} checks[] = {
 1109|  6.74k|		{ hdr_validate_requirements },
 1110|  6.74k|		{ hdr_validate_tokens   },
 1111|  6.74k|		{ hdr_validate_digests  },
 1112|  6.74k|		{ hdr_validate_segments },
 1113|  6.74k|		{ hdr_validate_keyslots },
 1114|  6.74k|		{ hdr_validate_config   },
 1115|  6.74k|		{ hdr_validate_areas    },
 1116|  6.74k|		{ NULL }
 1117|  6.74k|	};
 1118|  6.74k|	int i;
 1119|       |
 1120|  6.74k|	if (!hdr_jobj)
  ------------------
  |  Branch (1120:6): [True: 0, False: 6.74k]
  ------------------
 1121|      0|		return 1;
 1122|       |
 1123|  51.5k|	for (i = 0; checks[i].validate; i++)
  ------------------
  |  Branch (1123:14): [True: 45.3k, False: 6.21k]
  ------------------
 1124|  45.3k|		if (checks[i].validate && checks[i].validate(cd, hdr_jobj))
  ------------------
  |  Branch (1124:7): [True: 45.3k, False: 0]
  |  Branch (1124:29): [True: 530, False: 44.7k]
  ------------------
 1125|    530|			return 1;
 1126|       |
 1127|  6.21k|	if (hdr_validate_json_size(cd, hdr_jobj, json_size))
  ------------------
  |  Branch (1127:6): [True: 30, False: 6.18k]
  ------------------
 1128|     30|		return 1;
 1129|       |
 1130|       |	/* validate keyslot implementations */
 1131|  6.18k|	if (LUKS2_keyslots_validate(cd, hdr_jobj))
  ------------------
  |  Branch (1131:6): [True: 0, False: 6.18k]
  ------------------
 1132|      0|		return 1;
 1133|       |
 1134|  6.18k|	return 0;
 1135|  6.18k|}
LUKS2_hdr_read:
 1166|  6.08k|{
 1167|  6.08k|	int r;
 1168|       |
 1169|  6.08k|	r = device_read_lock(cd, crypt_metadata_device(cd));
 1170|  6.08k|	if (r) {
  ------------------
  |  Branch (1170:6): [True: 0, False: 6.08k]
  ------------------
 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|  6.08k|	r = LUKS2_disk_hdr_read(cd, hdr, crypt_metadata_device(cd), 1, !repair);
 1177|  6.08k|	if (r == -EAGAIN) {
  ------------------
  |  Branch (1177:6): [True: 2.15k, False: 3.92k]
  ------------------
 1178|       |		/* unlikely: auto-recovery is required and failed due to read lock being held */
 1179|  2.15k|		device_read_unlock(cd, crypt_metadata_device(cd));
 1180|       |
 1181|       |		/* Do not use LUKS2_device_write lock. Recovery. */
 1182|  2.15k|		r = device_write_lock(cd, crypt_metadata_device(cd));
 1183|  2.15k|		if (r < 0) {
  ------------------
  |  Branch (1183:7): [True: 0, False: 2.15k]
  ------------------
 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.15k|		r = LUKS2_disk_hdr_read(cd, hdr, crypt_metadata_device(cd), 1, !repair);
 1190|       |
 1191|  2.15k|		device_write_unlock(cd, crypt_metadata_device(cd));
 1192|  2.15k|	} else
 1193|  3.92k|		device_read_unlock(cd, crypt_metadata_device(cd));
 1194|       |
 1195|  6.08k|	if (!r && (r = hdr_update_copy_for_rollback(cd, hdr)))
  ------------------
  |  Branch (1195:6): [True: 2.15k, False: 3.92k]
  |  Branch (1195:12): [True: 0, False: 2.15k]
  ------------------
 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|  6.08k|	return r;
 1199|  6.08k|}
LUKS2_hdr_free:
 1293|  2.15k|{
 1294|  2.15k|	json_object **jobj;
 1295|       |
 1296|  2.15k|	assert(hdr);
  ------------------
  |  Branch (1296:2): [True: 0, False: 2.15k]
  |  Branch (1296:2): [True: 2.15k, False: 0]
  ------------------
 1297|       |
 1298|  2.15k|	jobj = (json_object **)&hdr->jobj;
 1299|       |
 1300|  2.15k|	if (!hdr_json_free(jobj))
  ------------------
  |  Branch (1300:6): [True: 0, False: 2.15k]
  ------------------
 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.15k|	jobj = (json_object **)&hdr->jobj_rollback;
 1304|       |
 1305|  2.15k|	if (!hdr_json_free(jobj))
  ------------------
  |  Branch (1305:6): [True: 0, False: 2.15k]
  ------------------
 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.15k|}
LUKS2_hdr_and_areas_size_jobj:
 1327|  6.20k|{
 1328|  6.20k|	return 2 * LUKS2_metadata_size_jobj(jobj) + LUKS2_keyslots_size_jobj(jobj);
 1329|  6.20k|}
LUKS2_config_get_requirements:
 1777|  12.5k|{
 1778|  12.5k|	json_object *jobj_mandatory, *jobj;
 1779|  12.5k|	int i, len;
 1780|  12.5k|	const struct requirement_flag *req;
 1781|       |
 1782|  12.5k|	assert(hdr);
  ------------------
  |  Branch (1782:2): [True: 0, False: 12.5k]
  |  Branch (1782:2): [True: 12.5k, False: 0]
  ------------------
 1783|  12.5k|	assert(reqs);
  ------------------
  |  Branch (1783:2): [True: 0, False: 12.5k]
  |  Branch (1783:2): [True: 12.5k, False: 0]
  ------------------
 1784|       |
 1785|  12.5k|	*reqs = 0;
 1786|       |
 1787|  12.5k|	jobj_mandatory = mandatory_requirements_jobj(hdr);
 1788|  12.5k|	if (!jobj_mandatory)
  ------------------
  |  Branch (1788:6): [True: 12.4k, False: 124]
  ------------------
 1789|  12.4k|		return;
 1790|       |
 1791|    124|	len = (int) json_object_array_length(jobj_mandatory);
 1792|    124|	if (len <= 0)
  ------------------
  |  Branch (1792:6): [True: 0, False: 124]
  ------------------
 1793|      0|		return;
 1794|       |
 1795|    124|	log_dbg(cd, "LUKS2 requirements detected:");
  ------------------
  |  |  186|    124|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    124|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1796|       |
 1797|    424|	for (i = 0; i < len; i++) {
  ------------------
  |  Branch (1797:14): [True: 300, False: 124]
  ------------------
 1798|    300|		jobj = json_object_array_get_idx(jobj_mandatory, i);
 1799|    300|		req = get_requirement_by_name(json_object_get_string(jobj));
 1800|    300|		log_dbg(cd, "%s - %sknown", json_object_get_string(jobj),
  ------------------
  |  |  186|    600|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|    300|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 198, False: 102]
  |  |  ------------------
  ------------------
 1801|    300|				        reqs_unknown(req->flag) ? "un" : "");
 1802|    300|		*reqs |= req->flag;
 1803|    300|	}
 1804|    124|}
LUKS2_get_sector_size:
 2510|  2.15k|{
 2511|  2.15k|	return json_segment_get_sector_size(LUKS2_get_segment_jobj(hdr, CRYPT_DEFAULT_SEGMENT));
  ------------------
  |  |   44|  2.15k|#define CRYPT_DEFAULT_SEGMENT -2
  ------------------
 2512|  2.15k|}
LUKS2_hdr_repair:
 3082|    280|{
 3083|    280|	json_object *jobj_keyslots;
 3084|       |
 3085|    280|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (3085:6): [True: 3, False: 277]
  ------------------
 3086|      3|		return;
 3087|    277|	if (!json_object_is_type(jobj_keyslots, json_type_object))
  ------------------
  |  Branch (3087:6): [True: 0, False: 277]
  ------------------
 3088|      0|		return;
 3089|       |
 3090|    277|	LUKS2_keyslots_repair(cd, jobj_keyslots);
 3091|    277|}
json_object_copy:
 3133|  2.15k|{
 3134|  2.15k|	if (!jobj_src || !jobj_dst || *jobj_dst)
  ------------------
  |  Branch (3134:6): [True: 0, False: 2.15k]
  |  Branch (3134:19): [True: 0, False: 2.15k]
  |  Branch (3134:32): [True: 0, False: 2.15k]
  ------------------
 3135|      0|		return -1;
 3136|       |
 3137|  2.15k|#if HAVE_DECL_JSON_OBJECT_DEEP_COPY
 3138|  2.15k|	return json_object_deep_copy(jobj_src, jobj_dst, NULL);
 3139|       |#else
 3140|       |	*jobj_dst = json_tokener_parse(json_object_get_string(jobj_src));
 3141|       |	return *jobj_dst ? 0 : -1;
 3142|       |#endif
 3143|  2.15k|}
luks2_json_metadata.c:json_get_segments_jobj:
  160|  12.7k|{
  161|  12.7k|	json_object *jobj_segments;
  162|       |
  163|  12.7k|	if (!hdr_jobj || !json_object_object_get_ex(hdr_jobj, "segments", &jobj_segments))
  ------------------
  |  Branch (163:6): [True: 0, False: 12.7k]
  |  Branch (163:19): [True: 0, False: 12.7k]
  ------------------
  164|      0|		return NULL;
  165|       |
  166|  12.7k|	return jobj_segments;
  167|  12.7k|}
luks2_json_metadata.c:json_str_to_uint64:
  216|  70.6k|{
  217|  70.6k|	char *endptr;
  218|  70.6k|	unsigned long long tmp;
  219|       |
  220|  70.6k|	errno = 0;
  221|  70.6k|	tmp = strtoull(json_object_get_string(jobj), &endptr, 10);
  222|  70.6k|	if (*endptr || errno) {
  ------------------
  |  Branch (222:6): [True: 12, False: 70.6k]
  |  Branch (222:17): [True: 16, False: 70.6k]
  ------------------
  223|     28|		*value = 0;
  224|     28|		return false;
  225|     28|	}
  226|       |
  227|  70.6k|	*value = tmp;
  228|       |	return true;
  229|  70.6k|}
luks2_json_metadata.c:validate_keyslots_array:
  308|     38|{
  309|     38|	json_object *jobj;
  310|     38|	int i = 0, length = (int) json_object_array_length(jarr);
  311|       |
  312|     86|	while (i < length) {
  ------------------
  |  Branch (312:9): [True: 62, False: 24]
  ------------------
  313|     62|		jobj = json_object_array_get_idx(jarr, i);
  314|     62|		if (!json_object_is_type(jobj, json_type_string)) {
  ------------------
  |  Branch (314:7): [True: 0, False: 62]
  ------------------
  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|     62|		if (!json_contains(cd, jobj_keys, "", "Keyslots section",
  ------------------
  |  Branch (319:7): [True: 14, False: 48]
  ------------------
  320|     62|				   json_object_get_string(jobj), json_type_object))
  321|     14|			return false;
  322|       |
  323|     48|		i++;
  324|     48|	}
  325|       |
  326|     24|	return true;
  327|     38|}
luks2_json_metadata.c:hdr_validate_json_size:
  460|  6.21k|{
  461|  6.21k|	json_object *jobj, *jobj1;
  462|  6.21k|	const char *json;
  463|  6.21k|	uint64_t json_area_size, json_size;
  464|       |
  465|  6.21k|	json_object_object_get_ex(hdr_jobj, "config", &jobj);
  466|  6.21k|	json_object_object_get_ex(jobj, "json_size", &jobj1);
  467|       |
  468|  6.21k|	json = crypt_jobj_to_string_on_disk(hdr_jobj);
  469|  6.21k|	if (!json)
  ------------------
  |  Branch (469:6): [True: 0, False: 6.21k]
  ------------------
  470|      0|		return 1;
  471|       |
  472|  6.21k|	json_area_size = crypt_jobj_get_uint64(jobj1);
  473|  6.21k|	json_size = (uint64_t)strlen(json);
  474|       |
  475|  6.21k|	if (hdr_json_size != json_area_size) {
  ------------------
  |  Branch (475:6): [True: 22, False: 6.19k]
  ------------------
  476|     22|		log_dbg(cd, "JSON area size does not match value in binary header.");
  ------------------
  |  |  186|     22|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     22|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  477|     22|		return 1;
  478|     22|	}
  479|       |
  480|  6.19k|	if (json_size > json_area_size) {
  ------------------
  |  Branch (480:6): [True: 8, False: 6.18k]
  ------------------
  481|      8|		log_dbg(cd, "JSON does not fit in the designated area.");
  ------------------
  |  |  186|      8|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      8|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  482|      8|		return 1;
  483|      8|	}
  484|       |
  485|  6.18k|	return 0;
  486|  6.19k|}
luks2_json_metadata.c:LUKS2_metadata_size_jobj:
  857|  12.4k|{
  858|  12.4k|	json_object *jobj1, *jobj2;
  859|  12.4k|	uint64_t json_size;
  860|       |
  861|  12.4k|	json_object_object_get_ex(jobj, "config", &jobj1);
  862|  12.4k|	json_object_object_get_ex(jobj1, "json_size", &jobj2);
  863|  12.4k|	json_str_to_uint64(jobj2, &json_size);
  864|       |
  865|  12.4k|	return json_size + LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  12.4k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  866|  12.4k|}
luks2_json_metadata.c:hdr_validate_requirements:
 1066|  6.74k|{
 1067|  6.74k|	int i;
 1068|  6.74k|	json_object *jobj_config, *jobj, *jobj1;
 1069|  6.74k|	unsigned online_reencrypt_flag = 0;
 1070|       |
 1071|  6.74k|	if (!(jobj_config = json_contains(cd, hdr_jobj, "", "JSON area", "config", json_type_object)))
  ------------------
  |  Branch (1071:6): [True: 124, False: 6.62k]
  ------------------
 1072|    124|		return 1;
 1073|       |
 1074|       |	/* Requirements object is optional */
 1075|  6.62k|	if (json_object_object_get_ex(jobj_config, "requirements", &jobj)) {
  ------------------
  |  Branch (1075:6): [True: 252, False: 6.36k]
  ------------------
 1076|    252|		if (!json_contains(cd, jobj_config, "section", "Config", "requirements", json_type_object))
  ------------------
  |  Branch (1076:7): [True: 2, False: 250]
  ------------------
 1077|      2|			return 1;
 1078|       |
 1079|       |		/* Mandatory array is optional */
 1080|    250|		if (json_object_object_get_ex(jobj, "mandatory", &jobj1)) {
  ------------------
  |  Branch (1080:7): [True: 183, False: 67]
  ------------------
 1081|    183|			if (!json_contains(cd, jobj, "section", "Requirements", "mandatory", json_type_array))
  ------------------
  |  Branch (1081:8): [True: 2, False: 181]
  ------------------
 1082|      2|				return 1;
 1083|       |
 1084|       |			/* All array members must be strings */
 1085|  2.91k|			for (i = 0; i < (int) json_object_array_length(jobj1); i++) {
  ------------------
  |  Branch (1085:16): [True: 2.73k, False: 181]
  ------------------
 1086|  2.73k|				if (!json_object_is_type(json_object_array_get_idx(jobj1, i), json_type_string))
  ------------------
  |  Branch (1086:9): [True: 0, False: 2.73k]
  ------------------
 1087|      0|					return 1;
 1088|       |
 1089|  2.73k|				if (reencrypt_candidate_flag(json_object_get_string(json_object_array_get_idx(jobj1, i))))
  ------------------
  |  Branch (1089:9): [True: 612, False: 2.12k]
  ------------------
 1090|    612|					online_reencrypt_flag++;
 1091|       |
 1092|  2.73k|			}
 1093|    181|		}
 1094|    250|	}
 1095|       |
 1096|  6.61k|	if (online_reencrypt_flag > 1) {
  ------------------
  |  Branch (1096:6): [True: 20, False: 6.59k]
  ------------------
 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.59k|	return 0;
 1102|  6.61k|}
luks2_json_metadata.c:hdr_validate_tokens:
  511|  6.59k|{
  512|  6.59k|	json_object *jobj;
  513|       |
  514|  6.59k|	if (!(jobj = json_contains(cd, hdr_jobj, "", "JSON area", "tokens", json_type_object)))
  ------------------
  |  Branch (514:6): [True: 4, False: 6.59k]
  ------------------
  515|      4|		return 1;
  516|       |
  517|  6.59k|	json_object_object_foreach(jobj, key, val) {
  ------------------
  |  |  494|  6.59k|	char *key = NULL;                                                        \
  |  |  495|  6.59k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.59k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.59k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.60k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 34, False: 6.56k]
  |  |  ------------------
  |  |  499|  6.60k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 34, False: 6.56k]
  |  |  ------------------
  |  |  500|  6.60k|		     {                                                           \
  |  |  501|     34|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     34|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     34|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     34|		     };                                                          \
  |  |  505|  6.60k|		     entry##key;                                                 \
  |  |  506|  6.60k|	     });                                                                 \
  |  |  507|  6.59k|	     entry##key = entry_next##key)
  ------------------
  518|     34|		if (!numbered(cd, "Token", key))
  ------------------
  |  Branch (518:7): [True: 4, False: 30]
  ------------------
  519|      4|			return 1;
  520|     30|		if (LUKS2_token_validate(cd, hdr_jobj, val, key))
  ------------------
  |  Branch (520:7): [True: 22, False: 8]
  ------------------
  521|     22|			return 1;
  522|     30|	}
  523|       |
  524|  6.56k|	return 0;
  525|  6.59k|}
luks2_json_metadata.c:numbered:
  257|  21.1k|{
  258|  21.1k|	int i;
  259|       |
  260|   100k|	for (i = 0; key[i]; i++)
  ------------------
  |  Branch (260:14): [True: 79.6k, False: 21.0k]
  ------------------
  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|  21.0k|	return true;
  266|  21.1k|}
luks2_json_metadata.c:hdr_validate_digests:
  943|  6.56k|{
  944|  6.56k|	json_object *jarr_keys, *jarr_segs, *jobj, *jobj_keyslots, *jobj_segments;
  945|       |
  946|  6.56k|	if (!(jobj = json_contains(cd, hdr_jobj, "", "JSON area", "digests", json_type_object)))
  ------------------
  |  Branch (946:6): [True: 8, False: 6.55k]
  ------------------
  947|      8|		return 1;
  948|       |
  949|       |	/* keyslots are not yet validated, but we need to know digest doesn't reference missing keyslot */
  950|  6.55k|	if (!(jobj_keyslots = json_contains(cd, hdr_jobj, "", "JSON area", "keyslots", json_type_object)))
  ------------------
  |  Branch (950:6): [True: 2, False: 6.55k]
  ------------------
  951|      2|		return 1;
  952|       |
  953|       |	/* segments are not yet validated, but we need to know digest doesn't reference missing segment */
  954|  6.55k|	if (!(jobj_segments = json_contains(cd, hdr_jobj, "", "JSON area", "segments", json_type_object)))
  ------------------
  |  Branch (954:6): [True: 4, False: 6.55k]
  ------------------
  955|      4|		return 1;
  956|       |
  957|  6.55k|	json_object_object_foreach(jobj, key, val) {
  ------------------
  |  |  494|  6.55k|	char *key = NULL;                                                        \
  |  |  495|  6.55k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.55k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.55k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.56k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 38, False: 6.52k]
  |  |  ------------------
  |  |  499|  6.56k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 38, False: 6.52k]
  |  |  ------------------
  |  |  500|  6.56k|		     {                                                           \
  |  |  501|     38|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     38|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     38|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     38|		     };                                                          \
  |  |  505|  6.56k|		     entry##key;                                                 \
  |  |  506|  6.56k|	     });                                                                 \
  |  |  507|  6.55k|	     entry##key = entry_next##key)
  ------------------
  958|     38|		if (!numbered(cd, "Digest", key))
  ------------------
  |  Branch (958:7): [True: 6, False: 32]
  ------------------
  959|      6|			return 1;
  960|       |
  961|     32|		if (!json_contains_string(cd, val, key, "Digest", "type") ||
  ------------------
  |  Branch (961:7): [True: 2, False: 30]
  ------------------
  962|     30|		    !(jarr_keys = json_contains(cd, val, key, "Digest", "keyslots", json_type_array)) ||
  ------------------
  |  Branch (962:7): [True: 6, False: 24]
  ------------------
  963|     24|		    !(jarr_segs = json_contains(cd, val, key, "Digest", "segments", json_type_array)))
  ------------------
  |  Branch (963:7): [True: 4, False: 20]
  ------------------
  964|     12|			return 1;
  965|       |
  966|     20|		if (!validate_keyslots_array(cd, jarr_keys, jobj_keyslots))
  ------------------
  |  Branch (966:7): [True: 4, False: 16]
  ------------------
  967|      4|			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.52k|	return 0;
  973|  6.55k|}
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.52k|{
  698|  6.52k|	json_object *jobj_segments, *jobj_digests, *jobj_offset, *jobj_size, *jobj_type, *jobj_flags, *jobj;
  699|  6.52k|	uint64_t offset, size, opal_segment_size;
  700|  6.52k|	int i, r, count, first_backup = -1;
  701|  6.52k|	struct interval *intervals = NULL;
  702|       |
  703|  6.52k|	if (!(jobj_segments = json_contains(cd, hdr_jobj, "", "JSON area", "segments", json_type_object)))
  ------------------
  |  Branch (703:6): [True: 0, False: 6.52k]
  ------------------
  704|      0|		return 1;
  705|       |
  706|  6.52k|	count = json_object_object_length(jobj_segments);
  707|  6.52k|	if (count < 1) {
  ------------------
  |  Branch (707:6): [True: 6, False: 6.52k]
  ------------------
  708|      6|		log_dbg(cd, "Empty segments section.");
  ------------------
  |  |  186|      6|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      6|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  709|      6|		return 1;
  710|      6|	}
  711|       |
  712|       |	/* digests should already be validated */
  713|  6.52k|	if (!json_object_object_get_ex(hdr_jobj, "digests", &jobj_digests))
  ------------------
  |  Branch (713:6): [True: 0, False: 6.52k]
  ------------------
  714|      0|		return 1;
  715|       |
  716|  6.97k|	json_object_object_foreach(jobj_segments, key, val) {
  ------------------
  |  |  494|  6.52k|	char *key = NULL;                                                        \
  |  |  495|  6.52k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.52k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.52k|	                     *entry_next##key = NULL;                            \
  |  |  498|  13.3k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 6.97k, False: 6.41k]
  |  |  ------------------
  |  |  499|  13.3k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 6.97k, False: 6.41k]
  |  |  ------------------
  |  |  500|  13.3k|		     {                                                           \
  |  |  501|  6.97k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  6.97k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  6.97k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  6.97k|		     };                                                          \
  |  |  505|  13.3k|		     entry##key;                                                 \
  |  |  506|  13.3k|	     });                                                                 \
  |  |  507|  6.86k|	     entry##key = entry_next##key)
  ------------------
  717|  6.97k|		if (!numbered(cd, "Segment", key))
  ------------------
  |  Branch (717:7): [True: 8, False: 6.97k]
  ------------------
  718|      8|			return 1;
  719|       |
  720|       |		/* those fields are mandatory for all segment types */
  721|  6.97k|		if (!(jobj_type =   json_contains_string(cd, val, key, "Segment", "type")) ||
  ------------------
  |  Branch (721:7): [True: 10, False: 6.96k]
  ------------------
  722|  6.96k|		    !(jobj_offset = json_contains_string(cd, val, key, "Segment", "offset")) ||
  ------------------
  |  Branch (722:7): [True: 10, False: 6.95k]
  ------------------
  723|  6.95k|		    !(jobj_size =   json_contains_string(cd, val, key, "Segment", "size")))
  ------------------
  |  Branch (723:7): [True: 4, False: 6.94k]
  ------------------
  724|     24|			return 1;
  725|       |
  726|  6.94k|		if (!numbered(cd, "offset", json_object_get_string(jobj_offset)))
  ------------------
  |  Branch (726:7): [True: 4, False: 6.94k]
  ------------------
  727|      4|			return 1;
  728|       |
  729|  6.94k|		if (!json_str_to_uint64(jobj_offset, &offset)) {
  ------------------
  |  Branch (729:7): [True: 2, False: 6.94k]
  ------------------
  730|      2|			log_dbg(cd, "Illegal segment offset value.");
  ------------------
  |  |  186|      2|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      2|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  731|      2|			return 1;
  732|      2|		}
  733|       |
  734|       |		/* size "dynamic" means whole device starting at 'offset' */
  735|  6.94k|		if (strcmp(json_object_get_string(jobj_size), "dynamic")) {
  ------------------
  |  Branch (735:7): [True: 6.93k, False: 2]
  ------------------
  736|  6.93k|			if (!numbered(cd, "size", json_object_get_string(jobj_size)))
  ------------------
  |  Branch (736:8): [True: 10, False: 6.92k]
  ------------------
  737|     10|				return 1;
  738|  6.92k|			if (!json_str_to_uint64(jobj_size, &size) || !size) {
  ------------------
  |  Branch (738:8): [True: 6, False: 6.92k]
  |  Branch (738:49): [True: 2, False: 6.92k]
  ------------------
  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.92k|		} else
  743|      2|			size = 0;
  744|       |
  745|       |		/* all device-mapper devices are aligned to 512 sector size */
  746|  6.92k|		if (MISALIGNED_512(offset)) {
  ------------------
  |  |   45|  6.92k|#define MISALIGNED_512(a)	MISALIGNED((a), 1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   43|  6.92k|#define MISALIGNED(a, b)	((a) & ((b) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:26): [True: 4, False: 6.91k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  747|      4|			log_dbg(cd, "Offset field has to be aligned to 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
  |  |  ------------------
  ------------------
  748|      4|			return 1;
  749|      4|		}
  750|  6.91k|		if (MISALIGNED_512(size)) {
  ------------------
  |  |   45|  6.91k|#define MISALIGNED_512(a)	MISALIGNED((a), 1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   43|  6.91k|#define MISALIGNED(a, b)	((a) & ((b) - 1))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:26): [True: 10, False: 6.90k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  751|     10|			log_dbg(cd, "Size field has to be aligned to sector size: %" PRIu32, SECTOR_SIZE);
  ------------------
  |  |  186|     10|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     10|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  752|     10|			return 1;
  753|     10|		}
  754|       |
  755|       |		/* flags array is optional and must contain strings */
  756|  6.90k|		if (json_object_object_get_ex(val, "flags", NULL)) {
  ------------------
  |  Branch (756:7): [True: 6.10k, False: 800]
  ------------------
  757|  6.10k|			if (!(jobj_flags = json_contains(cd, val, key, "Segment", "flags", json_type_array)))
  ------------------
  |  Branch (757:8): [True: 0, False: 6.10k]
  ------------------
  758|      0|				return 1;
  759|  18.7k|			for (i = 0; i < (int) json_object_array_length(jobj_flags); i++)
  ------------------
  |  Branch (759:16): [True: 12.6k, False: 6.10k]
  ------------------
  760|  12.6k|				if (!json_object_is_type(json_object_array_get_idx(jobj_flags, i), json_type_string))
  ------------------
  |  Branch (760:9): [True: 2, False: 12.6k]
  ------------------
  761|      2|					return 1;
  762|  6.10k|		}
  763|       |
  764|  6.90k|		i = atoi(key);
  765|  6.90k|		if (json_segment_is_backup(val)) {
  ------------------
  |  Branch (765:7): [True: 301, False: 6.60k]
  ------------------
  766|    301|			if (first_backup < 0 || i < first_backup)
  ------------------
  |  Branch (766:8): [True: 137, False: 164]
  |  Branch (766:28): [True: 74, False: 90]
  ------------------
  767|    211|				first_backup = i;
  768|  6.60k|		} else {
  769|  6.60k|			if ((first_backup >= 0) && i >= first_backup) {
  ------------------
  |  Branch (769:8): [True: 79, False: 6.52k]
  |  Branch (769:31): [True: 4, False: 75]
  ------------------
  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.60k|		}
  774|       |
  775|       |		/* crypt */
  776|  6.90k|		if (!strcmp(json_object_get_string(jobj_type), "crypt") &&
  ------------------
  |  Branch (776:7): [True: 32, False: 6.87k]
  ------------------
  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.87k|		if (!strncmp(json_object_get_string(jobj_type), "hw-opal", 7)) {
  ------------------
  |  Branch (781:7): [True: 2, False: 6.86k]
  ------------------
  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.87k|	}
  806|       |
  807|  6.41k|	if (first_backup == 0) {
  ------------------
  |  Branch (807:6): [True: 2, False: 6.40k]
  ------------------
  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.40k|	if (first_backup >= count) {
  ------------------
  |  Branch (813:6): [True: 14, False: 6.39k]
  ------------------
  814|     14|		log_dbg(cd, "Gap between last regular segment and backup segment at key %d.", first_backup);
  ------------------
  |  |  186|     14|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     14|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  815|     14|		return 1;
  816|     14|	}
  817|       |
  818|  6.39k|	if (first_backup < 0)
  ------------------
  |  Branch (818:6): [True: 6.35k, False: 41]
  ------------------
  819|  6.35k|		first_backup = count;
  820|       |
  821|  6.39k|	if ((size_t)first_backup < SIZE_MAX / sizeof(*intervals))
  ------------------
  |  Branch (821:6): [True: 6.39k, False: 0]
  ------------------
  822|  6.39k|		intervals = malloc(first_backup * sizeof(*intervals));
  823|       |
  824|  6.39k|	if (!intervals) {
  ------------------
  |  Branch (824:6): [True: 0, False: 6.39k]
  ------------------
  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.8k|	for (i = 0; i < first_backup; i++) {
  ------------------
  |  Branch (829:14): [True: 6.50k, False: 6.37k]
  ------------------
  830|  6.50k|		jobj = json_segments_get_segment(jobj_segments, i);
  831|  6.50k|		if (!jobj) {
  ------------------
  |  Branch (831:7): [True: 24, False: 6.48k]
  ------------------
  832|     24|			log_dbg(cd, "Gap at key %d in segments object.", i);
  ------------------
  |  |  186|     24|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     24|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  833|     24|			free(intervals);
  834|     24|			return 1;
  835|     24|		}
  836|  6.48k|		intervals[i].offset = json_segment_get_offset(jobj, 0);
  837|  6.48k|		intervals[i].length = json_segment_get_size(jobj, 0) ?: UINT64_MAX;
  ------------------
  |  Branch (837:25): [True: 6.47k, False: 2]
  ------------------
  838|  6.48k|	}
  839|       |
  840|  6.37k|	r = !validate_segment_intervals(cd, first_backup, intervals);
  841|  6.37k|	free(intervals);
  842|       |
  843|  6.37k|	if (r)
  ------------------
  |  Branch (843:6): [True: 2, False: 6.36k]
  ------------------
  844|      2|		return 1;
  845|       |
  846|  6.44k|	for (; i < count; i++) {
  ------------------
  |  Branch (846:9): [True: 79, False: 6.36k]
  ------------------
  847|     79|		if (!json_segments_get_segment(jobj_segments, i)) {
  ------------------
  |  Branch (847:7): [True: 4, False: 75]
  ------------------
  848|      4|			log_dbg(cd, "Gap at key %d in segments object.", i);
  ------------------
  |  |  186|      4|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      4|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  849|      4|			return 1;
  850|      4|		}
  851|     79|	}
  852|       |
  853|  6.36k|	return validate_reencrypt_segments(cd, hdr_jobj, jobj_segments, first_backup, count);
  854|  6.36k|}
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.37k|{
  585|  6.37k|	int j, i = 0;
  586|       |
  587|  12.8k|	while (i < length) {
  ------------------
  |  Branch (587:9): [True: 6.47k, False: 6.36k]
  ------------------
  588|  6.47k|		if (ix[i].length == UINT64_MAX && (i != (length - 1))) {
  ------------------
  |  Branch (588:7): [True: 2, False: 6.47k]
  |  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|  13.3k|		for (j = 0; j < length; j++) {
  ------------------
  |  Branch (593:15): [True: 6.90k, False: 6.47k]
  ------------------
  594|  6.90k|			if (i == j)
  ------------------
  |  Branch (594:8): [True: 6.47k, False: 426]
  ------------------
  595|  6.47k|				continue;
  596|       |
  597|    426|			if (ix[j].length != UINT64_MAX && ix[j].offset > (UINT64_MAX - ix[j].length)) {
  ------------------
  |  Branch (597:8): [True: 426, False: 0]
  |  Branch (597:38): [True: 0, False: 426]
  ------------------
  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|    426|			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: 216, False: 210]
  |  Branch (602:43): [True: 0, False: 216]
  |  Branch (602:73): [True: 2, False: 214]
  ------------------
  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|    426|		}
  609|       |
  610|  6.47k|		i++;
  611|  6.47k|	}
  612|       |
  613|  6.36k|	return true;
  614|  6.37k|}
luks2_json_metadata.c:validate_reencrypt_segments:
  646|  6.36k|{
  647|  6.36k|	json_object *jobj, *jobj_backup_previous = NULL, *jobj_backup_final = NULL;
  648|  6.36k|	uint32_t reqs;
  649|  6.36k|	int i;
  650|  6.36k|	struct luks2_hdr dummy = {
  651|  6.36k|		.jobj = hdr_jobj
  652|  6.36k|	};
  653|       |
  654|  6.36k|	LUKS2_config_get_requirements(cd, &dummy, &reqs);
  655|       |
  656|  6.36k|	if (reqs_reencrypt_online(reqs)) {
  ------------------
  |  Branch (656:6): [True: 10, False: 6.35k]
  ------------------
  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.35k|	return 0;
  694|  6.36k|}
luks2_json_metadata.c:hdr_validate_keyslots:
  494|  6.35k|{
  495|  6.35k|	json_object *jobj;
  496|       |
  497|  6.35k|	if (!(jobj = json_contains(cd, hdr_jobj, "", "JSON area", "keyslots", json_type_object)))
  ------------------
  |  Branch (497:6): [True: 0, False: 6.35k]
  ------------------
  498|      0|		return 1;
  499|       |
  500|  6.35k|	json_object_object_foreach(jobj, key, val) {
  ------------------
  |  |  494|  6.35k|	char *key = NULL;                                                        \
  |  |  495|  6.35k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.35k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.35k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.44k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 138, False: 6.30k]
  |  |  ------------------
  |  |  499|  6.44k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 138, False: 6.30k]
  |  |  ------------------
  |  |  500|  6.44k|		     {                                                           \
  |  |  501|    138|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    138|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    138|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    138|		     };                                                          \
  |  |  505|  6.44k|		     entry##key;                                                 \
  |  |  506|  6.44k|	     });                                                                 \
  |  |  507|  6.35k|	     entry##key = entry_next##key)
  ------------------
  501|    138|		if (!numbered(cd, "Keyslot", key))
  ------------------
  |  Branch (501:7): [True: 8, False: 130]
  ------------------
  502|      8|			return 1;
  503|    130|		if (LUKS2_keyslot_validate(cd, val, key))
  ------------------
  |  Branch (503:7): [True: 38, False: 92]
  ------------------
  504|     38|			return 1;
  505|    130|	}
  506|       |
  507|  6.30k|	return 0;
  508|  6.35k|}
luks2_json_metadata.c:LUKS2_keyslot_validate:
  419|    130|{
  420|    130|	json_object *jobj_key_size;
  421|       |
  422|    130|	if (!json_contains_string(cd, hdr_keyslot, key, "Keyslot", "type"))
  ------------------
  |  Branch (422:6): [True: 2, False: 128]
  ------------------
  423|      2|		return 1;
  424|    128|	if (!(jobj_key_size = json_contains(cd, hdr_keyslot, key, "Keyslot", "key_size", json_type_int)))
  ------------------
  |  Branch (424:6): [True: 6, False: 122]
  ------------------
  425|      6|		return 1;
  426|       |
  427|       |	/* enforce uint32_t type */
  428|    122|	if (!validate_json_uint32(jobj_key_size)) {
  ------------------
  |  Branch (428:6): [True: 30, False: 92]
  ------------------
  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|     92|	return 0;
  435|    122|}
luks2_json_metadata.c:hdr_validate_config:
  977|  6.30k|{
  978|  6.30k|	json_object *jobj_config, *jobj;
  979|  6.30k|	int i;
  980|  6.30k|	uint64_t keyslots_size, metadata_size, segment_offset;
  981|       |
  982|  6.30k|	if (!(jobj_config = json_contains(cd, hdr_jobj, "", "JSON area", "config", json_type_object)))
  ------------------
  |  Branch (982:6): [True: 0, False: 6.30k]
  ------------------
  983|      0|		return 1;
  984|       |
  985|  6.30k|	if (!(jobj = json_contains_string(cd, jobj_config, "section", "Config", "json_size")))
  ------------------
  |  Branch (985:6): [True: 8, False: 6.30k]
  ------------------
  986|      8|		return 1;
  987|  6.30k|	if (!json_str_to_uint64(jobj, &metadata_size)) {
  ------------------
  |  Branch (987:6): [True: 6, False: 6.29k]
  ------------------
  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.29k|	metadata_size += LUKS2_HDR_BIN_LEN;
  ------------------
  |  |  143|  6.29k|#define LUKS2_HDR_BIN_LEN sizeof(struct luks2_hdr_disk)
  ------------------
  995|       |
  996|  6.29k|	if (!(jobj = json_contains_string(cd, jobj_config, "section", "Config", "keyslots_size")))
  ------------------
  |  Branch (996:6): [True: 4, False: 6.29k]
  ------------------
  997|      4|		return 1;
  998|  6.29k|	if(!json_str_to_uint64(jobj, &keyslots_size)) {
  ------------------
  |  Branch (998:5): [True: 8, False: 6.28k]
  ------------------
  999|      8|		log_dbg(cd, "Illegal config keyslot_size value.");
  ------------------
  |  |  186|      8|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      8|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1000|      8|		return 1;
 1001|      8|	}
 1002|       |
 1003|  6.28k|	if (LUKS2_check_metadata_area_size(metadata_size)) {
  ------------------
  |  Branch (1003:6): [True: 30, False: 6.25k]
  ------------------
 1004|     30|		log_dbg(cd, "Unsupported LUKS2 header size (%" PRIu64 ").", metadata_size);
  ------------------
  |  |  186|     30|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     30|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1005|     30|		return 1;
 1006|     30|	}
 1007|       |
 1008|  6.25k|	if (LUKS2_check_keyslots_area_size(keyslots_size)) {
  ------------------
  |  Branch (1008:6): [True: 6, False: 6.24k]
  ------------------
 1009|      6|		log_dbg(cd, "Unsupported LUKS2 keyslots size (%" PRIu64 ").", keyslots_size);
  ------------------
  |  |  186|      6|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|      6|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1010|      6|		return 1;
 1011|      6|	}
 1012|       |
 1013|       |	/*
 1014|       |	 * validate keyslots_size fits in between (2 * metadata_size) and first
 1015|       |	 * segment_offset (except detached header)
 1016|       |	 */
 1017|  6.24k|	segment_offset = json_segments_get_minimal_offset(json_get_segments_jobj(hdr_jobj), 0);
 1018|  6.24k|	if (segment_offset &&
  ------------------
  |  Branch (1018:6): [True: 3.20k, False: 3.03k]
  ------------------
 1019|  3.20k|	    (segment_offset < keyslots_size ||
  ------------------
  |  Branch (1019:7): [True: 12, False: 3.19k]
  ------------------
 1020|  3.19k|	     (segment_offset - keyslots_size) < (2 * metadata_size))) {
  ------------------
  |  Branch (1020:7): [True: 2, False: 3.19k]
  ------------------
 1021|     14|		log_dbg(cd, "keyslots_size is too large %" PRIu64 " (bytes). Data offset: %" PRIu64
  ------------------
  |  |  186|     14|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|     14|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1022|     14|			", keyslots offset: %" PRIu64, keyslots_size, segment_offset, 2 * metadata_size);
 1023|     14|		return 1;
 1024|     14|	}
 1025|       |
 1026|       |	/* Flags array is optional */
 1027|  6.23k|	if (json_object_object_get_ex(jobj_config, "flags", &jobj)) {
  ------------------
  |  Branch (1027:6): [True: 637, False: 5.59k]
  ------------------
 1028|    637|		if (!json_contains(cd, jobj_config, "section", "Config", "flags", json_type_array))
  ------------------
  |  Branch (1028:7): [True: 0, False: 637]
  ------------------
 1029|      0|			return 1;
 1030|       |
 1031|       |		/* All array members must be strings */
 1032|  4.24k|		for (i = 0; i < (int) json_object_array_length(jobj); i++)
  ------------------
  |  Branch (1032:15): [True: 3.61k, False: 635]
  ------------------
 1033|  3.61k|			if (!json_object_is_type(json_object_array_get_idx(jobj, i), json_type_string))
  ------------------
  |  Branch (1033:8): [True: 2, False: 3.60k]
  ------------------
 1034|      2|				return 1;
 1035|    637|	}
 1036|       |
 1037|  6.23k|	return 0;
 1038|  6.23k|}
luks2_json_metadata.c:hdr_validate_areas:
  874|  6.23k|{
  875|  6.23k|	struct interval *intervals;
  876|  6.23k|	json_object *jobj_keyslots, *jobj_offset, *jobj_length, *jobj_segments, *jobj_area;
  877|  6.23k|	int length, ret, i = 0;
  878|  6.23k|	uint64_t metadata_size;
  879|       |
  880|  6.23k|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (880:6): [True: 0, False: 6.23k]
  ------------------
  881|      0|		return 1;
  882|       |
  883|       |	/* segments are already validated */
  884|  6.23k|	if (!json_object_object_get_ex(hdr_jobj, "segments", &jobj_segments))
  ------------------
  |  Branch (884:6): [True: 0, False: 6.23k]
  ------------------
  885|      0|		return 1;
  886|       |
  887|       |	/* config is already validated */
  888|  6.23k|	metadata_size = LUKS2_metadata_size_jobj(hdr_jobj);
  889|       |
  890|  6.23k|	length = json_object_object_length(jobj_keyslots);
  891|       |
  892|       |	/* Empty section */
  893|  6.23k|	if (length == 0)
  ------------------
  |  Branch (893:6): [True: 6.19k, False: 38]
  ------------------
  894|  6.19k|		return 0;
  895|       |
  896|     38|	if (length < 0) {
  ------------------
  |  Branch (896:6): [True: 0, False: 38]
  ------------------
  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|     38|	intervals = malloc(length * sizeof(*intervals));
  902|     38|	if (!intervals) {
  ------------------
  |  Branch (902:6): [True: 0, False: 38]
  ------------------
  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|     38|	json_object_object_foreach(jobj_keyslots, key, val) {
  ------------------
  |  |  494|     38|	char *key = NULL;                                                        \
  |  |  495|     38|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|     38|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|     38|	                     *entry_next##key = NULL;                            \
  |  |  498|     60|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 38, False: 22]
  |  |  ------------------
  |  |  499|     60|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 38, False: 22]
  |  |  ------------------
  |  |  500|     60|		     {                                                           \
  |  |  501|     38|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     38|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     38|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     38|		     };                                                          \
  |  |  505|     60|		     entry##key;                                                 \
  |  |  506|     60|	     });                                                                 \
  |  |  507|     38|	     entry##key = entry_next##key)
  ------------------
  908|       |
  909|     38|		if (!(jobj_area = json_contains(cd, val, key, "Keyslot", "area", json_type_object)) ||
  ------------------
  |  Branch (909:7): [True: 2, False: 36]
  ------------------
  910|     36|		    !json_contains_string(cd, jobj_area, key, "Keyslot area", "type") ||
  ------------------
  |  Branch (910:7): [True: 2, False: 34]
  ------------------
  911|     34|		    !(jobj_offset = json_contains_string(cd, jobj_area, key, "Keyslot", "offset")) ||
  ------------------
  |  Branch (911:7): [True: 2, False: 32]
  ------------------
  912|     32|		    !(jobj_length = json_contains_string(cd, jobj_area, key, "Keyslot", "size")) ||
  ------------------
  |  Branch (912:7): [True: 2, False: 30]
  ------------------
  913|     30|		    !numbered(cd, "offset", json_object_get_string(jobj_offset)) ||
  ------------------
  |  Branch (913:7): [True: 2, False: 28]
  ------------------
  914|     28|		    !numbered(cd, "size", json_object_get_string(jobj_length))) {
  ------------------
  |  Branch (914:7): [True: 2, False: 26]
  ------------------
  915|     12|			free(intervals);
  916|     12|			return 1;
  917|     12|		}
  918|       |
  919|       |		/* rule out values > UINT64_MAX */
  920|     26|		if (!json_str_to_uint64(jobj_offset, &intervals[i].offset) ||
  ------------------
  |  Branch (920:7): [True: 0, False: 26]
  ------------------
  921|     26|		    !json_str_to_uint64(jobj_length, &intervals[i].length)) {
  ------------------
  |  Branch (921:7): [True: 4, False: 22]
  ------------------
  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|     22|		i++;
  928|     22|	}
  929|       |
  930|     22|	if (length != i) {
  ------------------
  |  Branch (930:6): [True: 0, False: 22]
  ------------------
  931|      0|		free(intervals);
  932|      0|		return 1;
  933|      0|	}
  934|       |
  935|     22|	ret = validate_intervals(cd, length, intervals, metadata_size, LUKS2_hdr_and_areas_size_jobj(hdr_jobj)) ? 0 : 1;
  ------------------
  |  Branch (935:8): [True: 22, False: 0]
  ------------------
  936|       |
  937|     22|	free(intervals);
  938|       |
  939|     22|	return ret;
  940|     22|}
luks2_json_metadata.c:validate_intervals:
  369|     22|{
  370|     22|	int j, i = 0;
  371|       |
  372|     44|	while (i < length) {
  ------------------
  |  Branch (372:9): [True: 22, False: 22]
  ------------------
  373|       |		/* Offset cannot be inside primary or secondary JSON area */
  374|     22|		if (ix[i].offset < 2 * metadata_size) {
  ------------------
  |  Branch (374:7): [True: 0, False: 22]
  ------------------
  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|     22|		if (!ix[i].length) {
  ------------------
  |  Branch (379:7): [True: 0, False: 22]
  ------------------
  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|     22|		if (ix[i].offset > (UINT64_MAX - ix[i].length)) {
  ------------------
  |  Branch (384:7): [True: 0, False: 22]
  ------------------
  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|     22|		if ((ix[i].offset + ix[i].length) > keyslots_area_end) {
  ------------------
  |  Branch (389:7): [True: 0, False: 22]
  ------------------
  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|     44|		for (j = 0; j < length; j++) {
  ------------------
  |  Branch (395:15): [True: 22, False: 22]
  ------------------
  396|     22|			if (i == j)
  ------------------
  |  Branch (396:8): [True: 22, False: 0]
  ------------------
  397|     22|				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|     22|		i++;
  413|     22|	}
  414|       |
  415|     22|	return true;
  416|     22|}
luks2_json_metadata.c:hdr_update_copy_for_rollback:
 1148|  2.15k|{
 1149|  2.15k|	json_object **jobj_copy;
 1150|       |
 1151|  2.15k|	assert(hdr);
  ------------------
  |  Branch (1151:2): [True: 0, False: 2.15k]
  |  Branch (1151:2): [True: 2.15k, False: 0]
  ------------------
 1152|  2.15k|	assert(hdr->jobj);
  ------------------
  |  Branch (1152:2): [True: 0, False: 2.15k]
  |  Branch (1152:2): [True: 2.15k, False: 0]
  ------------------
 1153|       |
 1154|  2.15k|	jobj_copy = (json_object **)&hdr->jobj_rollback;
 1155|       |
 1156|  2.15k|	if (!hdr_json_free(jobj_copy)) {
  ------------------
  |  Branch (1156:6): [True: 0, False: 2.15k]
  ------------------
 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.15k|	return json_object_copy(hdr->jobj, jobj_copy) ? -ENOMEM : 0;
  ------------------
  |  Branch (1161:9): [True: 0, False: 2.15k]
  ------------------
 1162|  2.15k|}
luks2_json_metadata.c:hdr_json_free:
 1138|  6.46k|{
 1139|  6.46k|	assert(jobj);
  ------------------
  |  Branch (1139:2): [True: 0, False: 6.46k]
  |  Branch (1139:2): [True: 6.46k, False: 0]
  ------------------
 1140|       |
 1141|  6.46k|	if (json_object_put(*jobj))
  ------------------
  |  Branch (1141:6): [True: 4.31k, False: 2.15k]
  ------------------
 1142|  4.31k|		*jobj = NULL;
 1143|       |
 1144|       |	return (*jobj == NULL);
 1145|  6.46k|}
luks2_json_metadata.c:LUKS2_keyslots_size_jobj:
 1310|  6.20k|{
 1311|  6.20k|	json_object *jobj1, *jobj2;
 1312|  6.20k|	uint64_t keyslots_size;
 1313|       |
 1314|  6.20k|	json_object_object_get_ex(jobj, "config", &jobj1);
 1315|  6.20k|	json_object_object_get_ex(jobj1, "keyslots_size", &jobj2);
 1316|  6.20k|	json_str_to_uint64(jobj2, &keyslots_size);
 1317|       |
 1318|  6.20k|	return keyslots_size;
 1319|  6.20k|}
luks2_json_metadata.c:reqs_unknown:
  617|    300|{
  618|       |	return reqs & CRYPT_REQUIREMENT_UNKNOWN;
  ------------------
  |  | 1634|    300|#define CRYPT_REQUIREMENT_UNKNOWN		(UINT32_C(1) << 31)
  ------------------
  619|    300|}
luks2_json_metadata.c:mandatory_requirements_jobj:
 1659|  12.5k|{
 1660|  12.5k|	json_object *jobj_config, *jobj_requirements, *jobj_mandatory;
 1661|       |
 1662|  12.5k|	assert(hdr);
  ------------------
  |  Branch (1662:2): [True: 0, False: 12.5k]
  |  Branch (1662:2): [True: 12.5k, False: 0]
  ------------------
 1663|       |
 1664|  12.5k|	if (!json_object_object_get_ex(hdr->jobj, "config", &jobj_config))
  ------------------
  |  Branch (1664:6): [True: 0, False: 12.5k]
  ------------------
 1665|      0|		return NULL;
 1666|       |
 1667|  12.5k|	if (!json_object_object_get_ex(jobj_config, "requirements", &jobj_requirements))
  ------------------
  |  Branch (1667:6): [True: 12.3k, False: 170]
  ------------------
 1668|  12.3k|		return NULL;
 1669|       |
 1670|    170|	if (!json_object_object_get_ex(jobj_requirements, "mandatory", &jobj_mandatory))
  ------------------
  |  Branch (1670:6): [True: 46, False: 124]
  ------------------
 1671|     46|		return NULL;
 1672|       |
 1673|    124|	return jobj_mandatory;
 1674|    170|}
luks2_json_metadata.c:reencrypt_candidate_flag:
 1041|  2.73k|{
 1042|  2.73k|	const char *ptr;
 1043|       |
 1044|  2.73k|	assert(flag);
  ------------------
  |  Branch (1044:2): [True: 0, False: 2.73k]
  |  Branch (1044:2): [True: 2.73k, False: 0]
  ------------------
 1045|       |
 1046|  2.73k|	if (!strcmp(flag, "online-reencrypt"))
  ------------------
  |  Branch (1046:6): [True: 10, False: 2.72k]
  ------------------
 1047|     10|		return true;
 1048|       |
 1049|  2.72k|	if (strncmp(flag, "online-reencrypt-v", 18))
  ------------------
  |  Branch (1049:6): [True: 2.06k, False: 660]
  ------------------
 1050|  2.06k|		return false;
 1051|       |
 1052|    660|	ptr = flag + 18;
 1053|    660|	if (!*ptr)
  ------------------
  |  Branch (1053:6): [True: 10, False: 650]
  ------------------
 1054|     10|		return false;
 1055|       |
 1056|  1.33k|	while (*ptr) {
  ------------------
  |  Branch (1056:9): [True: 728, False: 602]
  ------------------
 1057|    728|		if (!isdigit(*ptr))
  ------------------
  |  Branch (1057:7): [True: 48, False: 680]
  ------------------
 1058|     48|			return false;
 1059|    680|		ptr++;
 1060|    680|	}
 1061|       |
 1062|    602|	return true;
 1063|    650|}
luks2_json_metadata.c:get_requirement_by_name:
 1648|    300|{
 1649|    300|	int i;
 1650|       |
 1651|  1.70k|	for (i = 0; requirements_flags[i].description; i++)
  ------------------
  |  Branch (1651:14): [True: 1.51k, False: 198]
  ------------------
 1652|  1.51k|		if (!strcmp(requirement, requirements_flags[i].description))
  ------------------
  |  Branch (1652:7): [True: 102, False: 1.40k]
  ------------------
 1653|    102|			return requirements_flags + i;
 1654|       |
 1655|    198|	return &unknown_requirement_flag;
 1656|    300|}
luks2_json_metadata.c:reqs_reencrypt_online:
  627|  6.36k|{
  628|       |	return reqs & CRYPT_REQUIREMENT_ONLINE_REENCRYPT;
  ------------------
  |  | 1628|  6.36k|#define CRYPT_REQUIREMENT_ONLINE_REENCRYPT	(UINT32_C(1) << 1)
  ------------------
  629|  6.36k|}

LUKS2_keyslots_validate:
  854|  6.18k|{
  855|  6.18k|	const keyslot_handler *h;
  856|  6.18k|	int keyslot;
  857|  6.18k|	json_object *jobj_keyslots, *jobj_type;
  858|  6.18k|	uint32_t reqs, reencrypt_count = 0;
  859|  6.18k|	struct luks2_hdr dummy = {
  860|  6.18k|		.jobj = hdr_jobj
  861|  6.18k|	};
  862|       |
  863|  6.18k|	if (!json_object_object_get_ex(hdr_jobj, "keyslots", &jobj_keyslots))
  ------------------
  |  Branch (863:6): [True: 0, False: 6.18k]
  ------------------
  864|      0|		return -EINVAL;
  865|       |
  866|  6.18k|	LUKS2_config_get_requirements(cd, &dummy, &reqs);
  867|       |
  868|  6.18k|	json_object_object_foreach(jobj_keyslots, slot, val) {
  ------------------
  |  |  494|  6.18k|	char *key = NULL;                                                        \
  |  |  495|  6.18k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.18k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.18k|	                     *entry_next##key = NULL;                            \
  |  |  498|  6.19k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 12, False: 6.18k]
  |  |  ------------------
  |  |  499|  6.19k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 12, False: 6.18k]
  |  |  ------------------
  |  |  500|  6.19k|		     {                                                           \
  |  |  501|     12|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|     12|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|     12|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|     12|		     };                                                          \
  |  |  505|  6.19k|		     entry##key;                                                 \
  |  |  506|  6.19k|	     });                                                                 \
  |  |  507|  6.18k|	     entry##key = entry_next##key)
  ------------------
  869|     12|		keyslot = atoi(slot);
  870|     12|		json_object_object_get_ex(val, "type", &jobj_type);
  871|     12|		h = LUKS2_keyslot_handler_type(json_object_get_string(jobj_type));
  872|     12|		if (!h)
  ------------------
  |  Branch (872:7): [True: 12, False: 0]
  ------------------
  873|     12|			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|  6.18k|	if ((reqs & CRYPT_REQUIREMENT_ONLINE_REENCRYPT) && reencrypt_count == 0) {
  ------------------
  |  | 1628|  6.18k|#define CRYPT_REQUIREMENT_ONLINE_REENCRYPT	(UINT32_C(1) << 1)
  ------------------
  |  Branch (888:6): [True: 0, False: 6.18k]
  |  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|  6.18k|	if (reencrypt_count && !LUKS2_reencrypt_requirement_candidate(&dummy)) {
  ------------------
  |  Branch (893:6): [True: 0, False: 6.18k]
  |  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|  6.18k|	if (reencrypt_count > 1) {
  ------------------
  |  Branch (898:6): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|	return 0;
  904|  6.18k|}
LUKS2_keyslots_repair:
  907|    277|{
  908|    277|	const keyslot_handler *h;
  909|    277|	json_object *jobj_type;
  910|       |
  911|    509|	json_object_object_foreach(jobj_keyslots, slot, val) {
  ------------------
  |  |  494|    277|	char *key = NULL;                                                        \
  |  |  495|    277|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|    277|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|    277|	                     *entry_next##key = NULL;                            \
  |  |  498|    786|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 509, False: 277]
  |  |  ------------------
  |  |  499|    786|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 509, False: 277]
  |  |  ------------------
  |  |  500|    786|		     {                                                           \
  |  |  501|    509|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    509|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    509|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    509|		     };                                                          \
  |  |  505|    786|		     entry##key;                                                 \
  |  |  506|    786|	     });                                                                 \
  |  |  507|    509|	     entry##key = entry_next##key)
  ------------------
  912|    509|		UNUSED(slot);
  ------------------
  |  |   18|    509|#define UNUSED(x) (void)(x)
  ------------------
  913|    509|		if (!json_object_is_type(val, json_type_object) ||
  ------------------
  |  Branch (913:7): [True: 32, False: 477]
  ------------------
  914|    477|		    !json_object_object_get_ex(val, "type", &jobj_type) ||
  ------------------
  |  Branch (914:7): [True: 85, False: 392]
  ------------------
  915|    392|		    !json_object_is_type(jobj_type, json_type_string))
  ------------------
  |  Branch (915:7): [True: 11, False: 381]
  ------------------
  916|    128|			continue;
  917|       |
  918|    381|		h = LUKS2_keyslot_handler_type(json_object_get_string(jobj_type));
  919|    381|		if (h && h->repair)
  ------------------
  |  Branch (919:7): [True: 268, False: 113]
  |  Branch (919:12): [True: 222, False: 46]
  ------------------
  920|    222|			h->repair(val);
  921|    381|	}
  922|    277|}
luks2_keyslot.c:LUKS2_keyslot_handler_type:
   26|    393|{
   27|    393|	int i;
   28|       |
   29|    689|	for (i = 0; i < LUKS2_KEYSLOTS_MAX && keyslot_handlers[i]; i++) {
  ------------------
  |  |   28|    689|#define LUKS2_KEYSLOTS_MAX LUKS2_OBJECTS_MAX
  |  |  ------------------
  |  |  |  |   27|  1.37k|#define LUKS2_OBJECTS_MAX  32
  |  |  ------------------
  ------------------
  |  Branch (29:14): [True: 689, False: 0]
  |  Branch (29:40): [True: 564, False: 125]
  ------------------
   30|    564|		if (!strcmp(keyslot_handlers[i]->name, type))
  ------------------
  |  Branch (30:7): [True: 268, False: 296]
  ------------------
   31|    268|			return keyslot_handlers[i];
   32|    564|	}
   33|       |
   34|    125|	return NULL;
   35|    393|}

luks2_keyslot_luks2.c:luks2_keyslot_repair:
  762|    222|{
  763|    222|	const char *type;
  764|    222|	json_object *jobj_kdf, *jobj_type;
  765|       |
  766|    222|	if (!json_object_object_get_ex(jobj_keyslot, "kdf", &jobj_kdf) ||
  ------------------
  |  Branch (766:6): [True: 49, False: 173]
  ------------------
  767|    173|	    !json_object_is_type(jobj_kdf, json_type_object))
  ------------------
  |  Branch (767:6): [True: 0, False: 173]
  ------------------
  768|     49|		return;
  769|       |
  770|    173|	if (!json_object_object_get_ex(jobj_kdf, "type", &jobj_type) ||
  ------------------
  |  Branch (770:6): [True: 19, False: 154]
  ------------------
  771|    154|	    !json_object_is_type(jobj_type, json_type_string))
  ------------------
  |  Branch (771:6): [True: 10, False: 144]
  ------------------
  772|     29|		return;
  773|       |
  774|    144|	type = json_object_get_string(jobj_type);
  775|       |
  776|    144|	if (!strcmp(type, CRYPT_KDF_PBKDF2)) {
  ------------------
  |  |  266|    144|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (776:6): [True: 54, False: 90]
  ------------------
  777|       |		/* type, salt, hash, iterations only */
  778|    474|		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|    528|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 474, False: 54]
  |  |  ------------------
  |  |  499|    528|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 474, False: 54]
  |  |  ------------------
  |  |  500|    528|		     {                                                           \
  |  |  501|    474|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    474|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    474|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    474|		     };                                                          \
  |  |  505|    528|		     entry##key;                                                 \
  |  |  506|    528|	     });                                                                 \
  |  |  507|    474|	     entry##key = entry_next##key)
  ------------------
  779|    474|			UNUSED(val);
  ------------------
  |  |   18|    474|#define UNUSED(x) (void)(x)
  ------------------
  780|    474|			if (!strcmp(key, "type") || !strcmp(key, "salt") ||
  ------------------
  |  Branch (780:8): [True: 54, False: 420]
  |  Branch (780:32): [True: 47, False: 373]
  ------------------
  781|    373|			    !strcmp(key, "hash") || !strcmp(key, "iterations"))
  ------------------
  |  Branch (781:8): [True: 26, False: 347]
  |  Branch (781:32): [True: 39, False: 308]
  ------------------
  782|    166|					continue;
  783|    308|			json_object_object_del(jobj_kdf, key);
  784|    308|		}
  785|     90|	} else if (!strcmp(type, CRYPT_KDF_ARGON2I) || !strcmp(type, CRYPT_KDF_ARGON2ID)) {
  ------------------
  |  |  268|     90|#define CRYPT_KDF_ARGON2I  "argon2i"
  ------------------
              	} else if (!strcmp(type, CRYPT_KDF_ARGON2I) || !strcmp(type, CRYPT_KDF_ARGON2ID)) {
  ------------------
  |  |  270|     46|#define CRYPT_KDF_ARGON2ID "argon2id"
  ------------------
  |  Branch (785:13): [True: 44, False: 46]
  |  Branch (785:49): [True: 20, False: 26]
  ------------------
  786|       |		/* type, salt, time, memory, cpus only */
  787|    407|		json_object_object_foreach(jobj_kdf, key, val) {
  ------------------
  |  |  494|     64|	char *key = NULL;                                                        \
  |  |  495|     64|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|     64|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|     64|	                     *entry_next##key = NULL;                            \
  |  |  498|    471|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 407, False: 64]
  |  |  ------------------
  |  |  499|    471|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 407, False: 64]
  |  |  ------------------
  |  |  500|    471|		     {                                                           \
  |  |  501|    407|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|    407|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|    407|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|    407|		     };                                                          \
  |  |  505|    471|		     entry##key;                                                 \
  |  |  506|    471|	     });                                                                 \
  |  |  507|    407|	     entry##key = entry_next##key)
  ------------------
  788|    407|			UNUSED(val);
  ------------------
  |  |   18|    407|#define UNUSED(x) (void)(x)
  ------------------
  789|    407|			if (!strcmp(key, "type") || !strcmp(key, "salt") ||
  ------------------
  |  Branch (789:8): [True: 64, False: 343]
  |  Branch (789:32): [True: 60, False: 283]
  ------------------
  790|    283|			    !strcmp(key, "time") || !strcmp(key, "memory") ||
  ------------------
  |  Branch (790:8): [True: 40, False: 243]
  |  Branch (790:32): [True: 52, False: 191]
  ------------------
  791|    191|			    !strcmp(key, "cpus"))
  ------------------
  |  Branch (791:8): [True: 43, False: 148]
  ------------------
  792|    259|					continue;
  793|    148|			json_object_object_del(jobj_kdf, key);
  794|    148|		}
  795|     64|	}
  796|    144|}

LUKS2_reencrypt_free:
  877|  2.15k|{
  878|  2.15k|	if (!rh)
  ------------------
  |  Branch (878:6): [True: 2.15k, False: 0]
  ------------------
  879|  2.15k|		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.24k|{
   14|  6.24k|	uint64_t tmp, min = blockwise ? UINT64_MAX >> SECTOR_SHIFT : UINT64_MAX;
  ------------------
  |  |   38|      0|#define SECTOR_SHIFT       9
  ------------------
  |  Branch (14:22): [True: 0, False: 6.24k]
  ------------------
   15|       |
   16|  6.24k|	if (!jobj_segments)
  ------------------
  |  Branch (16:6): [True: 0, False: 6.24k]
  ------------------
   17|      0|		return 0;
   18|       |
   19|  6.36k|	json_object_object_foreach(jobj_segments, key, val) {
  ------------------
  |  |  494|  6.24k|	char *key = NULL;                                                        \
  |  |  495|  6.24k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  6.24k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  6.24k|	                     *entry_next##key = NULL;                            \
  |  |  498|  9.57k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 6.36k, False: 3.20k]
  |  |  ------------------
  |  |  499|  9.57k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 6.36k, False: 3.20k]
  |  |  ------------------
  |  |  500|  9.57k|		     {                                                           \
  |  |  501|  6.36k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  6.36k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  6.36k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  6.36k|		     };                                                          \
  |  |  505|  9.57k|		     entry##key;                                                 \
  |  |  506|  9.57k|	     });                                                                 \
  |  |  507|  6.24k|	     entry##key = entry_next##key)
  ------------------
   20|  6.36k|		UNUSED(key);
  ------------------
  |  |   18|  6.36k|#define UNUSED(x) (void)(x)
  ------------------
   21|       |
   22|  6.36k|		if (json_segment_is_backup(val))
  ------------------
  |  Branch (22:7): [True: 43, False: 6.32k]
  ------------------
   23|     43|			continue;
   24|       |
   25|  6.32k|		tmp = json_segment_get_offset(val, blockwise);
   26|       |
   27|  6.32k|		if (!tmp)
  ------------------
  |  Branch (27:7): [True: 3.03k, False: 3.28k]
  ------------------
   28|  3.03k|			return tmp;
   29|       |
   30|  3.28k|		if (tmp < min)
  ------------------
  |  Branch (30:7): [True: 3.22k, False: 62]
  ------------------
   31|  3.22k|			min = tmp;
   32|  3.28k|	}
   33|       |
   34|  3.20k|	return min;
   35|  6.24k|}
json_segment_get_offset:
   38|  12.8k|{
   39|  12.8k|	json_object *jobj;
   40|       |
   41|  12.8k|	if (!jobj_segment ||
  ------------------
  |  Branch (41:6): [True: 0, False: 12.8k]
  ------------------
   42|  12.8k|	    !json_object_object_get_ex(jobj_segment, "offset", &jobj))
  ------------------
  |  Branch (42:6): [True: 0, False: 12.8k]
  ------------------
   43|      0|		return 0;
   44|       |
   45|  12.8k|	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.8k]
  ------------------
   46|  12.8k|}
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.48k|{
   72|  6.48k|	json_object *jobj;
   73|       |
   74|  6.48k|	if (!jobj_segment ||
  ------------------
  |  Branch (74:6): [True: 0, False: 6.48k]
  ------------------
   75|  6.48k|	    !json_object_object_get_ex(jobj_segment, "size", &jobj))
  ------------------
  |  Branch (75:6): [True: 0, False: 6.48k]
  ------------------
   76|      0|		return 0;
   77|       |
   78|  6.48k|	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.48k]
  ------------------
   79|  6.48k|}
json_segment_get_sector_size:
  121|  2.15k|{
  122|  2.15k|	json_object *jobj;
  123|  2.15k|	int i;
  124|       |
  125|  2.15k|	if (!jobj_segment ||
  ------------------
  |  Branch (125:6): [True: 0, False: 2.15k]
  ------------------
  126|  2.15k|            !json_object_object_get_ex(jobj_segment, "sector_size", &jobj))
  ------------------
  |  Branch (126:13): [True: 1.87k, False: 282]
  ------------------
  127|  1.87k|		return SECTOR_SIZE;
  ------------------
  |  |   39|  1.87k|#define SECTOR_SIZE     (1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   38|  1.87k|#define SECTOR_SHIFT       9
  |  |  ------------------
  ------------------
  128|       |
  129|    282|	i = json_object_get_int(jobj);
  130|    282|	return i < 0 ? SECTOR_SIZE : i;
  ------------------
  |  |   39|     18|#define SECTOR_SIZE     (1 << SECTOR_SHIFT)
  |  |  ------------------
  |  |  |  |   38|     18|#define SECTOR_SHIFT       9
  |  |  ------------------
  ------------------
  |  Branch (130:9): [True: 18, False: 264]
  ------------------
  131|  2.15k|}
json_segment_contains_flag:
  174|  15.4k|{
  175|  15.4k|	int r, i;
  176|  15.4k|	json_object *jobj, *jobj_flags = json_segment_get_flags(jobj_segment);
  177|       |
  178|  15.4k|	if (!jobj_flags)
  ------------------
  |  Branch (178:6): [True: 1.81k, False: 13.6k]
  ------------------
  179|  1.81k|		return false;
  180|       |
  181|  38.8k|	for (i = 0; i < (int)json_object_array_length(jobj_flags); i++) {
  ------------------
  |  Branch (181:14): [True: 25.5k, False: 13.3k]
  ------------------
  182|  25.5k|		jobj = json_object_array_get_idx(jobj_flags, i);
  183|  25.5k|		if (len)
  ------------------
  |  Branch (183:7): [True: 25.1k, False: 418]
  ------------------
  184|  25.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|  25.5k|		if (!r)
  ------------------
  |  Branch (187:7): [True: 366, False: 25.1k]
  ------------------
  188|    366|			return true;
  189|  25.5k|	}
  190|       |
  191|  13.3k|	return false;
  192|  13.6k|}
json_segment_is_backup:
  195|  15.4k|{
  196|  15.4k|	return json_segment_contains_flag(jobj_segment, "backup-", 7);
  197|  15.4k|}
json_segments_get_segment:
  200|  8.75k|{
  201|  8.75k|	json_object *jobj;
  202|  8.75k|	char segment_name[16];
  203|       |
  204|  8.75k|	if (snprintf(segment_name, sizeof(segment_name), "%u", segment) < 1)
  ------------------
  |  Branch (204:6): [True: 0, False: 8.75k]
  ------------------
  205|      0|		return NULL;
  206|       |
  207|  8.75k|	if (!json_object_object_get_ex(jobj_segments, segment_name, &jobj))
  ------------------
  |  Branch (207:6): [True: 28, False: 8.72k]
  ------------------
  208|     28|		return NULL;
  209|       |
  210|  8.72k|	return jobj;
  211|  8.75k|}
json_segments_count:
  214|  2.15k|{
  215|  2.15k|	unsigned count = 0;
  216|       |
  217|  2.15k|	if (!jobj_segments)
  ------------------
  |  Branch (217:6): [True: 0, False: 2.15k]
  ------------------
  218|      0|		return 0;
  219|       |
  220|  2.19k|	json_object_object_foreach(jobj_segments, slot, val) {
  ------------------
  |  |  494|  2.15k|	char *key = NULL;                                                        \
  |  |  495|  2.15k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  2.15k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  2.15k|	                     *entry_next##key = NULL;                            \
  |  |  498|  4.34k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 2.19k, False: 2.15k]
  |  |  ------------------
  |  |  499|  4.34k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 2.19k, False: 2.15k]
  |  |  ------------------
  |  |  500|  4.34k|		     {                                                           \
  |  |  501|  2.19k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  2.19k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  2.19k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  2.19k|		     };                                                          \
  |  |  505|  4.34k|		     entry##key;                                                 \
  |  |  506|  4.34k|	     });                                                                 \
  |  |  507|  2.19k|	     entry##key = entry_next##key)
  ------------------
  221|  2.19k|		UNUSED(slot);
  ------------------
  |  |   18|  2.19k|#define UNUSED(x) (void)(x)
  ------------------
  222|  2.19k|		if (!json_segment_is_backup(val))
  ------------------
  |  Branch (222:7): [True: 2.17k, False: 16]
  ------------------
  223|  2.17k|			count++;
  224|  2.19k|	}
  225|       |
  226|  2.15k|	return count;
  227|  2.15k|}
LUKS2_get_segment_id_by_flag:
  557|  2.15k|{
  558|  2.15k|	json_object *jobj_flags, *jobj_segments = LUKS2_get_segments_jobj(hdr);
  559|       |
  560|  2.15k|	if (!flag || !jobj_segments)
  ------------------
  |  Branch (560:6): [True: 0, False: 2.15k]
  |  Branch (560:15): [True: 0, False: 2.15k]
  ------------------
  561|      0|		return -ENOENT;
  562|       |
  563|  2.19k|	json_object_object_foreach(jobj_segments, key, value) {
  ------------------
  |  |  494|  2.15k|	char *key = NULL;                                                        \
  |  |  495|  2.15k|	struct json_object *val __attribute__((__unused__)) = NULL;              \
  |  |  496|  2.15k|	for (struct lh_entry *entry##key = lh_table_head(json_object_get_object(obj)),    \
  |  |  497|  2.15k|	                     *entry_next##key = NULL;                            \
  |  |  498|  4.35k|	     ({                                                                  \
  |  |  ------------------
  |  |  |  Branch (498:7): [True: 2.19k, False: 2.15k]
  |  |  ------------------
  |  |  499|  4.35k|		     if (entry##key)                                             \
  |  |  ------------------
  |  |  |  Branch (499:12): [True: 2.19k, False: 2.15k]
  |  |  ------------------
  |  |  500|  4.35k|		     {                                                           \
  |  |  501|  2.19k|			     key = (char *)lh_entry_k(entry##key);               \
  |  |  502|  2.19k|			     val = (struct json_object *)lh_entry_v(entry##key); \
  |  |  503|  2.19k|			     entry_next##key = lh_entry_next(entry##key);        \
  |  |  504|  2.19k|		     };                                                          \
  |  |  505|  4.35k|		     entry##key;                                                 \
  |  |  506|  4.35k|	     });                                                                 \
  |  |  507|  2.19k|	     entry##key = entry_next##key)
  ------------------
  564|  2.19k|		if (!json_object_object_get_ex(value, "flags", &jobj_flags))
  ------------------
  |  Branch (564:7): [True: 317, False: 1.88k]
  ------------------
  565|    317|			continue;
  566|  1.88k|		if (LUKS2_array_jobj(jobj_flags, flag))
  ------------------
  |  Branch (566:7): [True: 1, False: 1.87k]
  ------------------
  567|      1|			return atoi(key);
  568|  1.88k|	}
  569|       |
  570|  2.15k|	return -ENOENT;
  571|  2.15k|}
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.4k|{
  166|  15.4k|	json_object *jobj;
  167|       |
  168|  15.4k|	if (!jobj_segment || !(json_object_object_get_ex(jobj_segment, "flags", &jobj)))
  ------------------
  |  Branch (168:6): [True: 0, False: 15.4k]
  |  Branch (168:23): [True: 1.81k, False: 13.6k]
  ------------------
  169|  1.81k|		return NULL;
  170|  13.6k|	return jobj;
  171|  15.4k|}

crypt_random_init:
  133|  10.3k|{
  134|  10.3k|	if (random_initialised)
  ------------------
  |  Branch (134:6): [True: 10.3k, False: 1]
  ------------------
  135|  10.3k|		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.31k|{
  163|  4.31k|	int status, rng_type;
  164|       |
  165|  4.31k|	switch(quality) {
  166|      0|	case CRYPT_RND_NORMAL:
  ------------------
  |  Branch (166:2): [True: 0, False: 4.31k]
  ------------------
  167|      0|		status = _get_urandom(buf, len);
  168|      0|		break;
  169|  4.31k|	case CRYPT_RND_SALT:
  ------------------
  |  Branch (169:2): [True: 4.31k, False: 0]
  ------------------
  170|  4.31k|		if (crypt_fips_mode())
  ------------------
  |  Branch (170:7): [True: 0, False: 4.31k]
  ------------------
  171|      0|			status = crypt_backend_rng(buf, len, quality, 1);
  172|  4.31k|		else
  173|  4.31k|			status = _get_urandom(buf, len);
  174|  4.31k|		break;
  175|      0|	case CRYPT_RND_KEY:
  ------------------
  |  Branch (175:2): [True: 0, False: 4.31k]
  ------------------
  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.31k]
  ------------------
  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.31k|	}
  197|       |
  198|  4.31k|	if (status)
  ------------------
  |  Branch (198:6): [True: 0, False: 4.31k]
  ------------------
  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.31k|	return status;
  202|  4.31k|}
crypt_random_default_key_rng:
  220|  6.08k|{
  221|       |	/* coverity[pointless_string_compare] */
  222|  6.08k|	if (!strcmp(DEFAULT_RNG, RANDOM_DEVICE))
  ------------------
  |  |   77|  6.08k|#define DEFAULT_RNG "/dev/urandom"
  ------------------
              	if (!strcmp(DEFAULT_RNG, RANDOM_DEVICE))
  ------------------
  |  |   21|  6.08k|#define RANDOM_DEVICE	"/dev/random"
  ------------------
  |  Branch (222:6): [True: 0, False: 6.08k]
  ------------------
  223|      0|		return CRYPT_RNG_RANDOM;
  ------------------
  |  |  228|      0|#define CRYPT_RNG_RANDOM  1
  ------------------
  224|       |
  225|       |	/* coverity[pointless_string_compare] */
  226|  6.08k|	if (!strcmp(DEFAULT_RNG, URANDOM_DEVICE))
  ------------------
  |  |   77|  6.08k|#define DEFAULT_RNG "/dev/urandom"
  ------------------
              	if (!strcmp(DEFAULT_RNG, URANDOM_DEVICE))
  ------------------
  |  |   18|  6.08k|#define URANDOM_DEVICE	"/dev/urandom"
  ------------------
  |  Branch (226:6): [True: 6.08k, False: 0]
  ------------------
  227|  6.08k|		return CRYPT_RNG_URANDOM;
  ------------------
  |  |  226|  6.08k|#define CRYPT_RNG_URANDOM 0
  ------------------
  228|       |
  229|       |	/* RNG misconfiguration is fatal */
  230|      0|	abort();
  231|  6.08k|}
random.c:_get_urandom:
   32|  4.31k|{
   33|  4.31k|	int r;
   34|  4.31k|	size_t old_len = len;
   35|  4.31k|	char *old_buf = buf;
   36|       |
   37|  4.31k|	assert(urandom_fd != -1);
  ------------------
  |  Branch (37:2): [True: 0, False: 4.31k]
  |  Branch (37:2): [True: 4.31k, False: 0]
  ------------------
   38|       |
   39|  8.62k|	while (len) {
  ------------------
  |  Branch (39:9): [True: 4.31k, False: 4.31k]
  ------------------
   40|  4.31k|		r = read(urandom_fd, buf, len);
   41|  4.31k|		if (r == -1 && errno != EINTR)
  ------------------
  |  Branch (41:7): [True: 0, False: 4.31k]
  |  Branch (41:18): [True: 0, False: 0]
  ------------------
   42|      0|			return -EINVAL;
   43|  4.31k|		if (r > 0) {
  ------------------
  |  Branch (43:7): [True: 4.31k, False: 0]
  ------------------
   44|  4.31k|			len -= r;
   45|  4.31k|			buf += r;
   46|  4.31k|		}
   47|  4.31k|	}
   48|       |
   49|  4.31k|	assert(len == 0);
  ------------------
  |  Branch (49:2): [True: 0, False: 4.31k]
  |  Branch (49:2): [True: 4.31k, False: 0]
  ------------------
   50|  4.31k|	assert((size_t)(buf - old_buf) == old_len);
  ------------------
  |  Branch (50:2): [True: 0, False: 4.31k]
  |  Branch (50:2): [True: 4.31k, False: 0]
  ------------------
   51|       |
   52|  4.31k|	return 0;
   53|  4.31k|}

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

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

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

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

device_sync:
  268|  2.15k|{
  269|  2.15k|	if (!device || device->dev_fd < 0)
  ------------------
  |  Branch (269:6): [True: 0, False: 2.15k]
  |  Branch (269:17): [True: 0, False: 2.15k]
  ------------------
  270|      0|		return;
  271|       |
  272|  2.15k|	if (fsync(device->dev_fd) == -1)
  ------------------
  |  Branch (272:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|}
device_open:
  325|  6.08k|{
  326|  6.08k|	if (!device)
  ------------------
  |  Branch (326:6): [True: 0, False: 6.08k]
  ------------------
  327|      0|		return -EINVAL;
  328|       |
  329|  6.08k|	assert(!device_locked(device->lh));
  ------------------
  |  Branch (329:2): [True: 0, False: 6.08k]
  |  Branch (329:2): [True: 6.08k, False: 0]
  ------------------
  330|  6.08k|	return device_open_internal(cd, device, flags);
  331|  6.08k|}
device_open_locked:
  382|  41.7k|{
  383|  41.7k|	if (!device)
  ------------------
  |  Branch (383:6): [True: 0, False: 41.7k]
  ------------------
  384|      0|		return -EINVAL;
  385|       |
  386|  41.7k|	assert(!crypt_metadata_locking_enabled() || device_locked(device->lh));
  ------------------
  |  Branch (386:2): [True: 41.7k, False: 0]
  |  Branch (386:2): [True: 0, False: 0]
  |  Branch (386:2): [True: 0, False: 41.7k]
  |  Branch (386:2): [True: 41.7k, False: 0]
  ------------------
  387|  41.7k|	return device_open_internal(cd, device, flags);
  388|  41.7k|}
device_alloc_no_check:
  392|  6.08k|{
  393|  6.08k|	struct device *dev;
  394|       |
  395|  6.08k|	if (!path) {
  ------------------
  |  Branch (395:6): [True: 0, False: 6.08k]
  ------------------
  396|      0|		*device = NULL;
  397|      0|		return 0;
  398|      0|	}
  399|       |
  400|  6.08k|	dev = malloc(sizeof(struct device));
  401|  6.08k|	if (!dev)
  ------------------
  |  Branch (401:6): [True: 0, False: 6.08k]
  ------------------
  402|      0|		return -ENOMEM;
  403|       |
  404|  6.08k|	memset(dev, 0, sizeof(struct device));
  405|  6.08k|	dev->path = strdup(path);
  406|  6.08k|	if (!dev->path) {
  ------------------
  |  Branch (406:6): [True: 0, False: 6.08k]
  ------------------
  407|      0|		free(dev);
  408|      0|		return -ENOMEM;
  409|      0|	}
  410|  6.08k|	dev->loop_fd = -1;
  411|  6.08k|	dev->ro_dev_fd = -1;
  412|  6.08k|	dev->dev_fd = -1;
  413|  6.08k|	dev->dev_fd_excl = -1;
  414|  6.08k|	dev->o_direct = 1;
  415|       |
  416|  6.08k|	*device = dev;
  417|  6.08k|	return 0;
  418|  6.08k|}
device_alloc:
  421|  6.08k|{
  422|  6.08k|	struct device *dev;
  423|  6.08k|	int r;
  424|       |
  425|  6.08k|	r = device_alloc_no_check(&dev, path);
  426|  6.08k|	if (r < 0)
  ------------------
  |  Branch (426:6): [True: 0, False: 6.08k]
  ------------------
  427|      0|		return r;
  428|       |
  429|  6.08k|	if (dev) {
  ------------------
  |  Branch (429:6): [True: 6.08k, False: 0]
  ------------------
  430|  6.08k|		r = device_ready(cd, dev);
  431|  6.08k|		if (!r) {
  ------------------
  |  Branch (431:7): [True: 0, False: 6.08k]
  ------------------
  432|      0|			dev->init_done = 1;
  433|  6.08k|		} else if (r == -ENOTBLK) {
  ------------------
  |  Branch (433:14): [True: 6.08k, False: 0]
  ------------------
  434|       |			/* alloc loop later */
  435|  6.08k|		} 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|  6.08k|	}
  441|       |
  442|  6.08k|	*device = dev;
  443|  6.08k|	return 0;
  444|  6.08k|}
device_free:
  447|  12.1k|{
  448|  12.1k|	if (!device)
  ------------------
  |  Branch (448:6): [True: 6.08k, False: 6.08k]
  ------------------
  449|  6.08k|		return;
  450|       |
  451|  6.08k|	device_close(cd, device);
  452|       |
  453|  6.08k|	if (device->dev_fd_excl != -1) {
  ------------------
  |  Branch (453:6): [True: 0, False: 6.08k]
  ------------------
  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|  6.08k|	if (device->loop_fd != -1) {
  ------------------
  |  Branch (458:6): [True: 0, False: 6.08k]
  ------------------
  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|  6.08k|	assert(!device_locked(device->lh));
  ------------------
  |  Branch (463:2): [True: 0, False: 6.08k]
  |  Branch (463:2): [True: 6.08k, False: 0]
  ------------------
  464|       |
  465|  6.08k|	free(device->file_path);
  466|  6.08k|	free(device->path);
  467|  6.08k|	free(device);
  468|  6.08k|}
device_path:
  481|   142k|{
  482|   142k|	if (!device)
  ------------------
  |  Branch (482:6): [True: 0, False: 142k]
  ------------------
  483|      0|		return NULL;
  484|       |
  485|   142k|	if (device->file_path)
  ------------------
  |  Branch (485:6): [True: 0, False: 142k]
  ------------------
  486|      0|		return device->file_path;
  487|       |
  488|   142k|	return device->path;
  489|   142k|}
device_block_size:
  559|  58.0k|{
  560|  58.0k|	int fd;
  561|       |
  562|  58.0k|	if (!device)
  ------------------
  |  Branch (562:6): [True: 0, False: 58.0k]
  ------------------
  563|      0|		return 0;
  564|       |
  565|  58.0k|	if (device->block_size)
  ------------------
  |  Branch (565:6): [True: 58.0k, False: 0]
  ------------------
  566|  58.0k|		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|  58.0k|}
device_size:
  641|  6.18k|{
  642|  6.18k|	struct stat st;
  643|  6.18k|	int devfd, r = -EINVAL;
  644|       |
  645|  6.18k|	if (!device)
  ------------------
  |  Branch (645:6): [True: 0, False: 6.18k]
  ------------------
  646|      0|		return -EINVAL;
  647|       |
  648|  6.18k|	devfd = open(device->path, O_RDONLY);
  649|  6.18k|	if (devfd == -1)
  ------------------
  |  Branch (649:6): [True: 0, False: 6.18k]
  ------------------
  650|      0|		return -EINVAL;
  651|       |
  652|  6.18k|	if (fstat(devfd, &st) < 0)
  ------------------
  |  Branch (652:6): [True: 0, False: 6.18k]
  ------------------
  653|      0|		goto out;
  654|       |
  655|  6.18k|	if (S_ISREG(st.st_mode)) {
  ------------------
  |  Branch (655:6): [True: 6.18k, False: 0]
  ------------------
  656|  6.18k|		*size = (uint64_t)st.st_size;
  657|  6.18k|		r = 0;
  658|  6.18k|	} else if (ioctl(devfd, BLKGETSIZE64, size) >= 0)
  ------------------
  |  Branch (658:13): [True: 0, False: 0]
  ------------------
  659|      0|		r = 0;
  660|  6.18k|out:
  661|  6.18k|	close(devfd);
  662|  6.18k|	return r;
  663|  6.18k|}
device_check_size:
  692|  6.18k|{
  693|  6.18k|	int r;
  694|  6.18k|	uint64_t dev_size;
  695|       |
  696|  6.18k|	if (device_size(device, &dev_size)) {
  ------------------
  |  Branch (696:6): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|	log_dbg(cd, "Device size %" PRIu64 ", offset %" PRIu64 ".", dev_size, req_offset);
  ------------------
  |  |  186|  6.18k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  6.18k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  702|       |
  703|  6.18k|	if (req_offset > dev_size) {
  ------------------
  |  Branch (703:6): [True: 1, False: 6.18k]
  ------------------
  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|  6.18k|	return 0;
  723|  6.18k|}
device_direct_io:
  932|  6.08k|{
  933|  6.08k|	return device ? device->o_direct : 0;
  ------------------
  |  Branch (933:9): [True: 6.08k, False: 0]
  ------------------
  934|  6.08k|}
device_alignment:
 1046|  58.0k|{
 1047|  58.0k|	int devfd;
 1048|       |
 1049|  58.0k|	if (!device)
  ------------------
  |  Branch (1049:6): [True: 0, False: 58.0k]
  ------------------
 1050|      0|		return 0;
 1051|       |
 1052|  58.0k|	if (!device->alignment) {
  ------------------
  |  Branch (1052:6): [True: 0, False: 58.0k]
  ------------------
 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|  58.0k|	return device->alignment;
 1061|  58.0k|}
device_set_lock_handle:
 1064|  16.4k|{
 1065|  16.4k|	if (device)
  ------------------
  |  Branch (1065:6): [True: 16.4k, False: 0]
  ------------------
 1066|  16.4k|		device->lh = h;
 1067|  16.4k|}
device_get_lock_handle:
 1070|  16.4k|{
 1071|  16.4k|	return device ? device->lh : NULL;
  ------------------
  |  Branch (1071:9): [True: 16.4k, False: 0]
  ------------------
 1072|  16.4k|}
device_read_lock:
 1075|  6.08k|{
 1076|  6.08k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1076:6): [True: 0, False: 6.08k]
  |  Branch (1076:17): [True: 0, False: 6.08k]
  ------------------
 1077|      0|		return 0;
 1078|       |
 1079|  6.08k|	if (device_read_lock_internal(cd, device))
  ------------------
  |  Branch (1079:6): [True: 0, False: 6.08k]
  ------------------
 1080|      0|		return -EBUSY;
 1081|       |
 1082|  6.08k|	return 0;
 1083|  6.08k|}
device_write_lock:
 1086|  2.15k|{
 1087|  2.15k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1087:6): [True: 0, False: 2.15k]
  |  Branch (1087:17): [True: 0, False: 2.15k]
  ------------------
 1088|      0|		return 0;
 1089|       |
 1090|  2.15k|	assert(!device_locked(device->lh) || !device_locked_readonly(device->lh));
  ------------------
  |  Branch (1090:2): [True: 2.15k, False: 0]
  |  Branch (1090:2): [True: 0, False: 0]
  |  Branch (1090:2): [True: 2.15k, False: 0]
  |  Branch (1090:2): [True: 0, False: 0]
  ------------------
 1091|       |
 1092|  2.15k|	return device_write_lock_internal(cd, device);
 1093|  2.15k|}
device_read_unlock:
 1096|  6.08k|{
 1097|  6.08k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1097:6): [True: 0, False: 6.08k]
  |  Branch (1097:17): [True: 0, False: 6.08k]
  ------------------
 1098|      0|		return;
 1099|       |
 1100|  6.08k|	assert(device_locked(device->lh));
  ------------------
  |  Branch (1100:2): [True: 0, False: 6.08k]
  |  Branch (1100:2): [True: 6.08k, False: 0]
  ------------------
 1101|       |
 1102|  6.08k|	device_unlock_internal(cd, device);
 1103|  6.08k|}
device_write_unlock:
 1106|  2.15k|{
 1107|  2.15k|	if (!device || !crypt_metadata_locking_enabled())
  ------------------
  |  Branch (1107:6): [True: 0, False: 2.15k]
  |  Branch (1107:17): [True: 0, False: 2.15k]
  ------------------
 1108|      0|		return;
 1109|       |
 1110|  2.15k|	assert(device_locked(device->lh) && !device_locked_readonly(device->lh));
  ------------------
  |  Branch (1110:2): [True: 0, False: 2.15k]
  |  Branch (1110:2): [True: 0, False: 0]
  |  Branch (1110:2): [True: 2.15k, False: 0]
  |  Branch (1110:2): [True: 2.15k, False: 0]
  ------------------
 1111|       |
 1112|  2.15k|	device_unlock_internal(cd, device);
 1113|  2.15k|}
device_close:
 1121|  6.08k|{
 1122|  6.08k|	if (!device)
  ------------------
  |  Branch (1122:6): [True: 0, False: 6.08k]
  ------------------
 1123|      0|		return;
 1124|       |
 1125|  6.08k|	if (device->ro_dev_fd != -1) {
  ------------------
  |  Branch (1125:6): [True: 6.08k, False: 0]
  ------------------
 1126|  6.08k|		log_dbg(cd, "Closing read only fd for %s.", device_path(device));
  ------------------
  |  |  186|  6.08k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  6.08k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1127|  6.08k|		if (close(device->ro_dev_fd))
  ------------------
  |  Branch (1127:7): [True: 0, False: 6.08k]
  ------------------
 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|  6.08k|		device->ro_dev_fd = -1;
 1130|  6.08k|	}
 1131|       |
 1132|  6.08k|	if (device->dev_fd != -1) {
  ------------------
  |  Branch (1132:6): [True: 2.15k, False: 3.93k]
  ------------------
 1133|  2.15k|		log_dbg(cd, "Closing read write fd for %s.", device_path(device));
  ------------------
  |  |  186|  2.15k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.15k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
 1134|  2.15k|		if (close(device->dev_fd))
  ------------------
  |  Branch (1134:7): [True: 0, False: 2.15k]
  ------------------
 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.15k|		device->dev_fd = -1;
 1137|  2.15k|	}
 1138|  6.08k|}
device_set_block_size:
 1141|  2.15k|{
 1142|  2.15k|	if (!device)
  ------------------
  |  Branch (1142:6): [True: 0, False: 2.15k]
  ------------------
 1143|      0|		return;
 1144|       |
 1145|  2.15k|	device->loop_block_size = size;
 1146|  2.15k|}
utils_device.c:device_open_internal:
  286|  47.8k|{
  287|  47.8k|	int access, devfd;
  288|       |
  289|  47.8k|	if (device->o_direct)
  ------------------
  |  Branch (289:6): [True: 47.8k, False: 0]
  ------------------
  290|  47.8k|		flags |= O_DIRECT;
  291|       |
  292|  47.8k|	access = flags & O_ACCMODE;
  293|  47.8k|	if (access == O_WRONLY)
  ------------------
  |  Branch (293:6): [True: 0, False: 47.8k]
  ------------------
  294|      0|		access = O_RDWR;
  295|       |
  296|  47.8k|	if (access == O_RDONLY && device->ro_dev_fd >= 0) {
  ------------------
  |  Branch (296:6): [True: 43.4k, False: 4.31k]
  |  Branch (296:28): [True: 37.4k, False: 6.08k]
  ------------------
  297|  37.4k|		log_dbg(cd, "Reusing open r%c fd on device %s", 'o', device_path(device));
  ------------------
  |  |  186|  37.4k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  37.4k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  298|  37.4k|		return device->ro_dev_fd;
  299|  37.4k|	} else if (access == O_RDWR && device->dev_fd >= 0) {
  ------------------
  |  Branch (299:13): [True: 4.31k, False: 6.08k]
  |  Branch (299:33): [True: 0, False: 4.31k]
  ------------------
  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.3k|	if (device_locked(device->lh))
  ------------------
  |  Branch (304:6): [True: 4.31k, False: 6.08k]
  ------------------
  305|  4.31k|		devfd = _open_locked(cd, device, flags);
  306|  6.08k|	else
  307|  6.08k|		devfd = open(device_path(device), flags);
  308|       |
  309|  10.3k|	if (devfd < 0) {
  ------------------
  |  Branch (309:6): [True: 2.15k, False: 8.24k]
  ------------------
  310|  2.15k|		log_dbg(cd, "Cannot open device %s%s.",
  ------------------
  |  |  186|  4.31k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.15k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 2.15k, False: 0]
  |  |  ------------------
  ------------------
  311|  2.15k|			device_path(device),
  312|  2.15k|			access != O_RDONLY ? " for write" : "");
  313|  2.15k|		return devfd;
  314|  2.15k|	}
  315|       |
  316|  8.24k|	if (access == O_RDONLY)
  ------------------
  |  Branch (316:6): [True: 6.08k, False: 2.15k]
  ------------------
  317|  6.08k|		device->ro_dev_fd = devfd;
  318|  2.15k|	else
  319|  2.15k|		device->dev_fd = devfd;
  320|       |
  321|  8.24k|	return devfd;
  322|  10.3k|}
utils_device.c:_open_locked:
  237|  4.31k|{
  238|  4.31k|	int fd;
  239|       |
  240|  4.31k|	if (!device)
  ------------------
  |  Branch (240:6): [True: 0, False: 4.31k]
  ------------------
  241|      0|		return -EINVAL;
  242|       |
  243|  4.31k|	log_dbg(cd, "Opening locked device %s", device_path(device));
  ------------------
  |  |  186|  4.31k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  4.31k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  244|       |
  245|  4.31k|	if ((flags & O_ACCMODE) != O_RDONLY && device_locked_readonly(device->lh)) {
  ------------------
  |  Branch (245:6): [True: 4.31k, False: 0]
  |  Branch (245:41): [True: 2.15k, False: 2.15k]
  ------------------
  246|  2.15k|		log_dbg(cd, "Cannot open locked device %s in write mode. Read lock held.", device_path(device));
  ------------------
  |  |  186|  2.15k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.15k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  247|  2.15k|		return -EAGAIN;
  248|  2.15k|	}
  249|       |
  250|  2.15k|	fd = open(device_path(device), flags);
  251|  2.15k|	if (fd < 0)
  ------------------
  |  Branch (251:6): [True: 0, False: 2.15k]
  ------------------
  252|      0|		return -errno;
  253|       |
  254|  2.15k|	if (device_locked_verify(cd, fd, device->lh)) {
  ------------------
  |  Branch (254:6): [True: 0, False: 2.15k]
  ------------------
  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|  2.15k|	return fd;
  262|  2.15k|}
utils_device.c:device_ready:
  177|  6.08k|{
  178|  6.08k|	int devfd = -1, r = 0;
  179|  6.08k|	struct stat st;
  180|  6.08k|	size_t tmp_size;
  181|       |
  182|  6.08k|	if (!device)
  ------------------
  |  Branch (182:6): [True: 0, False: 6.08k]
  ------------------
  183|      0|		return -EINVAL;
  184|       |
  185|  6.08k|	if (device->o_direct) {
  ------------------
  |  Branch (185:6): [True: 6.08k, False: 0]
  ------------------
  186|  6.08k|		log_dbg(cd, "Trying to open device %s with direct-io.",
  ------------------
  |  |  186|  6.08k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  6.08k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  187|  6.08k|			device_path(device));
  188|  6.08k|		device->o_direct = 0;
  189|  6.08k|		devfd = open(device_path(device), O_RDONLY | O_DIRECT);
  190|  6.08k|		if (devfd >= 0) {
  ------------------
  |  Branch (190:7): [True: 6.08k, False: 0]
  ------------------
  191|  6.08k|			if (device_read_test(cd, devfd) == 0) {
  ------------------
  |  Branch (191:8): [True: 6.08k, False: 0]
  ------------------
  192|  6.08k|				device->o_direct = 1;
  193|  6.08k|			} else {
  194|      0|				close(devfd);
  195|      0|				devfd = -1;
  196|      0|			}
  197|  6.08k|		}
  198|  6.08k|	}
  199|       |
  200|  6.08k|	if (devfd < 0) {
  ------------------
  |  Branch (200:6): [True: 0, False: 6.08k]
  ------------------
  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|  6.08k|	if (devfd < 0) {
  ------------------
  |  Branch (206:6): [True: 0, False: 6.08k]
  ------------------
  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|  6.08k|	if (fstat(devfd, &st) < 0)
  ------------------
  |  Branch (212:6): [True: 0, False: 6.08k]
  ------------------
  213|      0|		r = -EINVAL;
  214|  6.08k|	else if (!S_ISBLK(st.st_mode))
  ------------------
  |  Branch (214:11): [True: 6.08k, False: 0]
  ------------------
  215|  6.08k|		r = S_ISREG(st.st_mode) ? -ENOTBLK : -EINVAL;
  ------------------
  |  Branch (215:7): [True: 6.08k, False: 0]
  ------------------
  216|  6.08k|	if (r == -EINVAL) {
  ------------------
  |  Branch (216:6): [True: 0, False: 6.08k]
  ------------------
  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|  6.08k|	tmp_size = device_alignment_fd(devfd);
  225|  6.08k|	if (tmp_size > device->alignment)
  ------------------
  |  Branch (225:6): [True: 6.08k, False: 0]
  ------------------
  226|  6.08k|		device->alignment = tmp_size;
  227|       |
  228|  6.08k|	tmp_size = device_block_size_fd(devfd, NULL);
  229|  6.08k|	if (tmp_size > device->block_size)
  ------------------
  |  Branch (229:6): [True: 6.08k, False: 0]
  ------------------
  230|  6.08k|		device->block_size = tmp_size;
  231|       |
  232|  6.08k|	close(devfd);
  233|  6.08k|	return r;
  234|  6.08k|}
utils_device.c:device_read_test:
  131|  6.08k|{
  132|  6.08k|	char buffer[512];
  133|  6.08k|	int r;
  134|  6.08k|	size_t minsize = 0, blocksize, alignment;
  135|  6.08k|	struct stat st;
  136|       |
  137|       |	/* skip check for block devices, direct-io must work there  */
  138|  6.08k|	if (fstat(devfd, &st) < 0)
  ------------------
  |  Branch (138:6): [True: 0, False: 6.08k]
  ------------------
  139|      0|		return -EINVAL;
  140|       |
  141|  6.08k|	if (S_ISBLK(st.st_mode))
  ------------------
  |  Branch (141:6): [True: 0, False: 6.08k]
  ------------------
  142|      0|		return 0;
  143|       |
  144|  6.08k|	blocksize = device_block_size_fd(devfd, &minsize);
  145|  6.08k|	alignment = device_alignment_fd(devfd);
  146|       |
  147|  6.08k|	if (!blocksize || !alignment)
  ------------------
  |  Branch (147:6): [True: 0, False: 6.08k]
  |  Branch (147:20): [True: 0, False: 6.08k]
  ------------------
  148|      0|		return -EINVAL;
  149|       |
  150|  6.08k|	if (minsize == 0)
  ------------------
  |  Branch (150:6): [True: 0, False: 6.08k]
  ------------------
  151|      0|		return 0;
  152|       |
  153|  6.08k|	if (minsize > sizeof(buffer))
  ------------------
  |  Branch (153:6): [True: 6.08k, False: 0]
  ------------------
  154|  6.08k|		minsize = sizeof(buffer);
  155|       |
  156|  6.08k|	if (read_lseek_blockwise(devfd, blocksize, alignment, buffer, minsize, 0) == (ssize_t)minsize) {
  ------------------
  |  Branch (156:6): [True: 6.08k, False: 0]
  ------------------
  157|  6.08k|		log_dbg(cd, "Direct-io read works.");
  ------------------
  |  |  186|  6.08k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  6.08k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  158|  6.08k|		r = 0;
  159|  6.08k|	} 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|  6.08k|	crypt_safe_memzero(buffer, sizeof(buffer));
  165|  6.08k|	return r;
  166|  6.08k|}
utils_device.c:device_block_size_fd:
   67|  12.1k|{
   68|  12.1k|	struct stat st;
   69|  12.1k|	size_t bsize;
   70|  12.1k|	int arg;
   71|       |
   72|  12.1k|	if (fstat(fd, &st) < 0)
  ------------------
  |  Branch (72:6): [True: 0, False: 12.1k]
  ------------------
   73|      0|		return 0;
   74|       |
   75|  12.1k|	if (S_ISREG(st.st_mode))
  ------------------
  |  Branch (75:6): [True: 12.1k, False: 0]
  ------------------
   76|  12.1k|		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|  12.1k|	if (!min_size)
  ------------------
  |  Branch (84:6): [True: 6.08k, False: 6.08k]
  ------------------
   85|  6.08k|		return bsize;
   86|       |
   87|  6.08k|	if (S_ISREG(st.st_mode)) {
  ------------------
  |  Branch (87:6): [True: 6.08k, False: 0]
  ------------------
   88|       |		/* file can be empty as well */
   89|  6.08k|		if (st.st_size > (ssize_t)bsize)
  ------------------
  |  Branch (89:7): [True: 6.08k, False: 0]
  ------------------
   90|  6.08k|			*min_size = bsize;
   91|      0|		else
   92|      0|			*min_size = st.st_size;
   93|  6.08k|	} else {
   94|       |		/* block device must have at least one block */
   95|      0|		*min_size = bsize;
   96|      0|	}
   97|       |
   98|  6.08k|	return bsize;
   99|  12.1k|}
utils_device.c:device_fs_block_size_fd:
   50|  12.1k|{
   51|  12.1k|	size_t max_size = MAX_SECTOR_SIZE;
  ------------------
  |  |   40|  12.1k|#define MAX_SECTOR_SIZE 4096 /* min page size among all platforms */
  ------------------
   52|       |
   53|  12.1k|#if HAVE_SYS_STATVFS_H
   54|  12.1k|	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|  12.1k|	if (!fstatvfs(fd, &buf) && buf.f_bsize && buf.f_bsize <= max_size)
  ------------------
  |  Branch (60:6): [True: 12.1k, False: 0]
  |  Branch (60:29): [True: 12.1k, False: 0]
  |  Branch (60:44): [True: 12.1k, False: 0]
  ------------------
   61|  12.1k|		return (size_t)buf.f_bsize;
   62|      0|#endif
   63|      0|	return max_size;
   64|  12.1k|}
utils_device.c:device_alignment_fd:
  119|  12.1k|{
  120|  12.1k|	long alignment = DEFAULT_MEM_ALIGNMENT;
  ------------------
  |  |   49|  12.1k|#define DEFAULT_MEM_ALIGNMENT	4096
  ------------------
  121|       |
  122|  12.1k|#ifdef _PC_REC_XFER_ALIGN
  123|  12.1k|	alignment = fpathconf(devfd, _PC_REC_XFER_ALIGN);
  124|  12.1k|	if (alignment < 0)
  ------------------
  |  Branch (124:6): [True: 0, False: 12.1k]
  ------------------
  125|      0|		alignment = DEFAULT_MEM_ALIGNMENT;
  ------------------
  |  |   49|      0|#define DEFAULT_MEM_ALIGNMENT	4096
  ------------------
  126|  12.1k|#endif
  127|  12.1k|	return (size_t)alignment;
  128|  12.1k|}

device_locked:
  249|  82.9k|{
  250|  82.9k|	return (h && (h->type == DEV_LOCK_READ || h->type == DEV_LOCK_WRITE));
  ------------------
  |  Branch (250:10): [True: 54.2k, False: 28.6k]
  |  Branch (250:16): [True: 39.8k, False: 14.4k]
  |  Branch (250:44): [True: 14.4k, False: 0]
  ------------------
  251|  82.9k|}
device_locked_readonly:
  254|  14.7k|{
  255|  14.7k|	return (h && h->type == DEV_LOCK_READ);
  ------------------
  |  Branch (255:10): [True: 14.7k, False: 0]
  |  Branch (255:15): [True: 8.23k, False: 6.46k]
  ------------------
  256|  14.7k|}
device_read_lock_internal:
  345|  6.08k|{
  346|  6.08k|	int r;
  347|  6.08k|	struct crypt_lock_handle *h;
  348|       |
  349|  6.08k|	if (!device)
  ------------------
  |  Branch (349:6): [True: 0, False: 6.08k]
  ------------------
  350|      0|		return -EINVAL;
  351|       |
  352|  6.08k|	h = device_get_lock_handle(device);
  353|       |
  354|  6.08k|	if (device_locked(h)) {
  ------------------
  |  Branch (354:6): [True: 0, False: 6.08k]
  ------------------
  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|  6.08k|	log_dbg(cd, "Acquiring read lock for device %s.", device_path(device));
  ------------------
  |  |  186|  6.08k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  6.08k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  361|       |
  362|  6.08k|	r = acquire_and_verify(cd, device, NULL, LOCK_SH, &h);
  363|  6.08k|	if (r < 0)
  ------------------
  |  Branch (363:6): [True: 0, False: 6.08k]
  ------------------
  364|      0|		return r;
  365|       |
  366|  6.08k|	h->type = DEV_LOCK_READ;
  367|  6.08k|	h->refcnt = 1;
  368|  6.08k|	device_set_lock_handle(device, h);
  369|       |
  370|  6.08k|	log_dbg(cd, "Device %s READ lock taken.", device_path(device));
  ------------------
  |  |  186|  6.08k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  6.08k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  371|       |
  372|  6.08k|	return 0;
  373|  6.08k|}
device_write_lock_internal:
  376|  2.15k|{
  377|  2.15k|	int r;
  378|  2.15k|	struct crypt_lock_handle *h;
  379|       |
  380|  2.15k|	if (!device)
  ------------------
  |  Branch (380:6): [True: 0, False: 2.15k]
  ------------------
  381|      0|		return -EINVAL;
  382|       |
  383|  2.15k|	h = device_get_lock_handle(device);
  384|       |
  385|  2.15k|	if (device_locked(h)) {
  ------------------
  |  Branch (385:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	log_dbg(cd, "Acquiring write lock for device %s.", device_path(device));
  ------------------
  |  |  186|  2.15k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.15k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  391|       |
  392|  2.15k|	r = acquire_and_verify(cd, device, NULL, LOCK_EX, &h);
  393|  2.15k|	if (r < 0)
  ------------------
  |  Branch (393:6): [True: 0, False: 2.15k]
  ------------------
  394|      0|		return r;
  395|       |
  396|  2.15k|	h->type = DEV_LOCK_WRITE;
  397|  2.15k|	h->refcnt = 1;
  398|  2.15k|	device_set_lock_handle(device, h);
  399|       |
  400|  2.15k|	log_dbg(cd, "Device %s WRITE lock taken.", device_path(device));
  ------------------
  |  |  186|  2.15k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.15k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  401|       |
  402|  2.15k|	return 1;
  403|  2.15k|}
device_unlock_internal:
  452|  8.23k|{
  453|  8.23k|	bool readonly;
  454|  8.23k|	struct crypt_lock_handle *h = device_get_lock_handle(device);
  455|  8.23k|	unsigned u = device_lock_dec(h);
  456|       |
  457|  8.23k|	if (u)
  ------------------
  |  Branch (457:6): [True: 0, False: 8.23k]
  ------------------
  458|      0|		return;
  459|       |
  460|  8.23k|	readonly = device_locked_readonly(h);
  461|       |
  462|  8.23k|	unlock_internal(cd, h);
  463|       |
  464|  8.23k|	log_dbg(cd, "Device %s %s lock released.", device_path(device),
  ------------------
  |  |  186|  16.4k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  8.23k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 6.08k, False: 2.15k]
  |  |  ------------------
  ------------------
  465|  8.23k|		readonly ? "READ" : "WRITE");
  466|       |
  467|       |	device_set_lock_handle(device, NULL);
  468|  8.23k|}
device_locked_verify:
  471|  2.15k|{
  472|  2.15k|	char res[PATH_MAX];
  473|  2.15k|	struct stat dev_st, lck_st, st;
  474|       |
  475|  2.15k|	if (fstat(dev_fd, &dev_st) || fstat(h->flock_fd, &lck_st))
  ------------------
  |  Branch (475:6): [True: 0, False: 2.15k]
  |  Branch (475:32): [True: 0, False: 2.15k]
  ------------------
  476|      0|		return 1;
  477|       |
  478|       |	/* if device handle is regular file the handle must match the lock handle */
  479|  2.15k|	if (S_ISREG(dev_st.st_mode)) {
  ------------------
  |  Branch (479:6): [True: 2.15k, False: 0]
  ------------------
  480|  2.15k|		log_dbg(cd, "Verifying locked device handle (regular file)");
  ------------------
  |  |  186|  2.15k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.15k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  481|  2.15k|		if (!same_inode(dev_st, lck_st))
  ------------------
  |  |   27|  2.15k|	((buf1).st_ino == (buf2).st_ino && \
  |  |  ------------------
  |  |  |  Branch (27:3): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   28|  2.15k|	 (buf1).st_dev == (buf2).st_dev)
  |  |  ------------------
  |  |  |  Branch (28:3): [True: 2.15k, False: 0]
  |  |  ------------------
  ------------------
  482|      0|			return 1;
  483|  2.15k|	} 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|  2.15k|	return 0;
  493|  2.15k|}
utils_device_locking.c:acquire_and_verify:
  297|  8.23k|{
  298|  8.23k|	int r;
  299|  8.23k|	struct crypt_lock_handle *h;
  300|       |
  301|  8.23k|	if (device && resource)
  ------------------
  |  Branch (301:6): [True: 8.23k, False: 0]
  |  Branch (301:16): [True: 0, False: 8.23k]
  ------------------
  302|      0|		return -EINVAL;
  303|       |
  304|  8.23k|	if (!(h = malloc(sizeof(*h))))
  ------------------
  |  Branch (304:6): [True: 0, False: 8.23k]
  ------------------
  305|      0|		return -ENOMEM;
  306|       |
  307|  8.23k|	do {
  308|  8.23k|		r = device ? acquire_lock_handle(cd, device, h) : acquire_lock_handle_by_name(cd, resource, h);
  ------------------
  |  Branch (308:7): [True: 8.23k, False: 0]
  ------------------
  309|  8.23k|		if (r < 0)
  ------------------
  |  Branch (309:7): [True: 0, False: 8.23k]
  ------------------
  310|      0|			break;
  311|       |
  312|  8.23k|		if (flock(h->flock_fd, flock_op)) {
  ------------------
  |  Branch (312:7): [True: 0, False: 8.23k]
  ------------------
  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.23k|		log_dbg(cd, "Verifying lock handle for %s.", device ? device_path(device) : resource);
  ------------------
  |  |  186|  16.4k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  8.23k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  |  |  |  Branch (186:57): [True: 8.23k, 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.23k|		r = verify_lock_handle(h);
  326|  8.23k|		if (r < 0) {
  ------------------
  |  Branch (326:7): [True: 0, False: 8.23k]
  ------------------
  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.23k|	} while (r == -EAGAIN);
  ------------------
  |  Branch (332:11): [True: 0, False: 8.23k]
  ------------------
  333|       |
  334|  8.23k|	if (r < 0) {
  ------------------
  |  Branch (334:6): [True: 0, False: 8.23k]
  ------------------
  335|      0|		free(h);
  336|      0|		return r;
  337|      0|	}
  338|       |
  339|  8.23k|	*lock = h;
  340|       |
  341|  8.23k|	return 0;
  342|  8.23k|}
utils_device_locking.c:acquire_lock_handle:
  133|  8.23k|{
  134|  8.23k|	char res[PATH_MAX];
  135|  8.23k|	int dev_fd, fd;
  136|  8.23k|	struct stat st;
  137|       |
  138|  8.23k|	assert(device);
  ------------------
  |  Branch (138:2): [True: 0, False: 8.23k]
  |  Branch (138:2): [True: 8.23k, False: 0]
  ------------------
  139|  8.23k|	assert(h);
  ------------------
  |  Branch (139:2): [True: 0, False: 8.23k]
  |  Branch (139:2): [True: 8.23k, False: 0]
  ------------------
  140|       |
  141|  8.23k|	dev_fd = open(device_path(device), O_RDONLY | O_NONBLOCK | O_CLOEXEC);
  142|  8.23k|	if (dev_fd < 0)
  ------------------
  |  Branch (142:6): [True: 0, False: 8.23k]
  ------------------
  143|      0|		return -EINVAL;
  144|       |
  145|  8.23k|	if (fstat(dev_fd, &st)) {
  ------------------
  |  Branch (145:6): [True: 0, False: 8.23k]
  ------------------
  146|      0|		close(dev_fd);
  147|      0|		return -EINVAL;
  148|      0|	}
  149|       |
  150|  8.23k|	if (S_ISBLK(st.st_mode)) {
  ------------------
  |  Branch (150:6): [True: 0, False: 8.23k]
  ------------------
  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.23k|	} else if (S_ISREG(st.st_mode)) {
  ------------------
  |  Branch (164:13): [True: 8.23k, False: 0]
  ------------------
  165|       |		/* workaround for nfsv4 */
  166|  8.23k|		fd = open(device_path(device), O_RDWR | O_NONBLOCK | O_CLOEXEC);
  167|  8.23k|		if (fd < 0)
  ------------------
  |  Branch (167:7): [True: 0, False: 8.23k]
  ------------------
  168|      0|			h->flock_fd = dev_fd;
  169|  8.23k|		else {
  170|  8.23k|			h->flock_fd = fd;
  171|  8.23k|			close(dev_fd);
  172|  8.23k|		}
  173|  8.23k|		h->mode = DEV_LOCK_FILE;
  174|  8.23k|	} else {
  175|       |		/* Wrong device type */
  176|      0|		close(dev_fd);
  177|      0|		return -EINVAL;
  178|      0|	}
  179|       |
  180|  8.23k|	return 0;
  181|  8.23k|}
utils_device_locking.c:release_lock_handle:
  213|  8.23k|{
  214|  8.23k|	char res[PATH_MAX];
  215|  8.23k|	struct stat buf_a, buf_b;
  216|       |
  217|  8.23k|	assert(h);
  ------------------
  |  Branch (217:2): [True: 0, False: 8.23k]
  |  Branch (217:2): [True: 8.23k, False: 0]
  ------------------
  218|       |
  219|  8.23k|	if ((h->mode == DEV_LOCK_NAME) && /* was it name lock */
  ------------------
  |  Branch (219:6): [True: 0, False: 8.23k]
  ------------------
  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.23k|	if ((h->mode == DEV_LOCK_BDEV) && /* was it block device */
  ------------------
  |  Branch (230:6): [True: 0, False: 8.23k]
  ------------------
  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.23k|	if (h->mode == DEV_LOCK_NAME)
  ------------------
  |  Branch (241:6): [True: 0, False: 8.23k]
  ------------------
  242|      0|		free(h->u.name.name);
  243|       |
  244|  8.23k|	if (close(h->flock_fd))
  ------------------
  |  Branch (244:6): [True: 0, False: 8.23k]
  ------------------
  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.23k|}
utils_device_locking.c:verify_lock_handle:
  259|  8.23k|{
  260|  8.23k|	char res[PATH_MAX];
  261|  8.23k|	struct stat lck_st, res_st;
  262|       |
  263|  8.23k|	assert(h);
  ------------------
  |  Branch (263:2): [True: 0, False: 8.23k]
  |  Branch (263:2): [True: 8.23k, False: 0]
  ------------------
  264|       |
  265|       |	/* we locked a regular file, check during device_open() instead. No reason to check now */
  266|  8.23k|	if (h->mode == DEV_LOCK_FILE)
  ------------------
  |  Branch (266:6): [True: 8.23k, False: 0]
  ------------------
  267|  8.23k|		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.23k|{
  291|  8.23k|	assert(h->refcnt);
  ------------------
  |  Branch (291:2): [True: 0, False: 8.23k]
  |  Branch (291:2): [True: 8.23k, False: 0]
  ------------------
  292|       |
  293|  8.23k|	return --h->refcnt;
  294|  8.23k|}
utils_device_locking.c:unlock_internal:
  430|  8.23k|{
  431|  8.23k|	if (flock(h->flock_fd, LOCK_UN))
  ------------------
  |  Branch (431:6): [True: 0, False: 8.23k]
  ------------------
  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.23k|	release_lock_handle(cd, h);
  434|  8.23k|	free(h);
  435|  8.23k|}

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

crypt_get_pbkdf_type_params:
   37|  2.15k|{
   38|  2.15k|	if (!pbkdf_type)
  ------------------
  |  Branch (38:6): [True: 0, False: 2.15k]
  ------------------
   39|      0|		return NULL;
   40|       |
   41|  2.15k|	if (!strcmp(pbkdf_type, CRYPT_KDF_PBKDF2))
  ------------------
  |  |  266|  2.15k|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (41:6): [True: 0, False: 2.15k]
  ------------------
   42|      0|		return &default_pbkdf2;
   43|  2.15k|	else if (!strcmp(pbkdf_type, CRYPT_KDF_ARGON2I))
  ------------------
  |  |  268|  2.15k|#define CRYPT_KDF_ARGON2I  "argon2i"
  ------------------
  |  Branch (43:11): [True: 0, False: 2.15k]
  ------------------
   44|      0|		return &default_argon2i;
   45|  2.15k|	else if (!strcmp(pbkdf_type, CRYPT_KDF_ARGON2ID))
  ------------------
  |  |  270|  2.15k|#define CRYPT_KDF_ARGON2ID "argon2id"
  ------------------
  |  Branch (45:11): [True: 2.15k, False: 0]
  ------------------
   46|  2.15k|		return &default_argon2id;
   47|       |
   48|      0|	return NULL;
   49|  2.15k|}
pbkdf_adjusted_phys_memory_kb:
   52|  2.15k|{
   53|  2.15k|	uint64_t free_kb, memory_kb = crypt_getphysmemory_kb();
   54|       |
   55|       |	/* Ignore bogus value */
   56|  2.15k|	if (memory_kb < (128 * 1024) || memory_kb > UINT32_MAX)
  ------------------
  |  Branch (56:6): [True: 0, False: 2.15k]
  |  Branch (56:34): [True: 0, False: 2.15k]
  ------------------
   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.15k|	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.15k|	if (memory_kb < (2 * 1024 * 1024) && !crypt_swapavailable()) {
  ------------------
  |  Branch (70:6): [True: 0, False: 2.15k]
  |  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.15k|	return memory_kb;
   84|  2.15k|}
verify_pbkdf_params:
   91|  4.31k|{
   92|  4.31k|	struct crypt_pbkdf_limits pbkdf_limits;
   93|  4.31k|	const char *pbkdf_type;
   94|  4.31k|	int r;
   95|       |
   96|  4.31k|	r = init_crypto(cd);
   97|  4.31k|	if (r < 0)
  ------------------
  |  Branch (97:6): [True: 0, False: 4.31k]
  ------------------
   98|      0|		return r;
   99|       |
  100|  4.31k|	if (!pbkdf || !pbkdf->type ||
  ------------------
  |  Branch (100:6): [True: 0, False: 4.31k]
  |  Branch (100:16): [True: 2.15k, False: 2.15k]
  ------------------
  101|  2.15k|	    (!pbkdf->hash && !strcmp(pbkdf->type, "pbkdf2")))
  ------------------
  |  Branch (101:7): [True: 0, False: 2.15k]
  |  Branch (101:23): [True: 0, False: 0]
  ------------------
  102|  2.15k|		return -EINVAL;
  103|       |
  104|  2.15k|	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.15k]
  |  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.15k|	r = crypt_parse_pbkdf(pbkdf->type, &pbkdf_type);
  110|  2.15k|	if (r < 0) {
  ------------------
  |  Branch (110:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (pbkdf->hash && crypt_hash_size(pbkdf->hash) < 0) {
  ------------------
  |  Branch (115:6): [True: 2.15k, False: 0]
  |  Branch (115:21): [True: 0, False: 2.15k]
  ------------------
  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.15k|	r = crypt_pbkdf_get_limits(pbkdf->type, &pbkdf_limits);
  121|  2.15k|	if (r < 0)
  ------------------
  |  Branch (121:6): [True: 0, False: 2.15k]
  ------------------
  122|      0|		return r;
  123|       |
  124|  2.15k|	if (crypt_get_type(cd) &&
  ------------------
  |  Branch (124:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (!strcmp(pbkdf_type, CRYPT_KDF_PBKDF2)) {
  ------------------
  |  |  266|  2.15k|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (131:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK) {
  ------------------
  |  |  263|  2.15k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (146:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (pbkdf->max_memory_kb > pbkdf_limits.max_memory) {
  ------------------
  |  Branch (159:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (1024ULL * pbkdf->max_memory_kb > SIZE_MAX) {
  ------------------
  |  Branch (164:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (!pbkdf->max_memory_kb) {
  ------------------
  |  Branch (168:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (pbkdf->parallel_threads > pbkdf_limits.max_parallel) {
  ------------------
  |  Branch (172:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (!pbkdf->parallel_threads) {
  ------------------
  |  Branch (177:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	return r;
  183|  2.15k|}
init_pbkdf_type:
  188|  2.15k|{
  189|  2.15k|	struct crypt_pbkdf_type *cd_pbkdf = crypt_get_pbkdf(cd);
  190|  2.15k|	struct crypt_pbkdf_limits pbkdf_limits;
  191|  2.15k|	const char *hash, *type;
  192|  2.15k|	unsigned cpus;
  193|  2.15k|	uint32_t old_flags, memory_kb;
  194|  2.15k|	int r;
  195|       |
  196|  2.15k|	if (crypt_fips_mode()) {
  ------------------
  |  Branch (196:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|	if (!pbkdf && dev_type && !strcmp(dev_type, CRYPT_LUKS2))
  ------------------
  |  |  404|  2.15k|#define CRYPT_LUKS2 "LUKS2"
  ------------------
  |  Branch (205:6): [True: 2.15k, False: 0]
  |  Branch (205:16): [True: 2.15k, False: 0]
  |  Branch (205:28): [True: 2.15k, False: 0]
  ------------------
  206|  2.15k|		pbkdf = crypt_get_pbkdf_type_params(DEFAULT_LUKS2_PBKDF);
  ------------------
  |  |   56|  2.15k|#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.15k|	r = verify_pbkdf_params(cd, pbkdf);
  211|  2.15k|	if (r)
  ------------------
  |  Branch (211:6): [True: 0, False: 2.15k]
  ------------------
  212|      0|		return r;
  213|       |
  214|  2.15k|	r = crypt_pbkdf_get_limits(pbkdf->type, &pbkdf_limits);
  215|  2.15k|	if (r < 0)
  ------------------
  |  Branch (215:6): [True: 0, False: 2.15k]
  ------------------
  216|      0|		return r;
  217|       |
  218|  2.15k|	type = strdup(pbkdf->type);
  219|  2.15k|	hash = pbkdf->hash ? strdup(pbkdf->hash) : NULL;
  ------------------
  |  Branch (219:9): [True: 2.15k, False: 0]
  ------------------
  220|       |
  221|  2.15k|	if (!type || (!hash && pbkdf->hash)) {
  ------------------
  |  Branch (221:6): [True: 0, False: 2.15k]
  |  Branch (221:16): [True: 0, False: 2.15k]
  |  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.15k|	free(CONST_CAST(void*)cd_pbkdf->type);
  ------------------
  |  |   13|  2.15k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  228|  2.15k|	free(CONST_CAST(void*)cd_pbkdf->hash);
  ------------------
  |  |   13|  2.15k|#define CONST_CAST(x) (x)(uintptr_t)
  ------------------
  229|  2.15k|	cd_pbkdf->type = type;
  230|  2.15k|	cd_pbkdf->hash = hash;
  231|       |
  232|  2.15k|	old_flags = cd_pbkdf->flags;
  233|  2.15k|	cd_pbkdf->flags = pbkdf->flags;
  234|       |
  235|       |	/* Reset iteration count so benchmark must run again. */
  236|  2.15k|	if (cd_pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK)
  ------------------
  |  |  263|  2.15k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (236:6): [True: 0, False: 2.15k]
  ------------------
  237|      0|		cd_pbkdf->iterations = pbkdf->iterations;
  238|  2.15k|	else
  239|  2.15k|		cd_pbkdf->iterations = 0;
  240|       |
  241|  2.15k|	if (old_flags & CRYPT_PBKDF_ITER_TIME_SET)
  ------------------
  |  |  261|  2.15k|#define CRYPT_PBKDF_ITER_TIME_SET   (UINT32_C(1) << 0)
  ------------------
  |  Branch (241:6): [True: 0, False: 2.15k]
  ------------------
  242|      0|		cd_pbkdf->flags |= CRYPT_PBKDF_ITER_TIME_SET;
  ------------------
  |  |  261|      0|#define CRYPT_PBKDF_ITER_TIME_SET   (UINT32_C(1) << 0)
  ------------------
  243|  2.15k|	else
  244|  2.15k|		cd_pbkdf->time_ms = pbkdf->time_ms;
  245|       |
  246|  2.15k|	cd_pbkdf->max_memory_kb = pbkdf->max_memory_kb;
  247|  2.15k|	cd_pbkdf->parallel_threads = pbkdf->parallel_threads;
  248|       |
  249|       |	/* Do not limit threads by online CPUs if user forced values (no benchmark). */
  250|  2.15k|	if (cd_pbkdf->parallel_threads && !(cd_pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK)) {
  ------------------
  |  |  263|  2.15k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (250:6): [True: 2.15k, False: 0]
  |  Branch (250:36): [True: 2.15k, False: 0]
  ------------------
  251|  2.15k|		cpus = crypt_cpusonline();
  252|  2.15k|		if (cd_pbkdf->parallel_threads > cpus) {
  ------------------
  |  Branch (252:7): [True: 0, False: 2.15k]
  ------------------
  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.15k|	}
  259|       |
  260|       |	/* Do not limit by available physical memory if user forced values (no benchmark). */
  261|  2.15k|	if (cd_pbkdf->max_memory_kb && !(cd_pbkdf->flags & CRYPT_PBKDF_NO_BENCHMARK)) {
  ------------------
  |  |  263|  2.15k|#define CRYPT_PBKDF_NO_BENCHMARK    (UINT32_C(1) << 1)
  ------------------
  |  Branch (261:6): [True: 2.15k, False: 0]
  |  Branch (261:33): [True: 2.15k, False: 0]
  ------------------
  262|  2.15k|		memory_kb = pbkdf_adjusted_phys_memory_kb();
  263|  2.15k|		if (cd_pbkdf->max_memory_kb > memory_kb) {
  ------------------
  |  Branch (263:7): [True: 0, False: 2.15k]
  ------------------
  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.15k|	}
  270|       |
  271|  2.15k|	if (!strcmp(pbkdf->type, CRYPT_KDF_PBKDF2))
  ------------------
  |  |  266|  2.15k|#define CRYPT_KDF_PBKDF2   "pbkdf2"
  ------------------
  |  Branch (271:6): [True: 0, False: 2.15k]
  ------------------
  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.15k|			cd_pbkdf->type, cd_pbkdf->hash, cd_pbkdf->time_ms, cd_pbkdf->iterations);
  274|  2.15k|	else
  275|  2.15k|		log_dbg(cd, "PBKDF %s, time_ms %u (iterations %u), max_memory_kb %u, parallel_threads %u.",
  ------------------
  |  |  186|  2.15k|#define log_dbg(c, x...) crypt_logf(c, CRYPT_LOG_DEBUG, x)
  |  |  ------------------
  |  |  |  |  180|  2.15k|#define CRYPT_LOG_DEBUG -1
  |  |  ------------------
  ------------------
  276|  2.15k|			cd_pbkdf->type, cd_pbkdf->time_ms, cd_pbkdf->iterations,
  277|  2.15k|			cd_pbkdf->max_memory_kb, cd_pbkdf->parallel_threads);
  278|       |
  279|  2.15k|	return 0;
  280|  2.15k|}

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

crypt_free_volume_key:
  194|  6.08k|{
  195|  6.08k|	struct volume_key *vk_next;
  196|       |
  197|  6.08k|	while (vk) {
  ------------------
  |  Branch (197:9): [True: 0, False: 6.08k]
  ------------------
  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|  6.08k|}

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

array_list_new2:
   45|  13.8k|{
   46|  13.8k|	struct array_list *arr;
   47|       |
   48|  13.8k|	if (initial_size < 0 || (size_t)initial_size >= SIZE_T_MAX / sizeof(void *))
  ------------------
  |  |   29|  13.8k|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (48:6): [True: 0, False: 13.8k]
  |  Branch (48:26): [True: 0, False: 13.8k]
  ------------------
   49|      0|		return NULL;
   50|  13.8k|	arr = (struct array_list *)malloc(sizeof(struct array_list));
   51|  13.8k|	if (!arr)
  ------------------
  |  Branch (51:6): [True: 0, False: 13.8k]
  ------------------
   52|      0|		return NULL;
   53|  13.8k|	arr->size = initial_size;
   54|  13.8k|	arr->length = 0;
   55|  13.8k|	arr->free_fn = free_fn;
   56|  13.8k|	if (!(arr->array = (void **)malloc(arr->size * sizeof(void *))))
  ------------------
  |  Branch (56:6): [True: 0, False: 13.8k]
  ------------------
   57|      0|	{
   58|      0|		free(arr);
   59|      0|		return NULL;
   60|      0|	}
   61|  13.8k|	return arr;
   62|  13.8k|}
array_list_free:
   65|  13.8k|{
   66|  13.8k|	size_t i;
   67|  51.7k|	for (i = 0; i < arr->length; i++)
  ------------------
  |  Branch (67:14): [True: 37.8k, False: 13.8k]
  ------------------
   68|  37.8k|		if (arr->array[i])
  ------------------
  |  Branch (68:7): [True: 0, False: 37.8k]
  ------------------
   69|      0|			arr->free_fn(arr->array[i]);
   70|  13.8k|	free(arr->array);
   71|  13.8k|	free(arr);
   72|  13.8k|}
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:
  110|  10.3k|{
  111|  10.3k|	void *t;
  112|  10.3k|	size_t new_size;
  113|       |
  114|  10.3k|	if (empty_slots >= SIZE_T_MAX / sizeof(void *) - arr->length)
  ------------------
  |  |   29|  10.3k|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (114:6): [True: 0, False: 10.3k]
  ------------------
  115|      0|		return -1;
  116|  10.3k|	new_size = arr->length + empty_slots;
  117|  10.3k|	if (new_size == arr->size)
  ------------------
  |  Branch (117:6): [True: 4, False: 10.3k]
  ------------------
  118|      4|		return 0;
  119|  10.3k|	if (new_size > arr->size)
  ------------------
  |  Branch (119:6): [True: 0, False: 10.3k]
  ------------------
  120|      0|		return array_list_expand_internal(arr, new_size);
  121|  10.3k|	if (new_size == 0)
  ------------------
  |  Branch (121:6): [True: 403, False: 9.92k]
  ------------------
  122|    403|		new_size = 1;
  123|       |
  124|  10.3k|	if (!(t = realloc(arr->array, new_size * sizeof(void *))))
  ------------------
  |  Branch (124:6): [True: 0, False: 10.3k]
  ------------------
  125|      0|		return -1;
  126|  10.3k|	arr->array = (void **)t;
  127|  10.3k|	arr->size = new_size;
  128|  10.3k|	return 0;
  129|  10.3k|}
array_list_set_idx:
  179|  38.0k|{
  180|  38.0k|	if (idx >= arr->length)
  ------------------
  |  Branch (180:6): [True: 0, False: 38.0k]
  ------------------
  181|      0|		return -1;
  182|  38.0k|	arr->array[idx] = data;
  183|  38.0k|	return 0;
  184|  38.0k|}
array_list_add:
  187|  38.0k|{
  188|       |	/* Repeat some of array_list_put_idx() so we can skip several
  189|       |	   checks that we know are unnecessary when appending at the end
  190|       |	 */
  191|  38.0k|	size_t idx = arr->length;
  192|  38.0k|	if (idx > SIZE_T_MAX - 1)
  ------------------
  |  |   29|  38.0k|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (192:6): [True: 0, False: 38.0k]
  ------------------
  193|      0|		return -1;
  194|  38.0k|	if (array_list_expand_internal(arr, idx + 1))
  ------------------
  |  Branch (194:6): [True: 0, False: 38.0k]
  ------------------
  195|      0|		return -1;
  196|  38.0k|	arr->array[idx] = data;
  197|  38.0k|	arr->length++;
  198|  38.0k|	return 0;
  199|  38.0k|}
array_list_length:
  213|   108k|{
  214|   108k|	return arr->length;
  215|   108k|}
array_list_del_idx:
  218|     48|{
  219|     48|	size_t i, stop;
  220|       |
  221|       |	/* Avoid overflow in calculation with large indices. */
  222|     48|	if (idx > SIZE_T_MAX - count)
  ------------------
  |  |   29|     48|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (222:6): [True: 0, False: 48]
  ------------------
  223|      0|		return -1;
  224|     48|	stop = idx + count;
  225|     48|	if (idx >= arr->length || stop > arr->length)
  ------------------
  |  Branch (225:6): [True: 0, False: 48]
  |  Branch (225:28): [True: 0, False: 48]
  ------------------
  226|      0|		return -1;
  227|    164|	for (i = idx; i < stop; ++i)
  ------------------
  |  Branch (227:16): [True: 116, False: 48]
  ------------------
  228|    116|	{
  229|       |		// Because put_idx can skip entries, we need to check if
  230|       |		// there's actually anything in each slot we're erasing.
  231|    116|		if (arr->array[i])
  ------------------
  |  Branch (231:7): [True: 0, False: 116]
  ------------------
  232|      0|			arr->free_fn(arr->array[i]);
  233|    116|	}
  234|     48|	memmove(arr->array + idx, arr->array + stop, (arr->length - stop) * sizeof(void *));
  235|     48|	arr->length -= count;
  236|     48|	return 0;
  237|     48|}
arraylist.c:array_list_expand_internal:
   82|  38.0k|{
   83|  38.0k|	void *t;
   84|  38.0k|	size_t new_size;
   85|       |
   86|       |	/* The array can already hold max entries when max == arr->size, since
   87|       |	 * the caller only ever indexes up to max - 1.
   88|       |	 */
   89|  38.0k|	if (max <= arr->size)
  ------------------
  |  Branch (89:6): [True: 37.8k, False: 167]
  ------------------
   90|  37.8k|		return 0;
   91|       |	/* Avoid undefined behaviour on size_t overflow */
   92|    167|	if (arr->size >= SIZE_T_MAX / 2)
  ------------------
  |  |   29|    167|#define SIZE_T_MAX ULONG_MAX
  ------------------
  |  Branch (92:6): [True: 0, False: 167]
  ------------------
   93|      0|		new_size = max;
   94|    167|	else
   95|    167|	{
   96|    167|		new_size = arr->size << 1;
   97|    167|		if (new_size < max)
  ------------------
  |  Branch (97:7): [True: 0, False: 167]
  ------------------
   98|      0|			new_size = max;
   99|    167|	}
  100|    167|	if (new_size > (~((size_t)0)) / sizeof(void *))
  ------------------
  |  Branch (100:6): [True: 0, False: 167]
  ------------------
  101|      0|		return -1;
  102|    167|	if (!(t = realloc(arr->array, new_size * sizeof(void *))))
  ------------------
  |  Branch (102:6): [True: 0, False: 167]
  ------------------
  103|      0|		return -1;
  104|    167|	arr->array = (void **)t;
  105|    167|	arr->size = new_size;
  106|    167|	return 0;
  107|    167|}

json_object_get:
  269|   149k|{
  270|   149k|	if (!jso)
  ------------------
  |  Branch (270:6): [True: 230, False: 149k]
  ------------------
  271|    230|		return jso;
  272|       |
  273|       |	// Don't overflow the refcounter.
  274|   149k|	assert(jso->_ref_count < UINT32_MAX);
  ------------------
  |  Branch (274:2): [True: 0, False: 149k]
  |  Branch (274:2): [True: 149k, False: 0]
  ------------------
  275|       |
  276|       |#if defined(HAVE_ATOMIC_BUILTINS) && defined(ENABLE_THREADING)
  277|       |	__sync_add_and_fetch(&jso->_ref_count, 1);
  278|       |#else
  279|   149k|	++jso->_ref_count;
  280|   149k|#endif
  281|       |
  282|   149k|	return jso;
  283|   149k|}
json_object_put:
  366|   334k|{
  367|   334k|	enum json_object_put_result rc;
  368|       |
  369|   334k|	if (!jso)
  ------------------
  |  Branch (369:6): [True: 170k, False: 164k]
  ------------------
  370|   170k|		return 0;
  371|       |
  372|   164k|	rc = _json_object_put_maybe_free(jso, 0);
  373|   164k|	if (rc != json_object_put_container)
  ------------------
  |  Branch (373:6): [True: 154k, False: 10.1k]
  ------------------
  374|   154k|		return (int)rc;
  375|       |	// else, it's a non-empty container object, handle it below
  376|       |
  377|       |	// Note: jso is now a "zombie" object, _ref_count == 0 but memory not yet released
  378|       |
  379|       |	/*
  380|       |	 * Handle container objects with minimal stack usage.
  381|       |	 * Perform depth-first iteration, decrementing ref counts on way down
  382|       |	 * and freeing actual memory on the way up.
  383|       |	 * Iterate backwards through each container so we can use the tail
  384|       |	 * pointer/array length to know where to pick up upon popping up to
  385|       |	 * the parent.
  386|       |	 */
  387|       |
  388|   105k|	while(jso != NULL)
  ------------------
  |  Branch (388:8): [True: 94.9k, False: 10.1k]
  ------------------
  389|  94.9k|	{
  390|  94.9k|		size_t total_slots;
  391|  94.9k|		size_t slots_left;
  392|  94.9k|		struct lh_entry *cur_entry = NULL;
  393|  94.9k|		int retry_main_loop = 0;
  394|       |
  395|  94.9k|		if (jso->o_type == json_type_object)
  ------------------
  |  Branch (395:7): [True: 82.1k, False: 12.8k]
  ------------------
  396|  82.1k|		{
  397|  82.1k|			total_slots = lh_table_length(JC_OBJECT(jso)->c_object);
  398|  82.1k|			cur_entry = JC_OBJECT(jso)->c_object->tail;
  399|  82.1k|		}
  400|  12.8k|		else
  401|  12.8k|		{
  402|  12.8k|			total_slots = array_list_length(JC_ARRAY(jso)->c_array);
  403|  12.8k|		}
  404|  94.9k|		slots_left = total_slots;
  405|       |
  406|   227k|		while (slots_left > 0)
  ------------------
  |  Branch (406:10): [True: 174k, False: 52.5k]
  ------------------
  407|   174k|		{
  408|   174k|			size_t cur_slot = slots_left - 1;
  409|   174k|			json_object *child = NULL;
  410|       |
  411|       |			// First, clear the slot in the current jso object
  412|       |			// The slot itself will be freed when jso is freed, or
  413|       |			// if the child object in the slot is a container too and
  414|       |			// and we "recurse" into it.
  415|   174k|			switch (jso->o_type)
  416|   174k|			{
  417|   136k|			case json_type_object: 
  ------------------
  |  Branch (417:4): [True: 136k, False: 38.0k]
  ------------------
  418|   136k|				child = (json_object *)lh_entry_v(cur_entry);
  419|       |				// We're going to free child, so detach it from the entry
  420|   136k|				lh_entry_set_val(cur_entry, NULL);
  421|   136k|				break;
  422|  38.0k|			case json_type_array:
  ------------------
  |  Branch (422:4): [True: 38.0k, False: 136k]
  ------------------
  423|  38.0k|				child = (struct json_object *)array_list_get_idx(JC_ARRAY(jso)->c_array, cur_slot);
  424|       |				// We're going to free child, so detach it from the entry
  425|  38.0k|				array_list_set_idx(JC_ARRAY(jso)->c_array, cur_slot, NULL);
  426|  38.0k|				break;
  427|      0|			default:
  ------------------
  |  Branch (427:4): [True: 0, False: 174k]
  ------------------
  428|      0|				assert(!"jso->o_type is not object or array");
  ------------------
  |  Branch (428:5): [Folded, False: 0]
  |  Branch (428:5): [Folded, False: 0]
  ------------------
  429|      0|				break;
  430|   174k|			}
  431|       |
  432|       |			// Now, handle actually freeing the json_object in that slot
  433|   174k|			if (!child || _json_object_put_maybe_free(child, 0) != json_object_put_container)
  ------------------
  |  Branch (433:8): [True: 217, False: 174k]
  |  Branch (433:18): [True: 131k, False: 42.4k]
  ------------------
  434|   132k|			{
  435|       | 				// child is either freed, or still referenced somewhere else
  436|       |				// leave it as-is and handle the previous slot
  437|   132k|				slots_left--;
  438|   132k|				if (jso->o_type == json_type_object)
  ------------------
  |  Branch (438:9): [True: 94.0k, False: 37.9k]
  ------------------
  439|  94.0k|					cur_entry = cur_entry->prev;
  440|   132k|				continue;
  441|   132k|			}
  442|       |			// _ref_count == 0 now, and _user_delete has been called so we can re-use _userdata 
  443|  42.4k|			child->_delete_parent = jso;  // aka _userdata
  444|  42.4k|			child->_user_delete = NULL;   // make sure it's not called again
  445|       |
  446|       |			// Clear the slot entries whose json_object have been freed so when we pop
  447|       |			// back up to this jso we can continue where we left off.
  448|       |			// Note: since we set each entry to NULL above, clearing the slot
  449|       |			//  is a noop wrt releasing a json_object.
  450|  42.4k|			if (jso->o_type == json_type_object)
  ------------------
  |  Branch (450:8): [True: 42.3k, False: 48]
  ------------------
  451|  42.3k|			{
  452|  42.3k|				lh_table_delete_entry_to_tail(JC_OBJECT(jso)->c_object, cur_entry);
  453|  42.3k|			}
  454|     48|			else // json_type_array
  455|     48|			{
  456|     48|				array_list_del_idx(JC_ARRAY(jso)->c_array, cur_slot, total_slots - cur_slot);
  457|     48|			}
  458|       |			// Iterate down through the child, it will be freed once all 
  459|       |			// of *its* children are freed
  460|  42.4k|			jso = child;
  461|  42.4k|			retry_main_loop = 1;
  462|  42.4k|			break;
  463|   174k|		}
  464|       |
  465|  94.9k|		if (retry_main_loop)
  ------------------
  |  Branch (465:7): [True: 42.4k, False: 52.5k]
  ------------------
  466|       |			// Iterating down, don't free jso yet
  467|  42.4k|			continue;
  468|       |
  469|       |		// All slots are cleared, now pop back up to the parent
  470|  52.5k|		{
  471|       |			// jso is a child that's already been detached from its parent
  472|       |			// so we need to actually free it now
  473|       |			// Be sure to grab _delete_parent *before* freeing jso.
  474|  52.5k|			json_object *parent = jso->_delete_parent;
  475|  52.5k|			enum json_object_put_result rc;
  476|  52.5k|			assert(jso->_ref_count == 0);
  ------------------
  |  Branch (476:4): [True: 0, False: 52.5k]
  |  Branch (476:4): [True: 52.5k, False: 0]
  ------------------
  477|  52.5k|			jso->_ref_count++;   // We're the exclusive owner of jso, non-atomic add is ok.
  478|       |			// Note: the call must not be inside assert(), or it gets
  479|       |			// compiled out when NDEBUG is defined and the memory leaks.
  480|  52.5k|			rc = _json_object_put_maybe_free(jso, 1);
  481|  52.5k|			assert(rc == json_object_put_freed);
  ------------------
  |  Branch (481:4): [True: 0, False: 52.5k]
  |  Branch (481:4): [True: 52.5k, False: 0]
  ------------------
  482|  52.5k|			(void)rc;
  483|  52.5k|			jso = parent;
  484|       |			// iteration will be reset at the top of the loop
  485|  52.5k|		}
  486|  52.5k|	}
  487|       |
  488|  10.1k|	return 1;
  489|  10.1k|}
json_object_is_type:
  522|   120k|{
  523|   120k|	if (!jso)
  ------------------
  |  Branch (523:6): [True: 0, False: 120k]
  ------------------
  524|      0|		return (type == json_type_null);
  525|   120k|	return (jso->o_type == type);
  526|   120k|}
json_object_get_type:
  529|   361k|{
  530|   361k|	if (!jso)
  ------------------
  |  Branch (530:6): [True: 0, False: 361k]
  ------------------
  531|      0|		return json_type_null;
  532|   361k|	return jso->o_type;
  533|   361k|}
json_object_set_userdata:
  541|    586|{
  542|       |	// Can't return failure, so abort if we can't perform the operation.
  543|    586|	assert(jso != NULL);
  ------------------
  |  Branch (543:2): [True: 0, False: 586]
  |  Branch (543:2): [True: 586, False: 0]
  ------------------
  544|       |
  545|       |	// First, clean up any previously existing user info
  546|    586|	if (jso->_user_delete)
  ------------------
  |  Branch (546:6): [True: 0, False: 586]
  ------------------
  547|      0|		jso->_user_delete(jso, jso->_userdata);
  548|       |
  549|    586|	jso->_userdata = userdata;
  550|    586|	jso->_user_delete = user_delete;
  551|    586|}
json_object_set_serializer:
  557|    586|{
  558|    586|	json_object_set_userdata(jso, userdata, user_delete);
  559|       |
  560|    586|	if (to_string_func == NULL)
  ------------------
  |  Branch (560:6): [True: 0, False: 586]
  ------------------
  561|      0|	{
  562|       |		// Reset to the standard serialization function
  563|      0|		switch (jso->o_type)
  ------------------
  |  Branch (563:11): [True: 0, False: 0]
  ------------------
  564|      0|		{
  565|      0|		case json_type_null: jso->_to_json_string = NULL; break;
  ------------------
  |  Branch (565:3): [True: 0, False: 0]
  ------------------
  566|      0|		case json_type_boolean:
  ------------------
  |  Branch (566:3): [True: 0, False: 0]
  ------------------
  567|      0|			jso->_to_json_string = &json_object_boolean_to_json_string;
  568|      0|			break;
  569|      0|		case json_type_double:
  ------------------
  |  Branch (569:3): [True: 0, False: 0]
  ------------------
  570|      0|			jso->_to_json_string = &json_object_double_to_json_string_default;
  571|      0|			break;
  572|      0|		case json_type_int: jso->_to_json_string = &json_object_int_to_json_string; break;
  ------------------
  |  Branch (572:3): [True: 0, False: 0]
  ------------------
  573|      0|		case json_type_object:
  ------------------
  |  Branch (573:3): [True: 0, False: 0]
  ------------------
  574|      0|			jso->_to_json_string = &json_object_object_to_json_string;
  575|      0|			break;
  576|      0|		case json_type_array:
  ------------------
  |  Branch (576:3): [True: 0, False: 0]
  ------------------
  577|      0|			jso->_to_json_string = &json_object_array_to_json_string;
  578|      0|			break;
  579|      0|		case json_type_string:
  ------------------
  |  Branch (579:3): [True: 0, False: 0]
  ------------------
  580|      0|			jso->_to_json_string = &json_object_string_to_json_string;
  581|      0|			break;
  582|      0|		}
  583|      0|		return;
  584|      0|	}
  585|       |
  586|    586|	jso->_to_json_string = to_string_func;
  587|    586|}
json_object_to_json_string_length:
  592|  6.24k|{
  593|  6.24k|	const char *r = NULL;
  594|  6.24k|	size_t s = 0;
  595|       |
  596|  6.24k|	if (!jso)
  ------------------
  |  Branch (596:6): [True: 0, False: 6.24k]
  ------------------
  597|      0|	{
  598|      0|		s = 4;
  599|      0|		r = "null";
  600|      0|	}
  601|  6.24k|	else if ((jso->_pb) || (jso->_pb = printbuf_new()))
  ------------------
  |  Branch (601:11): [True: 31, False: 6.21k]
  |  Branch (601:25): [True: 6.21k, False: 0]
  ------------------
  602|  6.24k|	{
  603|  6.24k|		printbuf_reset(jso->_pb);
  604|       |
  605|  6.24k|		if (jso->_to_json_string(jso, jso->_pb, 0, flags) >= 0)
  ------------------
  |  Branch (605:7): [True: 6.24k, False: 0]
  ------------------
  606|  6.24k|		{
  607|  6.24k|			s = (size_t)jso->_pb->bpos;
  608|  6.24k|			r = jso->_pb->buf;
  609|  6.24k|		}
  610|  6.24k|	}
  611|       |
  612|  6.24k|	if (length)
  ------------------
  |  Branch (612:6): [True: 0, False: 6.24k]
  ------------------
  613|      0|		*length = s;
  614|  6.24k|	return r;
  615|  6.24k|}
json_object_to_json_string_ext:
  618|  6.24k|{
  619|       |	return json_object_to_json_string_length(jso, flags, NULL);
  620|  6.24k|}
json_object_to_json_string:
  625|     32|{
  626|     32|	return json_object_to_json_string_ext(jso, JSON_C_TO_STRING_SPACED);
  ------------------
  |  |   49|     32|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
  627|     32|}
json_object_new_object:
  716|  66.1k|{
  717|  66.1k|	struct json_object_object *jso = JSON_OBJECT_NEW(object);
  ------------------
  |  |  133|  66.1k|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|  66.1k|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|  66.1k|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|  66.1k|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|  66.1k|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
  718|  66.1k|	if (!jso)
  ------------------
  |  Branch (718:6): [True: 0, False: 66.1k]
  ------------------
  719|      0|		return NULL;
  720|  66.1k|	jso->c_object =
  721|  66.1k|	    lh_kchar_table_new(JSON_OBJECT_DEF_HASH_ENTRIES, &json_object_lh_entry_free);
  ------------------
  |  |   36|  66.1k|#define JSON_OBJECT_DEF_HASH_ENTRIES 16
  ------------------
  722|  66.1k|	if (!jso->c_object)
  ------------------
  |  Branch (722:6): [True: 0, False: 66.1k]
  ------------------
  723|      0|	{
  724|      0|		json_object_generic_delete(&jso->base);
  725|      0|		errno = ENOMEM;
  726|      0|		return NULL;
  727|      0|	}
  728|  66.1k|	return &jso->base;
  729|  66.1k|}
json_object_get_object:
  732|   102k|{
  733|   102k|	if (!jso)
  ------------------
  |  Branch (733:6): [True: 0, False: 102k]
  ------------------
  734|      0|		return NULL;
  735|   102k|	switch (jso->o_type)
  736|   102k|	{
  737|   102k|	case json_type_object: return JC_OBJECT_C(jso)->c_object;
  ------------------
  |  Branch (737:2): [True: 102k, False: 0]
  ------------------
  738|      0|	default: return NULL;
  ------------------
  |  Branch (738:2): [True: 0, False: 102k]
  ------------------
  739|   102k|	}
  740|   102k|}
json_object_object_add_ex:
  744|   141k|{
  745|   141k|	struct json_object *existing_value = NULL;
  746|   141k|	struct lh_entry *existing_entry;
  747|   141k|	unsigned long hash;
  748|       |
  749|   141k|	assert(json_object_get_type(jso) == json_type_object);
  ------------------
  |  Branch (749:2): [True: 0, False: 141k]
  |  Branch (749:2): [True: 141k, False: 0]
  ------------------
  750|       |
  751|       |	// We lookup the entry and replace the value, rather than just deleting
  752|       |	// and re-adding it, so the existing key remains valid.
  753|   141k|	hash = lh_get_hash(JC_OBJECT(jso)->c_object, (const void *)key);
  754|   141k|	existing_entry =
  755|   141k|	    (opts & JSON_C_OBJECT_ADD_KEY_IS_NEW)
  ------------------
  |  |   96|   141k|#define JSON_C_OBJECT_ADD_KEY_IS_NEW (1 << 1)
  ------------------
  |  Branch (755:6): [True: 0, False: 141k]
  ------------------
  756|   141k|	        ? NULL
  757|   141k|	        : lh_table_lookup_entry_w_hash(JC_OBJECT(jso)->c_object, (const void *)key, hash);
  758|       |
  759|       |	// The caller must avoid creating loops in the object tree, but do a
  760|       |	// quick check anyway to make sure we're not creating a trivial loop.
  761|   141k|	if (jso == val)
  ------------------
  |  Branch (761:6): [True: 0, False: 141k]
  ------------------
  762|      0|		return -1;
  763|       |
  764|   141k|	if (!existing_entry)
  ------------------
  |  Branch (764:6): [True: 136k, False: 4.85k]
  ------------------
  765|   136k|	{
  766|   136k|		char *key_copy = NULL;
  767|   136k|		const void *k = key;
  768|   136k|		if (!(opts & JSON_C_OBJECT_ADD_CONSTANT_KEY))
  ------------------
  |  |  114|   136k|#define JSON_C_OBJECT_ADD_CONSTANT_KEY (1 << 2)
  ------------------
  |  Branch (768:7): [True: 136k, False: 0]
  ------------------
  769|   136k|		{
  770|   136k|			key_copy = strdup(key);
  771|   136k|			if (key_copy == NULL)
  ------------------
  |  Branch (771:8): [True: 0, False: 136k]
  ------------------
  772|      0|				return -1;
  773|   136k|			k = key_copy;
  774|   136k|		}
  775|   136k|		if (lh_table_insert_w_hash(JC_OBJECT(jso)->c_object, k, val, hash, opts) < 0)
  ------------------
  |  Branch (775:7): [True: 0, False: 136k]
  ------------------
  776|      0|		{
  777|      0|			free(key_copy);
  778|      0|			return -1;
  779|      0|		}
  780|   136k|		return 0;
  781|   136k|	}
  782|  4.85k|	existing_value = (json_object *)lh_entry_v(existing_entry);
  783|  4.85k|	if (existing_value)
  ------------------
  |  Branch (783:6): [True: 4.80k, False: 53]
  ------------------
  784|  4.80k|		json_object_put(existing_value);
  785|  4.85k|	lh_entry_set_val(existing_entry, val);
  786|  4.85k|	return 0;
  787|   141k|}
json_object_object_add:
  790|   141k|{
  791|   141k|	return json_object_object_add_ex(jso, key, val, 0);
  792|   141k|}
json_object_object_length:
  795|  12.7k|{
  796|  12.7k|	assert(json_object_get_type(jso) == json_type_object);
  ------------------
  |  Branch (796:2): [True: 0, False: 12.7k]
  |  Branch (796:2): [True: 12.7k, False: 0]
  ------------------
  797|  12.7k|	return lh_table_length(JC_OBJECT_C(jso)->c_object);
  798|  12.7k|}
json_object_object_get_ex:
  814|   275k|{
  815|   275k|	if (value != NULL)
  ------------------
  |  Branch (815:6): [True: 268k, False: 6.90k]
  ------------------
  816|   268k|		*value = NULL;
  817|       |
  818|   275k|	if (NULL == jso)
  ------------------
  |  Branch (818:6): [True: 0, False: 275k]
  ------------------
  819|      0|		return 0;
  820|       |
  821|   275k|	switch (jso->o_type)
  822|   275k|	{
  823|   275k|	case json_type_object:
  ------------------
  |  Branch (823:2): [True: 275k, False: 0]
  ------------------
  824|   275k|		return lh_table_lookup_ex(JC_OBJECT_C(jso)->c_object, (const void *)key,
  825|   275k|		                          (void **)value);
  826|      0|	default:
  ------------------
  |  Branch (826:2): [True: 0, False: 275k]
  ------------------
  827|      0|		if (value != NULL)
  ------------------
  |  Branch (827:7): [True: 0, False: 0]
  ------------------
  828|      0|			*value = NULL;
  829|      0|		return 0;
  830|   275k|	}
  831|   275k|}
json_object_object_del:
  834|    456|{
  835|    456|	assert(json_object_get_type(jso) == json_type_object);
  ------------------
  |  Branch (835:2): [True: 0, False: 456]
  |  Branch (835:2): [True: 456, False: 0]
  ------------------
  836|    456|	lh_table_delete(JC_OBJECT(jso)->c_object, key);
  837|    456|}
json_object_new_boolean:
  859|    326|{
  860|    326|	struct json_object_boolean *jso = JSON_OBJECT_NEW(boolean);
  ------------------
  |  |  133|    326|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|    326|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|    326|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|    326|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|    326|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
  861|    326|	if (!jso)
  ------------------
  |  Branch (861:6): [True: 0, False: 326]
  ------------------
  862|      0|		return NULL;
  863|    326|	jso->c_boolean = b;
  864|    326|	return &jso->base;
  865|    326|}
json_object_get_int:
  915|    282|{
  916|    282|	int64_t cint64 = 0;
  917|    282|	double cdouble;
  918|    282|	enum json_type o_type;
  919|    282|	errno = 0;
  920|       |
  921|    282|	if (!jso)
  ------------------
  |  Branch (921:6): [True: 0, False: 282]
  ------------------
  922|      0|		return 0;
  923|       |
  924|    282|	o_type = jso->o_type;
  925|    282|	if (o_type == json_type_int)
  ------------------
  |  Branch (925:6): [True: 274, False: 8]
  ------------------
  926|    274|	{
  927|    274|		const struct json_object_int *jsoint = JC_INT_C(jso);
  928|    274|		if (jsoint->cint_type == json_object_int_type_int64)
  ------------------
  |  Branch (928:7): [True: 274, False: 0]
  ------------------
  929|    274|		{
  930|    274|			cint64 = jsoint->cint.c_int64;
  931|    274|		}
  932|      0|		else
  933|      0|		{
  934|      0|			if (jsoint->cint.c_uint64 >= INT64_MAX)
  ------------------
  |  Branch (934:8): [True: 0, False: 0]
  ------------------
  935|      0|				cint64 = INT64_MAX;
  936|      0|			else
  937|      0|				cint64 = (int64_t)jsoint->cint.c_uint64;
  938|      0|		}
  939|    274|	}
  940|      8|	else if (o_type == json_type_string)
  ------------------
  |  Branch (940:11): [True: 0, False: 8]
  ------------------
  941|      0|	{
  942|       |		/*
  943|       |		 * Parse strings into 64-bit numbers, then use the
  944|       |		 * 64-to-32-bit number handling below.
  945|       |		 */
  946|      0|		if (json_parse_int64(get_string_component(jso), &cint64) != 0)
  ------------------
  |  Branch (946:7): [True: 0, False: 0]
  ------------------
  947|      0|			return 0; /* whoops, it didn't work. */
  948|      0|		o_type = json_type_int;
  949|      0|	}
  950|       |
  951|    282|	switch (o_type)
  952|    282|	{
  953|    274|	case json_type_int:
  ------------------
  |  Branch (953:2): [True: 274, False: 8]
  ------------------
  954|       |		/* Make sure we return the correct values for out of range numbers. */
  955|    274|		if (cint64 < INT32_MIN)
  ------------------
  |  Branch (955:7): [True: 6, False: 268]
  ------------------
  956|      6|		{
  957|      6|			errno = ERANGE;
  958|      6|			return INT32_MIN;
  959|      6|		}
  960|    268|		if (cint64 > INT32_MAX)
  ------------------
  |  Branch (960:7): [True: 0, False: 268]
  ------------------
  961|      0|		{
  962|      0|			errno = ERANGE;
  963|      0|			return INT32_MAX;
  964|      0|		}
  965|    268|		return (int32_t)cint64;
  966|      3|	case json_type_double:
  ------------------
  |  Branch (966:2): [True: 3, False: 279]
  ------------------
  967|      3|		cdouble = JC_DOUBLE_C(jso)->c_double;
  968|      3|		if (cdouble < INT32_MIN)
  ------------------
  |  Branch (968:7): [True: 0, False: 3]
  ------------------
  969|      0|		{
  970|      0|			errno = ERANGE;
  971|      0|			return INT32_MIN;
  972|      0|		}
  973|      3|		if (cdouble > INT32_MAX)
  ------------------
  |  Branch (973:7): [True: 3, False: 0]
  ------------------
  974|      3|		{
  975|      3|			errno = ERANGE;
  976|      3|			return INT32_MAX;
  977|      3|		}
  978|      0|		if (isnan(cdouble))
  ------------------
  |  Branch (978:7): [True: 0, False: 0]
  ------------------
  979|      0|		{
  980|      0|			errno = EINVAL;
  981|      0|			return INT32_MIN;
  982|      0|		}
  983|      0|		return (int32_t)cdouble;
  984|      5|	case json_type_boolean: return JC_BOOL_C(jso)->c_boolean;
  ------------------
  |  Branch (984:2): [True: 5, False: 277]
  ------------------
  985|      0|	default: return 0;
  ------------------
  |  Branch (985:2): [True: 0, False: 282]
  ------------------
  986|    282|	}
  987|    282|}
json_object_new_int64:
  995|  11.6k|{
  996|  11.6k|	struct json_object_int *jso = JSON_OBJECT_NEW(int);
  ------------------
  |  |  133|  11.6k|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|  11.6k|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|  11.6k|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|  11.6k|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|  11.6k|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
  997|  11.6k|	if (!jso)
  ------------------
  |  Branch (997:6): [True: 0, False: 11.6k]
  ------------------
  998|      0|		return NULL;
  999|  11.6k|	jso->cint.c_int64 = i;
 1000|  11.6k|	jso->cint_type = json_object_int_type_int64;
 1001|  11.6k|	return &jso->base;
 1002|  11.6k|}
json_object_new_uint64:
 1005|    501|{
 1006|    501|	struct json_object_int *jso = JSON_OBJECT_NEW(int);
  ------------------
  |  |  133|    501|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|    501|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|    501|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|    501|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|    501|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
 1007|    501|	if (!jso)
  ------------------
  |  Branch (1007:6): [True: 0, False: 501]
  ------------------
 1008|      0|		return NULL;
 1009|    501|	jso->cint.c_uint64 = i;
 1010|    501|	jso->cint_type = json_object_int_type_uint64;
 1011|    501|	return &jso->base;
 1012|    501|}
json_object_get_int64:
 1015|    148|{
 1016|    148|	int64_t cint;
 1017|    148|	errno = 0;
 1018|       |
 1019|    148|	if (!jso)
  ------------------
  |  Branch (1019:6): [True: 0, False: 148]
  ------------------
 1020|      0|		return 0;
 1021|    148|	switch (jso->o_type)
 1022|    148|	{
 1023|    148|	case json_type_int:
  ------------------
  |  Branch (1023:2): [True: 148, False: 0]
  ------------------
 1024|    148|	{
 1025|    148|		const struct json_object_int *jsoint = JC_INT_C(jso);
 1026|    148|		switch (jsoint->cint_type)
 1027|    148|		{
 1028|    142|		case json_object_int_type_int64: return jsoint->cint.c_int64;
  ------------------
  |  Branch (1028:3): [True: 142, False: 6]
  ------------------
 1029|      6|		case json_object_int_type_uint64:
  ------------------
  |  Branch (1029:3): [True: 6, False: 142]
  ------------------
 1030|      6|			if (jsoint->cint.c_uint64 > INT64_MAX)
  ------------------
  |  Branch (1030:8): [True: 6, False: 0]
  ------------------
 1031|      6|			{
 1032|      6|				errno = ERANGE;
 1033|      6|				return INT64_MAX;
 1034|      6|			}
 1035|      0|			return (int64_t)jsoint->cint.c_uint64;
 1036|      0|		default: json_abort("invalid cint_type");
  ------------------
  |  Branch (1036:3): [True: 0, False: 148]
  ------------------
 1037|    148|		}
 1038|    148|	}
 1039|      0|	case json_type_double:
  ------------------
  |  Branch (1039:2): [True: 0, False: 148]
  ------------------
 1040|       |		// INT64_MAX can't be exactly represented as a double, so it
 1041|       |		// rounds up to (double)(INT64_MAX+1).  Use >= so that value is
 1042|       |		// rejected rather than cast to int64_t, which would be UB.
 1043|      0|		if (JC_DOUBLE_C(jso)->c_double >= (double)INT64_MAX)
  ------------------
  |  Branch (1043:7): [True: 0, False: 0]
  ------------------
 1044|      0|		{
 1045|      0|			errno = ERANGE;
 1046|      0|			return INT64_MAX;
 1047|      0|		}
 1048|      0|		if (JC_DOUBLE_C(jso)->c_double < (double)INT64_MIN)
  ------------------
  |  Branch (1048:7): [True: 0, False: 0]
  ------------------
 1049|      0|		{
 1050|      0|			errno = ERANGE;
 1051|      0|			return INT64_MIN;
 1052|      0|		}
 1053|      0|		if (isnan(JC_DOUBLE_C(jso)->c_double))
  ------------------
  |  Branch (1053:7): [True: 0, False: 0]
  ------------------
 1054|      0|		{
 1055|      0|			errno = EINVAL;
 1056|      0|			return INT64_MIN;
 1057|      0|		}
 1058|      0|		return (int64_t)JC_DOUBLE_C(jso)->c_double;
 1059|      0|	case json_type_boolean: return JC_BOOL_C(jso)->c_boolean;
  ------------------
  |  Branch (1059:2): [True: 0, False: 148]
  ------------------
 1060|      0|	case json_type_string:
  ------------------
  |  Branch (1060:2): [True: 0, False: 148]
  ------------------
 1061|      0|		if (json_parse_int64(get_string_component(jso), &cint) == 0)
  ------------------
  |  Branch (1061:7): [True: 0, False: 0]
  ------------------
 1062|      0|			return cint;
 1063|       |		/* FALLTHRU */
 1064|      0|	default: return 0;
  ------------------
  |  Branch (1064:2): [True: 0, False: 148]
  ------------------
 1065|    148|	}
 1066|    148|}
json_object_new_double:
 1368|    836|{
 1369|    836|	struct json_object_double *jso = JSON_OBJECT_NEW(double);
  ------------------
  |  |  133|    836|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|    836|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|    836|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|    836|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|    836|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
 1370|    836|	if (!jso)
  ------------------
  |  Branch (1370:6): [True: 0, False: 836]
  ------------------
 1371|      0|		return NULL;
 1372|    836|	jso->base._to_json_string = &json_object_double_to_json_string_default;
 1373|    836|	jso->c_double = d;
 1374|    836|	return &jso->base;
 1375|    836|}
json_object_new_double_s:
 1378|    586|{
 1379|    586|	char *new_ds;
 1380|    586|	struct json_object *jso = json_object_new_double(d);
 1381|    586|	if (!jso)
  ------------------
  |  Branch (1381:6): [True: 0, False: 586]
  ------------------
 1382|      0|		return NULL;
 1383|       |
 1384|    586|	new_ds = strdup(ds);
 1385|    586|	if (!new_ds)
  ------------------
  |  Branch (1385:6): [True: 0, False: 586]
  ------------------
 1386|      0|	{
 1387|      0|		json_object_generic_delete(jso);
 1388|      0|		errno = ENOMEM;
 1389|      0|		return NULL;
 1390|      0|	}
 1391|    586|	json_object_set_serializer(jso, _json_object_userdata_to_json_string, new_ds,
 1392|    586|	                           json_object_free_userdata);
 1393|    586|	return jso;
 1394|    586|}
json_object_userdata_to_json_string:
 1409|    217|{
 1410|    217|	int userdata_len = strlen((const char *)jso->_userdata);
 1411|    217|	printbuf_memappend(pb, (const char *)jso->_userdata, userdata_len);
 1412|    217|	return userdata_len;
 1413|    217|}
json_object_free_userdata:
 1416|    693|{
 1417|    693|	free(userdata);
 1418|    693|}
json_object_new_string_len:
 1589|  96.1k|{
 1590|  96.1k|	return _json_object_new_string(s, len);
 1591|  96.1k|}
json_object_get_string:
 1594|   172k|{
 1595|   172k|	if (!jso)
  ------------------
  |  Branch (1595:6): [True: 0, False: 172k]
  ------------------
 1596|      0|		return NULL;
 1597|   172k|	switch (jso->o_type)
 1598|   172k|	{
 1599|   172k|	case json_type_string: return get_string_component(jso);
  ------------------
  |  Branch (1599:2): [True: 172k, False: 32]
  ------------------
 1600|     32|	default: return json_object_to_json_string(jso);
  ------------------
  |  Branch (1600:2): [True: 32, False: 172k]
  ------------------
 1601|   172k|	}
 1602|   172k|}
json_object_new_array:
 1744|  13.8k|{
 1745|  13.8k|	return json_object_new_array_ext(ARRAY_LIST_DEFAULT_SIZE);
  ------------------
  |  |   27|  13.8k|#define ARRAY_LIST_DEFAULT_SIZE 32
  ------------------
 1746|  13.8k|}
json_object_new_array_ext:
 1748|  13.8k|{
 1749|  13.8k|	struct json_object_array *jso = JSON_OBJECT_NEW(array);
  ------------------
  |  |  133|  13.8k|	(struct JC_CONCAT(json_object_, jtype) *)json_object_new(                        \
  |  |  134|  13.8k|	    JC_CONCAT(json_type_, jtype), sizeof(struct JC_CONCAT(json_object_, jtype)), \
  |  |  ------------------
  |  |  |  |  129|  13.8k|#define JC_CONCAT(a, b) a##b
  |  |  ------------------
  |  |  135|  13.8k|	    &JC_CONCAT3(json_object_, jtype, _to_json_string))
  |  |  ------------------
  |  |  |  |  130|  13.8k|#define JC_CONCAT3(a, b, c) a##b##c
  |  |  ------------------
  ------------------
 1750|  13.8k|	if (!jso)
  ------------------
  |  Branch (1750:6): [True: 0, False: 13.8k]
  ------------------
 1751|      0|		return NULL;
 1752|  13.8k|	jso->c_array = array_list_new2(&json_object_array_entry_free, initial_size);
 1753|  13.8k|	if (jso->c_array == NULL)
  ------------------
  |  Branch (1753:6): [True: 0, False: 13.8k]
  ------------------
 1754|      0|	{
 1755|      0|		free(jso);
 1756|      0|		return NULL;
 1757|      0|	}
 1758|  13.8k|	return &jso->base;
 1759|  13.8k|}
json_object_array_length:
 1794|  81.5k|{
 1795|  81.5k|	assert(json_object_get_type(jso) == json_type_array);
  ------------------
  |  Branch (1795:2): [True: 0, False: 81.5k]
  |  Branch (1795:2): [True: 81.5k, False: 0]
  ------------------
 1796|  81.5k|	return array_list_length(JC_ARRAY_C(jso)->c_array);
 1797|  81.5k|}
json_object_array_add:
 1800|  38.0k|{
 1801|  38.0k|	assert(json_object_get_type(jso) == json_type_array);
  ------------------
  |  Branch (1801:2): [True: 0, False: 38.0k]
  |  Branch (1801:2): [True: 38.0k, False: 0]
  ------------------
 1802|  38.0k|	return array_list_add(JC_ARRAY(jso)->c_array, val);
 1803|  38.0k|}
json_object_array_get_idx:
 1824|  77.0k|{
 1825|  77.0k|	assert(json_object_get_type(jso) == json_type_array);
  ------------------
  |  Branch (1825:2): [True: 0, False: 77.0k]
  |  Branch (1825:2): [True: 77.0k, False: 0]
  ------------------
 1826|  77.0k|	return (struct json_object *)array_list_get_idx(JC_ARRAY_C(jso)->c_array, idx);
 1827|  77.0k|}
json_object_array_shrink:
 1847|  10.3k|{
 1848|  10.3k|	assert(json_object_get_type(jso) == json_type_array);
  ------------------
  |  Branch (1848:2): [True: 0, False: 10.3k]
  |  Branch (1848:2): [True: 10.3k, False: 0]
  ------------------
 1849|  10.3k|	if (empty_slots < 0)
  ------------------
  |  Branch (1849:6): [True: 0, False: 10.3k]
  ------------------
 1850|      0|		json_abort("json_object_array_shrink called with negative empty_slots");
 1851|  10.3k|	return array_list_shrink(JC_ARRAY(jso)->c_array, empty_slots);
 1852|  10.3k|}
json_c_shallow_copy_default:
 1982|  39.0k|{
 1983|  39.0k|	switch (src->o_type)
 1984|  39.0k|	{
 1985|     21|	case json_type_boolean: *dst = json_object_new_boolean(JC_BOOL(src)->c_boolean); break;
  ------------------
  |  Branch (1985:2): [True: 21, False: 39.0k]
  ------------------
 1986|       |
 1987|    120|	case json_type_double: *dst = json_object_new_double(JC_DOUBLE(src)->c_double); break;
  ------------------
  |  Branch (1987:2): [True: 120, False: 38.9k]
  ------------------
 1988|       |
 1989|    609|	case json_type_int:
  ------------------
  |  Branch (1989:2): [True: 609, False: 38.4k]
  ------------------
 1990|    609|		switch (JC_INT(src)->cint_type)
 1991|    609|		{
 1992|    602|		case json_object_int_type_int64:
  ------------------
  |  Branch (1992:3): [True: 602, False: 7]
  ------------------
 1993|    602|			*dst = json_object_new_int64(JC_INT(src)->cint.c_int64);
 1994|    602|			break;
 1995|      7|		case json_object_int_type_uint64:
  ------------------
  |  Branch (1995:3): [True: 7, False: 602]
  ------------------
 1996|      7|			*dst = json_object_new_uint64(JC_INT(src)->cint.c_uint64);
 1997|      7|			break;
 1998|      0|		default: json_abort("invalid cint_type");
  ------------------
  |  Branch (1998:3): [True: 0, False: 609]
  ------------------
 1999|    609|		}
 2000|    609|		break;
 2001|       |
 2002|  19.9k|	case json_type_string:
  ------------------
  |  Branch (2002:2): [True: 19.9k, False: 19.0k]
  ------------------
 2003|  19.9k|		*dst = json_object_new_string_len(get_string_component(src),
 2004|  19.9k|		                                  _json_object_get_string_len(JC_STRING(src)));
 2005|  19.9k|		break;
 2006|       |
 2007|  15.3k|	case json_type_object: *dst = json_object_new_object(); break;
  ------------------
  |  Branch (2007:2): [True: 15.3k, False: 23.7k]
  ------------------
 2008|       |
 2009|  2.99k|	case json_type_array: *dst = json_object_new_array(); break;
  ------------------
  |  Branch (2009:2): [True: 2.99k, False: 36.0k]
  ------------------
 2010|       |
 2011|      0|	default: errno = EINVAL; return -1;
  ------------------
  |  Branch (2011:2): [True: 0, False: 39.0k]
  ------------------
 2012|  39.0k|	}
 2013|       |
 2014|  39.0k|	if (!*dst)
  ------------------
  |  Branch (2014:6): [True: 0, False: 39.0k]
  ------------------
 2015|      0|	{
 2016|      0|		errno = ENOMEM;
 2017|      0|		return -1;
 2018|      0|	}
 2019|  39.0k|	(*dst)->_to_json_string = src->_to_json_string;
 2020|       |	// _userdata and _user_delete are copied later
 2021|  39.0k|	return 1;
 2022|  39.0k|}
json_object_deep_copy:
 2109|  2.15k|{
 2110|  2.15k|	int rc;
 2111|       |
 2112|       |	/* Check if arguments are sane ; *dst must not point to a non-NULL object */
 2113|  2.15k|	if (!src || !dst || *dst)
  ------------------
  |  Branch (2113:6): [True: 0, False: 2.15k]
  |  Branch (2113:14): [True: 0, False: 2.15k]
  |  Branch (2113:22): [True: 0, False: 2.15k]
  ------------------
 2114|      0|	{
 2115|      0|		errno = EINVAL;
 2116|      0|		return -1;
 2117|      0|	}
 2118|       |
 2119|  2.15k|	if (shallow_copy == NULL)
  ------------------
  |  Branch (2119:6): [True: 2.15k, False: 0]
  ------------------
 2120|  2.15k|		shallow_copy = json_c_shallow_copy_default;
 2121|       |
 2122|  2.15k|	rc = json_object_deep_copy_recursive(src, NULL, NULL, UINT_MAX, dst, shallow_copy);
 2123|  2.15k|	if (rc < 0)
  ------------------
  |  Branch (2123:6): [True: 0, False: 2.15k]
  ------------------
 2124|      0|	{
 2125|      0|		json_object_put(*dst);
 2126|      0|		*dst = NULL;
 2127|      0|	}
 2128|       |
 2129|  2.15k|	return rc;
 2130|  2.15k|}
json_object.c:_json_object_put_maybe_free:
  311|   391k|{
  312|       |	/* Avoid invalid free and crash explicitly instead of (silently)
  313|       |	 * segfaulting.
  314|       |	 */
  315|   391k|	assert(jso->_ref_count > 0);
  ------------------
  |  Branch (315:2): [True: 0, False: 391k]
  |  Branch (315:2): [True: 391k, False: 0]
  ------------------
  316|       |
  317|       |#if defined(HAVE_ATOMIC_BUILTINS) && defined(ENABLE_THREADING)
  318|       |	/* Note: this only allow the refcount to remain correct
  319|       |	 * when multiple threads are adjusting it.  It is still an error
  320|       |	 * for a thread to decrement the refcount if it doesn't "own" it,
  321|       |	 * as that can result in the thread that loses the race to 0
  322|       |	 * operating on an already-freed object.
  323|       |	 */
  324|       |	if (__sync_sub_and_fetch(&jso->_ref_count, 1) > 0)
  325|       |#else
  326|   391k|	if (--jso->_ref_count > 0)
  ------------------
  |  Branch (326:6): [True: 149k, False: 241k]
  ------------------
  327|   149k|#endif
  328|   149k|	{
  329|   149k|		return json_object_put_still_refd;
  330|   149k|	}
  331|       |
  332|   241k|	if (jso->_user_delete)
  ------------------
  |  Branch (332:6): [True: 693, False: 241k]
  ------------------
  333|    693|		jso->_user_delete(jso, jso->_userdata);
  334|   241k|	jso->_user_delete = NULL;
  335|   241k|	jso->_userdata = NULL; // aka _delete_parent, but json_object_put() will
  336|       |	                       // have already grabbed it if it needs it.
  337|       |
  338|   241k|	switch (jso->o_type)
  339|   241k|	{
  340|   105k|	case json_type_object: 
  ------------------
  |  Branch (340:2): [True: 105k, False: 136k]
  ------------------
  341|   105k|		if (free_containers || lh_table_length(JC_OBJECT(jso)->c_object) == 0)
  ------------------
  |  Branch (341:7): [True: 39.8k, False: 66.1k]
  |  Branch (341:26): [True: 26.3k, False: 39.8k]
  ------------------
  342|  66.1k|		{
  343|  66.1k|			json_object_object_delete(jso);
  344|  66.1k|			break;
  345|  66.1k|		}
  346|  39.8k|		return json_object_put_container;
  347|  26.5k|	case json_type_array:
  ------------------
  |  Branch (347:2): [True: 26.5k, False: 215k]
  ------------------
  348|       |		// container objects are handled by the caller
  349|  26.5k|		if (free_containers || array_list_length(JC_ARRAY(jso)->c_array) == 0)
  ------------------
  |  Branch (349:7): [True: 12.7k, False: 13.8k]
  |  Branch (349:26): [True: 1.01k, False: 12.7k]
  ------------------
  350|  13.8k|		{
  351|  13.8k|			json_object_array_delete(jso);
  352|  13.8k|			break;
  353|  13.8k|		}
  354|  12.7k|		return json_object_put_container;
  355|  96.1k|	case json_type_string:
  ------------------
  |  Branch (355:2): [True: 96.1k, False: 145k]
  ------------------
  356|  96.1k|		json_object_string_delete(jso);
  357|  96.1k|		break;
  358|  13.2k|	default:
  ------------------
  |  Branch (358:2): [True: 13.2k, False: 228k]
  ------------------
  359|  13.2k|		json_object_generic_delete(jso);
  360|  13.2k|		break;
  361|   241k|	}
  362|   189k|	return json_object_put_freed;
  363|   241k|}
json_object.c:json_object_object_delete:
  710|  66.1k|{
  711|  66.1k|	lh_table_free(JC_OBJECT(jso_base)->c_object);
  712|  66.1k|	json_object_generic_delete(jso_base);
  713|  66.1k|}
json_object.c:json_object_array_delete:
 1738|  13.8k|{
 1739|  13.8k|	array_list_free(JC_ARRAY(jso)->c_array);
 1740|  13.8k|	json_object_generic_delete(jso);
 1741|  13.8k|}
json_object.c:json_object_string_delete:
 1539|  96.1k|{
 1540|  96.1k|	if (JC_STRING(jso)->len < 0)
  ------------------
  |  Branch (1540:6): [True: 0, False: 96.1k]
  ------------------
 1541|      0|		free(JC_STRING(jso)->c_string.pdata);
 1542|  96.1k|	json_object_generic_delete(jso);
 1543|  96.1k|}
json_object.c:JC_OBJECT:
   81|   759k|{
   82|   759k|	return (void *)jso;
   83|   759k|}
json_object.c:JC_ARRAY:
   89|   164k|{
   90|   164k|	return (void *)jso;
   91|   164k|}
json_object.c:json_object_object_to_json_string:
  648|  44.2k|{
  649|  44.2k|	int had_children = 0;
  650|  44.2k|	struct json_object_iter iter;
  651|       |
  652|  44.2k|	printbuf_strappend(pb, "{" /*}*/);
  ------------------
  |  |   97|  44.2k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  44.2k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  653|  44.2k|	json_object_object_foreachC(jso, iter)
  ------------------
  |  |  530|  44.2k|	for (iter.entry = lh_table_head(json_object_get_object(obj));                                    \
  |  |  531|   129k|	     (iter.entry ? (iter.key = (char *)lh_entry_k(iter.entry),                          \
  |  |  ------------------
  |  |  |  Branch (531:7): [True: 85.4k, False: 44.2k]
  |  |  |  Branch (531:8): [True: 85.4k, False: 44.2k]
  |  |  ------------------
  |  |  532|  85.4k|	                   iter.val = (struct json_object *)lh_entry_v(iter.entry), iter.entry) \
  |  |  533|   129k|	                 : 0);                                                                  \
  |  |  534|  85.4k|	     iter.entry = lh_entry_next(iter.entry))
  ------------------
  654|  85.4k|	{
  655|  85.4k|		if (had_children)
  ------------------
  |  Branch (655:7): [True: 59.8k, False: 25.6k]
  ------------------
  656|  59.8k|		{
  657|  59.8k|			printbuf_strappend(pb, ",");
  ------------------
  |  |   97|  59.8k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  59.8k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  658|  59.8k|		}
  659|  85.4k|		if (flags & JSON_C_TO_STRING_PRETTY)
  ------------------
  |  |   58|  85.4k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (659:7): [True: 0, False: 85.4k]
  ------------------
  660|      0|			printbuf_strappend(pb, "\n");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  661|  85.4k|		had_children = 1;
  662|  85.4k|		if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|   170k|#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 (662:7): [True: 0, False: 85.4k]
  |  Branch (662:42): [True: 0, False: 0]
  ------------------
  663|      0|			printbuf_strappend(pb, " ");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  664|  85.4k|		indent(pb, level + 1, flags);
  665|  85.4k|		if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  85.4k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (665:7): [True: 0, False: 85.4k]
  ------------------
  666|      0|			printbuf_strappend(pb, ANSI_COLOR_FG_BLUE);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  667|       |
  668|  85.4k|		printbuf_strappend(pb, "\"");
  ------------------
  |  |   97|  85.4k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  85.4k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  669|  85.4k|		json_escape_str(pb, iter.key, strlen(iter.key), flags);
  670|  85.4k|		printbuf_strappend(pb, "\"");
  ------------------
  |  |   97|  85.4k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  85.4k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  671|       |
  672|  85.4k|		if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  85.4k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (672:7): [True: 0, False: 85.4k]
  ------------------
  673|      0|			printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  674|       |
  675|  85.4k|		if (flags & JSON_C_TO_STRING_SPACED)
  ------------------
  |  |   49|  85.4k|#define JSON_C_TO_STRING_SPACED (1 << 0)
  ------------------
  |  Branch (675:7): [True: 0, False: 85.4k]
  ------------------
  676|      0|			printbuf_strappend(pb, ": ");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  677|  85.4k|		else
  678|  85.4k|			printbuf_strappend(pb, ":");
  ------------------
  |  |   97|  85.4k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  85.4k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  679|       |
  680|  85.4k|		if (iter.val == NULL) {
  ------------------
  |  Branch (680:7): [True: 48, False: 85.4k]
  ------------------
  681|     48|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     48|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (681:8): [True: 0, False: 48]
  ------------------
  682|      0|				printbuf_strappend(pb, ANSI_COLOR_FG_MAGENTA);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  683|     48|			printbuf_strappend(pb, "null");
  ------------------
  |  |   97|     48|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|     48|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  684|     48|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     48|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (684:8): [True: 0, False: 48]
  ------------------
  685|      0|				printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  686|  85.4k|		} else if (iter.val->_to_json_string(iter.val, pb, level + 1, flags) < 0)
  ------------------
  |  Branch (686:14): [True: 0, False: 85.4k]
  ------------------
  687|      0|			return -1;
  688|  85.4k|	}
  689|  44.2k|	if ((flags & JSON_C_TO_STRING_PRETTY) && had_children)
  ------------------
  |  |   58|  44.2k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (689:6): [True: 0, False: 44.2k]
  |  Branch (689:43): [True: 0, False: 0]
  ------------------
  690|      0|	{
  691|      0|		printbuf_strappend(pb, "\n");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  692|      0|		indent(pb, level, flags);
  693|      0|	}
  694|  44.2k|	if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|  88.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 (694:6): [True: 0, False: 44.2k]
  |  Branch (694:41): [True: 0, False: 0]
  ------------------
  695|      0|		return printbuf_strappend(pb, /*{*/ " }");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  696|  44.2k|	else
  697|  44.2k|		return printbuf_strappend(pb, /*{*/ "}");
  ------------------
  |  |   97|  44.2k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  44.2k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  698|  44.2k|}
json_object.c:indent:
  630|   104k|{
  631|   104k|	if (flags & JSON_C_TO_STRING_PRETTY)
  ------------------
  |  |   58|   104k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (631:6): [True: 0, False: 104k]
  ------------------
  632|      0|	{
  633|      0|		if (flags & JSON_C_TO_STRING_PRETTY_TAB)
  ------------------
  |  |   66|      0|#define JSON_C_TO_STRING_PRETTY_TAB (1 << 3)
  ------------------
  |  Branch (633:7): [True: 0, False: 0]
  ------------------
  634|      0|		{
  635|      0|			printbuf_memset(pb, -1, '\t', level);
  636|      0|		}
  637|      0|		else
  638|      0|		{
  639|      0|			printbuf_memset(pb, -1, ' ', level * 2);
  640|      0|		}
  641|      0|	}
  642|   104k|}
json_object.c:json_escape_str:
  190|   141k|{
  191|   141k|	size_t pos = 0, start_offset = 0;
  192|   141k|	unsigned char c;
  193|  2.05M|	while (len)
  ------------------
  |  Branch (193:9): [True: 1.91M, False: 141k]
  ------------------
  194|  1.91M|	{
  195|  1.91M|		--len;
  196|  1.91M|		c = str[pos];
  197|  1.91M|		switch (c)
  198|  1.91M|		{
  199|    900|		case '\b':
  ------------------
  |  Branch (199:3): [True: 900, False: 1.91M]
  ------------------
  200|  18.4k|		case '\n':
  ------------------
  |  Branch (200:3): [True: 17.5k, False: 1.89M]
  ------------------
  201|  18.7k|		case '\r':
  ------------------
  |  Branch (201:3): [True: 284, False: 1.91M]
  ------------------
  202|  24.9k|		case '\t':
  ------------------
  |  Branch (202:3): [True: 6.13k, False: 1.90M]
  ------------------
  203|  26.2k|		case '\f':
  ------------------
  |  Branch (203:3): [True: 1.36k, False: 1.91M]
  ------------------
  204|  32.5k|		case '"':
  ------------------
  |  Branch (204:3): [True: 6.32k, False: 1.90M]
  ------------------
  205|  44.7k|		case '\\':
  ------------------
  |  Branch (205:3): [True: 12.1k, False: 1.90M]
  ------------------
  206|  74.2k|		case '/':
  ------------------
  |  Branch (206:3): [True: 29.4k, False: 1.88M]
  ------------------
  207|  74.2k|			if ((flags & JSON_C_TO_STRING_NOSLASHESCAPE) && c == '/')
  ------------------
  |  |   75|  74.2k|#define JSON_C_TO_STRING_NOSLASHESCAPE (1 << 4)
  ------------------
  |  Branch (207:8): [True: 74.2k, False: 0]
  |  Branch (207:52): [True: 29.4k, False: 44.7k]
  ------------------
  208|  29.4k|			{
  209|  29.4k|				pos++;
  210|  29.4k|				break;
  211|  29.4k|			}
  212|       |
  213|  44.7k|			if (pos > start_offset)
  ------------------
  |  Branch (213:8): [True: 27.0k, False: 17.7k]
  ------------------
  214|  27.0k|			{
  215|  27.0k|				if (printbuf_memappend(pb, str + start_offset, pos - start_offset) < 0)
  ------------------
  |  Branch (215:9): [True: 0, False: 27.0k]
  ------------------
  216|      0|					return -1;
  217|  27.0k|			}
  218|       |
  219|  44.7k|			{
  220|  44.7k|				const char *esc;
  221|  44.7k|				switch (c)
  222|  44.7k|				{
  223|    900|				case '\b': esc = "\\b"; break;
  ------------------
  |  Branch (223:5): [True: 900, False: 43.8k]
  ------------------
  224|  17.5k|				case '\n': esc = "\\n"; break;
  ------------------
  |  Branch (224:5): [True: 17.5k, False: 27.1k]
  ------------------
  225|    284|				case '\r': esc = "\\r"; break;
  ------------------
  |  Branch (225:5): [True: 284, False: 44.4k]
  ------------------
  226|  6.13k|				case '\t': esc = "\\t"; break;
  ------------------
  |  Branch (226:5): [True: 6.13k, False: 38.6k]
  ------------------
  227|  1.36k|				case '\f': esc = "\\f"; break;
  ------------------
  |  Branch (227:5): [True: 1.36k, False: 43.3k]
  ------------------
  228|  6.32k|				case '"':  esc = "\\\""; break;
  ------------------
  |  Branch (228:5): [True: 6.32k, False: 38.4k]
  ------------------
  229|  12.1k|				case '\\': esc = "\\\\"; break;
  ------------------
  |  Branch (229:5): [True: 12.1k, False: 32.5k]
  ------------------
  230|      0|				default:   esc = "\\/"; break;
  ------------------
  |  Branch (230:5): [True: 0, False: 44.7k]
  ------------------
  231|  44.7k|				}
  232|  44.7k|				if (printbuf_memappend(pb, esc, 2) < 0)
  ------------------
  |  Branch (232:9): [True: 0, False: 44.7k]
  ------------------
  233|      0|					return -1;
  234|  44.7k|			}
  235|       |
  236|  44.7k|			start_offset = ++pos;
  237|  44.7k|			break;
  238|  1.83M|		default:
  ------------------
  |  Branch (238:3): [True: 1.83M, False: 74.2k]
  ------------------
  239|  1.83M|			if (c < ' ')
  ------------------
  |  Branch (239:8): [True: 140k, False: 1.69M]
  ------------------
  240|   140k|			{
  241|   140k|				char sbuf[7];
  242|   140k|				if (pos > start_offset)
  ------------------
  |  Branch (242:9): [True: 1.78k, False: 138k]
  ------------------
  243|  1.78k|				{
  244|  1.78k|					if (printbuf_memappend(pb, str + start_offset,
  ------------------
  |  Branch (244:10): [True: 0, False: 1.78k]
  ------------------
  245|  1.78k|					                       pos - start_offset) < 0)
  246|      0|						return -1;
  247|  1.78k|				}
  248|   140k|				snprintf(sbuf, sizeof(sbuf), "\\u00%c%c", json_hex_chars[c >> 4],
  249|   140k|				         json_hex_chars[c & 0xf]);
  250|   140k|				if (printbuf_memappend(pb, sbuf, (int)sizeof(sbuf) - 1) < 0)
  ------------------
  |  Branch (250:9): [True: 0, False: 140k]
  ------------------
  251|      0|					return -1;
  252|   140k|				start_offset = ++pos;
  253|   140k|			}
  254|  1.69M|			else
  255|  1.69M|				pos++;
  256|  1.91M|		}
  257|  1.91M|	}
  258|   141k|	if (pos > start_offset)
  ------------------
  |  Branch (258:6): [True: 139k, False: 1.57k]
  ------------------
  259|   139k|	{
  260|   139k|		if (printbuf_memappend(pb, str + start_offset, pos - start_offset) < 0)
  ------------------
  |  Branch (260:7): [True: 0, False: 139k]
  ------------------
  261|      0|			return -1;
  262|   139k|	}
  263|   141k|	return 0;
  264|   141k|}
json_object.c:json_object_new:
  501|   189k|{
  502|   189k|	struct json_object *jso;
  503|       |
  504|   189k|	jso = (struct json_object *)malloc(alloc_size);
  505|   189k|	if (!jso)
  ------------------
  |  Branch (505:6): [True: 0, False: 189k]
  ------------------
  506|      0|		return NULL;
  507|       |
  508|   189k|	jso->o_type = o_type;
  509|   189k|	jso->_ref_count = 1;
  510|   189k|	jso->_to_json_string = to_json_string;
  511|   189k|	jso->_pb = NULL;
  512|   189k|	jso->_user_delete = NULL;
  513|   189k|	jso->_userdata = NULL;
  514|       |	//jso->...   // Type-specific fields must be set by caller
  515|       |
  516|   189k|	return jso;
  517|   189k|}
json_object.c:json_object_lh_entry_free:
  701|   136k|{
  702|   136k|	struct json_object *jso = (struct json_object *)lh_entry_v(ent);
  703|   136k|	if (!lh_entry_k_is_constant(ent))
  ------------------
  |  Branch (703:6): [True: 136k, False: 0]
  ------------------
  704|   136k|		free(lh_entry_k(ent));
  705|   136k|	if (jso) // micro-opt, skip func call on null object
  ------------------
  |  Branch (705:6): [True: 456, False: 136k]
  ------------------
  706|    456|		json_object_put(jso);
  707|   136k|}
json_object.c:json_object_generic_delete:
  494|   189k|{
  495|   189k|	printbuf_free(jso->_pb);
  496|   189k|	free(jso);
  497|   189k|}
json_object.c:JC_OBJECT_C:
   85|   391k|{
   86|   391k|	return (const void *)jso;
   87|   391k|}
json_object.c:json_object_boolean_to_json_string:
  843|     44|{
  844|     44|	int ret;
  845|       |
  846|     44|	if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     44|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (846:6): [True: 0, False: 44]
  ------------------
  847|      0|		printbuf_strappend(pb, ANSI_COLOR_FG_MAGENTA);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  848|       |
  849|     44|	if (JC_BOOL(jso)->c_boolean)
  ------------------
  |  Branch (849:6): [True: 26, False: 18]
  ------------------
  850|     26|		ret = printbuf_strappend(pb, "true");
  ------------------
  |  |   97|     26|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|     26|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  851|     18|	else
  852|     18|		ret = printbuf_strappend(pb, "false");
  ------------------
  |  |   97|     18|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|     18|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  853|     44|	if (ret > -1 && flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     44|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (853:6): [True: 44, False: 0]
  |  Branch (853:18): [True: 0, False: 44]
  ------------------
  854|      0|		return printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
  855|     44|	return ret;
  856|     44|}
json_object.c:JC_BOOL_C:
  101|      5|{
  102|      5|	return (const void *)jso;
  103|      5|}
json_object.c:JC_INT_C:
  117|    422|{
  118|    422|	return (const void *)jso;
  119|    422|}
json_object.c:JC_DOUBLE_C:
  109|      3|{
  110|      3|	return (const void *)jso;
  111|      3|}
json_object.c:JC_STRING_C:
  125|   248k|{
  126|   248k|	return (const void *)jso;
  127|   248k|}
json_object.c:JC_BOOL:
   97|     65|{
   98|     65|	return (void *)jso;
   99|     65|}
json_object.c:json_object_int_to_json_string:
  899|  1.54k|{
  900|       |	/* room for 19 digits, the sign char, and a null term */
  901|  1.54k|	char sbuf[21];
  902|  1.54k|	if (JC_INT(jso)->cint_type == json_object_int_type_int64)
  ------------------
  |  Branch (902:6): [True: 1.52k, False: 20]
  ------------------
  903|  1.52k|		snprintf(sbuf, sizeof(sbuf), "%" PRId64, JC_INT(jso)->cint.c_int64);
  904|     20|	else
  905|     20|		snprintf(sbuf, sizeof(sbuf), "%" PRIu64, JC_INT(jso)->cint.c_uint64);
  906|  1.54k|	return printbuf_memappend(pb, sbuf, strlen(sbuf));
  907|  1.54k|}
json_object.c:get_string_component:
  183|   248k|{
  184|   248k|	return get_string_component_mutable((void *)(uintptr_t)(const void *)jso);
  185|   248k|}
json_object.c:get_string_component_mutable:
  174|   248k|{
  175|   248k|	if (JC_STRING_C(jso)->len < 0)
  ------------------
  |  Branch (175:6): [True: 0, False: 248k]
  ------------------
  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|   248k|	return JC_STRING(jso)->c_string.idata;
  181|   248k|}
json_object.c:JC_INT:
  113|  4.30k|{
  114|  4.30k|	return (void *)jso;
  115|  4.30k|}
json_object.c:json_object_double_to_json_string_default:
 1356|     26|{
 1357|       |	return json_object_double_to_json_string_format(jso, pb, level, flags, NULL);
 1358|     26|}
json_object.c:json_object_double_to_json_string_format:
 1263|     26|{
 1264|     26|	struct json_object_double *jsodbl = JC_DOUBLE(jso);
 1265|     26|	char buf[128], *p, *q;
 1266|     26|	int size;
 1267|       |	/* Although JSON RFC does not support
 1268|       |	 * NaN or Infinity as numeric values
 1269|       |	 * ECMA 262 section 9.8.1 defines
 1270|       |	 * how to handle these cases as strings
 1271|       |	 */
 1272|     26|	if (isnan(jsodbl->c_double))
  ------------------
  |  Branch (1272:6): [True: 26, False: 0]
  ------------------
 1273|     26|	{
 1274|     26|		size = snprintf(buf, sizeof(buf), "NaN");
 1275|     26|	}
 1276|      0|	else if (isinf(jsodbl->c_double))
  ------------------
  |  Branch (1276:11): [True: 0, False: 0]
  ------------------
 1277|      0|	{
 1278|      0|		if (jsodbl->c_double > 0)
  ------------------
  |  Branch (1278:7): [True: 0, False: 0]
  ------------------
 1279|      0|			size = snprintf(buf, sizeof(buf), "Infinity");
 1280|      0|		else
 1281|      0|			size = snprintf(buf, sizeof(buf), "-Infinity");
 1282|      0|	}
 1283|      0|	else
 1284|      0|	{
 1285|      0|		const char *std_format = "%.17g";
 1286|      0|		int format_drops_decimals = 0;
 1287|      0|		int looks_numeric = 0;
 1288|       |
 1289|      0|		if (!format)
  ------------------
  |  Branch (1289:7): [True: 0, False: 0]
  ------------------
 1290|      0|		{
 1291|      0|#if defined(HAVE___THREAD)
 1292|      0|			if (tls_serialization_float_format)
  ------------------
  |  Branch (1292:8): [True: 0, False: 0]
  ------------------
 1293|      0|				format = tls_serialization_float_format;
 1294|      0|			else
 1295|      0|#endif
 1296|      0|			    if (global_serialization_float_format)
  ------------------
  |  Branch (1296:12): [True: 0, False: 0]
  ------------------
 1297|      0|				format = global_serialization_float_format;
 1298|      0|			else
 1299|      0|				format = std_format;
 1300|      0|		}
 1301|      0|		size = snprintf(buf, sizeof(buf), format, jsodbl->c_double);
 1302|       |
 1303|      0|		if (size < 0)
  ------------------
  |  Branch (1303:7): [True: 0, False: 0]
  ------------------
 1304|      0|			return -1;
 1305|       |
 1306|      0|		p = strchr(buf, ',');
 1307|      0|		if (p)
  ------------------
  |  Branch (1307:7): [True: 0, False: 0]
  ------------------
 1308|      0|			*p = '.';
 1309|      0|		else
 1310|      0|			p = strchr(buf, '.');
 1311|       |
 1312|      0|		if (format == std_format || strstr(format, ".0f") == NULL)
  ------------------
  |  Branch (1312:7): [True: 0, False: 0]
  |  Branch (1312:31): [True: 0, False: 0]
  ------------------
 1313|      0|			format_drops_decimals = 1;
 1314|       |
 1315|      0|		looks_numeric = /* Looks like *some* kind of number */
 1316|      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 (1316:34): [True: 0, False: 0]
  |  Branch (1316:46): [True: 0, False: 0]
  ------------------
 1317|       |
 1318|      0|		if (size < (int)sizeof(buf) - 2 && looks_numeric && !p && /* Has no decimal point */
  ------------------
  |  Branch (1318:7): [True: 0, False: 0]
  |  Branch (1318:38): [True: 0, False: 0]
  |  Branch (1318:55): [True: 0, False: 0]
  ------------------
 1319|      0|		    strchr(buf, 'e') == NULL && /* Not scientific notation */
  ------------------
  |  Branch (1319:7): [True: 0, False: 0]
  ------------------
 1320|      0|		    format_drops_decimals)
  ------------------
  |  Branch (1320:7): [True: 0, False: 0]
  ------------------
 1321|      0|		{
 1322|       |			// Ensure it looks like a float, even if snprintf didn't,
 1323|       |			//  unless a custom format is set to omit the decimal.
 1324|      0|			strcat(buf, ".0");
 1325|      0|			size += 2;
 1326|      0|		}
 1327|      0|		if (p && (flags & JSON_C_TO_STRING_NOZERO))
  ------------------
  |  |   70|      0|#define JSON_C_TO_STRING_NOZERO (1 << 2)
  ------------------
  |  Branch (1327:7): [True: 0, False: 0]
  |  Branch (1327:12): [True: 0, False: 0]
  ------------------
 1328|      0|		{
 1329|       |			/* last useful digit, always keep 1 zero */
 1330|      0|			p++;
 1331|      0|			for (q = p; *q; q++)
  ------------------
  |  Branch (1331:16): [True: 0, False: 0]
  ------------------
 1332|      0|			{
 1333|      0|				if (*q != '0')
  ------------------
  |  Branch (1333:9): [True: 0, False: 0]
  ------------------
 1334|      0|					p = q;
 1335|      0|			}
 1336|       |			/* drop trailing zeroes */
 1337|      0|			if (*p != 0)
  ------------------
  |  Branch (1337:8): [True: 0, False: 0]
  ------------------
 1338|      0|				*(++p) = 0;
 1339|      0|			size = p - buf;
 1340|      0|		}
 1341|      0|	}
 1342|       |	// although unlikely, snprintf can fail
 1343|     26|	if (size < 0)
  ------------------
  |  Branch (1343:6): [True: 0, False: 26]
  ------------------
 1344|      0|		return -1;
 1345|       |
 1346|     26|	if (size >= (int)sizeof(buf))
  ------------------
  |  Branch (1346:6): [True: 0, False: 26]
  ------------------
 1347|       |		// The standard formats are guaranteed not to overrun the buffer,
 1348|       |		// but if a custom one happens to do so, just silently truncate.
 1349|      0|		size = sizeof(buf) - 1;
 1350|     26|	printbuf_memappend(pb, buf, size);
 1351|     26|	return size;
 1352|     26|}
json_object.c:_json_object_userdata_to_json_string:
 1403|    217|{
 1404|    217|	return json_object_userdata_to_json_string(jso, pb, level, flags);
 1405|    217|}
json_object.c:JC_DOUBLE:
  105|    146|{
  106|    146|	return (void *)jso;
  107|    146|}
json_object.c:json_object_string_to_json_string:
 1525|  56.0k|{
 1526|  56.0k|	ssize_t len = JC_STRING(jso)->len;
 1527|  56.0k|	if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  56.0k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1527:6): [True: 0, False: 56.0k]
  ------------------
 1528|      0|		printbuf_strappend(pb, ANSI_COLOR_FG_GREEN);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1529|  56.0k|	printbuf_strappend(pb, "\"");
  ------------------
  |  |   97|  56.0k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  56.0k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1530|  56.0k|	if (json_escape_str(pb, get_string_component(jso), len < 0 ? -(ssize_t)len : len, flags) < 0)
  ------------------
  |  Branch (1530:6): [True: 0, False: 56.0k]
  |  Branch (1530:53): [True: 0, False: 56.0k]
  ------------------
 1531|      0|		return -1;
 1532|  56.0k|	printbuf_strappend(pb, "\"");
  ------------------
  |  |   97|  56.0k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  56.0k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1533|  56.0k|	if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|  56.0k|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1533:6): [True: 0, False: 56.0k]
  ------------------
 1534|      0|		printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1535|  56.0k|	return 0;
 1536|  56.0k|}
json_object.c:_json_object_new_string:
 1546|  96.1k|{
 1547|  96.1k|	size_t objsize;
 1548|  96.1k|	struct json_object_string *jso;
 1549|       |
 1550|       |	/*
 1551|       |	 * Structures           Actual memory layout
 1552|       |	 * -------------------  --------------------
 1553|       |	 * [json_object_string  [json_object_string
 1554|       |	 *  [json_object]        [json_object]
 1555|       |	 *  ...other fields...   ...other fields...
 1556|       |	 *  c_string]            len
 1557|       |	 *                       bytes
 1558|       |	 *                       of
 1559|       |	 *                       string
 1560|       |	 *                       data
 1561|       |	 *                       \0]
 1562|       |	 */
 1563|  96.1k|	if (len > (SSIZE_T_MAX - (sizeof(*jso) - sizeof(jso->c_string)) - 1))
  ------------------
  |  |   51|  96.1k|#define SSIZE_T_MAX LONG_MAX
  ------------------
  |  Branch (1563:6): [True: 0, False: 96.1k]
  ------------------
 1564|      0|		return NULL;
 1565|  96.1k|	objsize = (sizeof(*jso) - sizeof(jso->c_string)) + len + 1;
 1566|  96.1k|	if (len < sizeof(void *))
  ------------------
  |  Branch (1566:6): [True: 65.7k, False: 30.3k]
  ------------------
 1567|       |		// We need a minimum size to support json_object_set_string() mutability
 1568|       |		// so we can stuff a pointer into pdata :(
 1569|  65.7k|		objsize += sizeof(void *) - len;
 1570|       |
 1571|  96.1k|	jso = (struct json_object_string *)json_object_new(json_type_string, objsize,
 1572|  96.1k|	                                                   &json_object_string_to_json_string);
 1573|       |
 1574|  96.1k|	if (!jso)
  ------------------
  |  Branch (1574:6): [True: 0, False: 96.1k]
  ------------------
 1575|      0|		return NULL;
 1576|  96.1k|	jso->len = len;
 1577|  96.1k|	memcpy(jso->c_string.idata, s, len);
 1578|       |	// Cast below needed for Clang UB sanitizer
 1579|  96.1k|	((char *)jso->c_string.idata)[len] = '\0';
 1580|  96.1k|	return &jso->base;
 1581|  96.1k|}
json_object.c:_json_object_get_string_len:
 1605|  19.9k|{
 1606|  19.9k|	ssize_t len;
 1607|  19.9k|	len = jso->len;
 1608|  19.9k|	return (len < 0) ? -(ssize_t)len : len;
  ------------------
  |  Branch (1608:9): [True: 0, False: 19.9k]
  ------------------
 1609|  19.9k|}
json_object.c:json_object_array_to_json_string:
 1688|  8.16k|{
 1689|  8.16k|	int had_children = 0;
 1690|  8.16k|	size_t ii, array_len;
 1691|       |
 1692|  8.16k|	printbuf_strappend(pb, "[");
  ------------------
  |  |   97|  8.16k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  8.16k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1693|  8.16k|	array_len = json_object_array_length(jso);
 1694|  26.7k|	for (ii = 0; ii < array_len; ii++)
  ------------------
  |  Branch (1694:15): [True: 18.5k, False: 8.16k]
  ------------------
 1695|  18.5k|	{
 1696|  18.5k|		struct json_object *val;
 1697|  18.5k|		if (had_children)
  ------------------
  |  Branch (1697:7): [True: 10.7k, False: 7.80k]
  ------------------
 1698|  10.7k|		{
 1699|  10.7k|			printbuf_strappend(pb, ",");
  ------------------
  |  |   97|  10.7k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  10.7k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1700|  10.7k|		}
 1701|  18.5k|		if (flags & JSON_C_TO_STRING_PRETTY)
  ------------------
  |  |   58|  18.5k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (1701:7): [True: 0, False: 18.5k]
  ------------------
 1702|      0|			printbuf_strappend(pb, "\n");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1703|  18.5k|		had_children = 1;
 1704|  18.5k|		if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|  37.1k|#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 (1704:7): [True: 0, False: 18.5k]
  |  Branch (1704:42): [True: 0, False: 0]
  ------------------
 1705|      0|			printbuf_strappend(pb, " ");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1706|  18.5k|		indent(pb, level + 1, flags);
 1707|  18.5k|		val = json_object_array_get_idx(jso, ii);
 1708|  18.5k|		if (val == NULL) {
  ------------------
  |  Branch (1708:7): [True: 38, False: 18.5k]
  ------------------
 1709|       |
 1710|     38|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     38|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1710:8): [True: 0, False: 38]
  ------------------
 1711|      0|				printbuf_strappend(pb, ANSI_COLOR_FG_MAGENTA);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1712|     38|			printbuf_strappend(pb, "null");
  ------------------
  |  |   97|     38|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|     38|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1713|     38|			if (flags & JSON_C_TO_STRING_COLOR)
  ------------------
  |  |   84|     38|#define JSON_C_TO_STRING_COLOR (1 << 5)
  ------------------
  |  Branch (1713:8): [True: 0, False: 38]
  ------------------
 1714|      0|				printbuf_strappend(pb, ANSI_COLOR_RESET);
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1715|       |
 1716|  18.5k|		} else if (val->_to_json_string(val, pb, level + 1, flags) < 0)
  ------------------
  |  Branch (1716:14): [True: 0, False: 18.5k]
  ------------------
 1717|      0|			return -1;
 1718|  18.5k|	}
 1719|  8.16k|	if ((flags & JSON_C_TO_STRING_PRETTY) && had_children)
  ------------------
  |  |   58|  8.16k|#define JSON_C_TO_STRING_PRETTY (1 << 1)
  ------------------
  |  Branch (1719:6): [True: 0, False: 8.16k]
  |  Branch (1719:43): [True: 0, False: 0]
  ------------------
 1720|      0|	{
 1721|      0|		printbuf_strappend(pb, "\n");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1722|      0|		indent(pb, level, flags);
 1723|      0|	}
 1724|       |
 1725|  8.16k|	if (flags & JSON_C_TO_STRING_SPACED && !(flags & JSON_C_TO_STRING_PRETTY))
  ------------------
  |  |   49|  16.3k|#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 (1725:6): [True: 0, False: 8.16k]
  |  Branch (1725:41): [True: 0, False: 0]
  ------------------
 1726|      0|		return printbuf_strappend(pb, " ]");
  ------------------
  |  |   97|      0|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|      0|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1727|  8.16k|	return printbuf_strappend(pb, "]");
  ------------------
  |  |   97|  8.16k|	printbuf_memappend((pb), _printbuf_check_literal(str), sizeof(str) - 1)
  |  |  ------------------
  |  |  |  |   80|  8.16k|#define _printbuf_check_literal(mystr) ("" mystr)
  |  |  ------------------
  ------------------
 1728|  8.16k|}
json_object.c:JC_ARRAY_C:
   93|   158k|{
   94|   158k|	return (const void *)jso;
   95|   158k|}
json_object.c:JC_STRING:
  121|   420k|{
  122|   420k|	return (void *)jso;
  123|   420k|}
json_object.c:json_object_deep_copy_recursive:
 2034|  39.0k|{
 2035|  39.0k|	struct json_object_iter iter;
 2036|  39.0k|	size_t src_array_len, ii;
 2037|       |
 2038|  39.0k|	int shallow_copy_rc = 0;
 2039|  39.0k|	shallow_copy_rc = shallow_copy(src, parent, key_in_parent, index_in_parent, dst);
 2040|       |	/* -1=error, 1=object created ok, 2=userdata set */
 2041|  39.0k|	if (shallow_copy_rc < 1)
  ------------------
  |  Branch (2041:6): [True: 0, False: 39.0k]
  ------------------
 2042|      0|	{
 2043|      0|		errno = EINVAL;
 2044|      0|		return -1;
 2045|      0|	}
 2046|  39.0k|	assert(*dst != NULL);
  ------------------
  |  Branch (2046:2): [True: 0, False: 39.0k]
  |  Branch (2046:2): [True: 39.0k, False: 0]
  ------------------
 2047|       |
 2048|  39.0k|	switch (src->o_type)
 2049|  39.0k|	{
 2050|  15.3k|	case json_type_object:
  ------------------
  |  Branch (2050:2): [True: 15.3k, False: 23.7k]
  ------------------
 2051|  15.3k|		json_object_object_foreachC(src, iter)
  ------------------
  |  |  530|  15.3k|	for (iter.entry = lh_table_head(json_object_get_object(obj));                                    \
  |  |  531|  45.0k|	     (iter.entry ? (iter.key = (char *)lh_entry_k(iter.entry),                          \
  |  |  ------------------
  |  |  |  Branch (531:7): [True: 29.7k, False: 15.3k]
  |  |  |  Branch (531:8): [True: 29.7k, False: 15.3k]
  |  |  ------------------
  |  |  532|  29.7k|	                   iter.val = (struct json_object *)lh_entry_v(iter.entry), iter.entry) \
  |  |  533|  45.0k|	                 : 0);                                                                  \
  |  |  534|  29.7k|	     iter.entry = lh_entry_next(iter.entry))
  ------------------
 2052|  29.7k|		{
 2053|  29.7k|			struct json_object *jso = NULL;
 2054|       |			/* This handles the `json_type_null` case */
 2055|  29.7k|			if (!iter.val)
  ------------------
  |  Branch (2055:8): [True: 22, False: 29.7k]
  ------------------
 2056|     22|				jso = NULL;
 2057|  29.7k|			else if (json_object_deep_copy_recursive(iter.val, src, iter.key, UINT_MAX,
  ------------------
  |  Branch (2057:13): [True: 0, False: 29.7k]
  ------------------
 2058|  29.7k|			                                         &jso, shallow_copy) < 0)
 2059|      0|			{
 2060|      0|				json_object_put(jso);
 2061|      0|				return -1;
 2062|      0|			}
 2063|       |
 2064|  29.7k|			if (json_object_object_add(*dst, iter.key, jso) < 0)
  ------------------
  |  Branch (2064:8): [True: 0, False: 29.7k]
  ------------------
 2065|      0|			{
 2066|      0|				json_object_put(jso);
 2067|      0|				return -1;
 2068|      0|			}
 2069|  29.7k|		}
 2070|  15.3k|		break;
 2071|       |
 2072|  15.3k|	case json_type_array:
  ------------------
  |  Branch (2072:2): [True: 2.99k, False: 36.0k]
  ------------------
 2073|  2.99k|		src_array_len = json_object_array_length(src);
 2074|  10.1k|		for (ii = 0; ii < src_array_len; ii++)
  ------------------
  |  Branch (2074:16): [True: 7.16k, False: 2.99k]
  ------------------
 2075|  7.16k|		{
 2076|  7.16k|			struct json_object *jso = NULL;
 2077|  7.16k|			struct json_object *jso1 = json_object_array_get_idx(src, ii);
 2078|       |			/* This handles the `json_type_null` case */
 2079|  7.16k|			if (!jso1)
  ------------------
  |  Branch (2079:8): [True: 19, False: 7.14k]
  ------------------
 2080|     19|				jso = NULL;
 2081|  7.14k|			else if (json_object_deep_copy_recursive(jso1, src, NULL, ii, &jso,
  ------------------
  |  Branch (2081:13): [True: 0, False: 7.14k]
  ------------------
 2082|  7.14k|			                                         shallow_copy) < 0)
 2083|      0|			{
 2084|      0|				json_object_put(jso);
 2085|      0|				return -1;
 2086|      0|			}
 2087|       |
 2088|  7.16k|			if (json_object_array_add(*dst, jso) < 0)
  ------------------
  |  Branch (2088:8): [True: 0, False: 7.16k]
  ------------------
 2089|      0|			{
 2090|      0|				json_object_put(jso);
 2091|      0|				return -1;
 2092|      0|			}
 2093|  7.16k|		}
 2094|  2.99k|		break;
 2095|       |
 2096|  20.7k|	default:
  ------------------
  |  Branch (2096:2): [True: 20.7k, False: 18.3k]
  ------------------
 2097|  20.7k|		break;
 2098|       |		/* else, nothing to do, shallow_copy already did. */
 2099|  39.0k|	}
 2100|       |
 2101|  39.0k|	if (shallow_copy_rc != 2)
  ------------------
  |  Branch (2101:6): [True: 39.0k, False: 0]
  ------------------
 2102|  39.0k|		return json_object_copy_serializer_data(src, *dst);
 2103|       |
 2104|      0|	return 0;
 2105|  39.0k|}
json_object.c:json_object_copy_serializer_data:
 1943|  39.0k|{
 1944|  39.0k|	if (!src->_userdata && !src->_user_delete)
  ------------------
  |  Branch (1944:6): [True: 38.9k, False: 107]
  |  Branch (1944:25): [True: 38.9k, False: 0]
  ------------------
 1945|  38.9k|		return 0;
 1946|       |
 1947|    107|	if (dst->_to_json_string == json_object_userdata_to_json_string ||
  ------------------
  |  Branch (1947:6): [True: 0, False: 107]
  ------------------
 1948|    107|	    dst->_to_json_string == _json_object_userdata_to_json_string)
  ------------------
  |  Branch (1948:6): [True: 107, False: 0]
  ------------------
 1949|    107|	{
 1950|    107|		char *p;
 1951|    107|		assert(src->_userdata);
  ------------------
  |  Branch (1951:3): [True: 0, False: 107]
  |  Branch (1951:3): [True: 107, False: 0]
  ------------------
 1952|    107|		p = strdup(src->_userdata);
 1953|    107|		if (p == NULL)
  ------------------
  |  Branch (1953:7): [True: 0, False: 107]
  ------------------
 1954|      0|		{
 1955|      0|			_json_c_set_last_err("json_object_copy_serializer_data: out of memory\n");
 1956|      0|			return -1;
 1957|      0|		}
 1958|    107|		dst->_userdata = p;
 1959|    107|	}
 1960|       |	// else if ... other supported serializers ...
 1961|      0|	else
 1962|      0|	{
 1963|      0|		_json_c_set_last_err(
 1964|      0|		    "json_object_copy_serializer_data: unable to copy unknown serializer data: "
 1965|      0|		    "%p\n", (void *)dst->_to_json_string);
 1966|      0|		return -1;
 1967|      0|	}
 1968|    107|	dst->_user_delete = src->_user_delete;
 1969|    107|	return 0;
 1970|    107|}

json_tokener_error_desc:
  133|    419|{
  134|    419|	int jerr_int = (int)jerr;
  135|    419|	if (jerr_int < 0 ||
  ------------------
  |  Branch (135:6): [True: 0, False: 419]
  ------------------
  136|    419|	    jerr_int >= (int)(sizeof(json_tokener_errors) / sizeof(json_tokener_errors[0])))
  ------------------
  |  Branch (136:6): [True: 0, False: 419]
  ------------------
  137|      0|		return "Unknown error, "
  138|      0|		       "invalid json_tokener_error value passed to json_tokener_error_desc()";
  139|    419|	return json_tokener_errors[jerr];
  140|    419|}
json_tokener_get_error:
  143|    838|{
  144|    838|	return tok->err;
  145|    838|}
json_tokener_new_ex:
  154|  7.00k|{
  155|  7.00k|	struct json_tokener *tok;
  156|       |
  157|  7.00k|	if (depth < 1)
  ------------------
  |  Branch (157:6): [True: 0, False: 7.00k]
  ------------------
  158|      0|		return NULL;
  159|       |
  160|  7.00k|	tok = (struct json_tokener *)calloc(1, sizeof(struct json_tokener));
  161|  7.00k|	if (!tok)
  ------------------
  |  Branch (161:6): [True: 0, False: 7.00k]
  ------------------
  162|      0|		return NULL;
  163|  7.00k|	tok->stack = (struct json_tokener_srec *)calloc(depth, sizeof(struct json_tokener_srec));
  164|  7.00k|	if (!tok->stack)
  ------------------
  |  Branch (164:6): [True: 0, False: 7.00k]
  ------------------
  165|      0|	{
  166|      0|		free(tok);
  167|      0|		return NULL;
  168|      0|	}
  169|  7.00k|	tok->pb = printbuf_new();
  170|  7.00k|	if (!tok->pb)
  ------------------
  |  Branch (170:6): [True: 0, False: 7.00k]
  ------------------
  171|      0|	{
  172|      0|		free(tok->stack);
  173|      0|		free(tok);
  174|      0|		return NULL;
  175|      0|	}
  176|  7.00k|	tok->max_depth = depth;
  177|  7.00k|	json_tokener_reset(tok);
  178|  7.00k|	return tok;
  179|  7.00k|}
json_tokener_new:
  182|  7.00k|{
  183|  7.00k|	return json_tokener_new_ex(JSON_TOKENER_DEFAULT_DEPTH);
  ------------------
  |  |   92|  7.00k|#define JSON_TOKENER_DEFAULT_DEPTH 32
  ------------------
  184|  7.00k|}
json_tokener_free:
  187|  7.00k|{
  188|  7.00k|	if (!tok)
  ------------------
  |  Branch (188:6): [True: 0, False: 7.00k]
  ------------------
  189|      0|		return;
  190|  7.00k|	json_tokener_reset(tok);
  191|  7.00k|	if (tok->pb)
  ------------------
  |  Branch (191:6): [True: 7.00k, False: 0]
  ------------------
  192|  7.00k|		printbuf_free(tok->pb);
  193|  7.00k|	free(tok->stack);
  194|  7.00k|	free(tok);
  195|  7.00k|}
json_tokener_reset:
  208|  14.0k|{
  209|  14.0k|	int i;
  210|  14.0k|	if (!tok)
  ------------------
  |  Branch (210:6): [True: 0, False: 14.0k]
  ------------------
  211|      0|		return;
  212|       |
  213|  29.0k|	for (i = tok->depth; i >= 0; i--)
  ------------------
  |  Branch (213:23): [True: 15.0k, False: 14.0k]
  ------------------
  214|  15.0k|		json_tokener_reset_level(tok, i);
  215|  14.0k|	tok->depth = 0;
  216|  14.0k|	tok->err = json_tokener_success;
  217|  14.0k|}
json_tokener_parse_ex:
  318|  7.00k|{
  319|  7.00k|	struct json_object *obj = NULL;
  320|  7.00k|	char c = '\1';
  321|  7.00k|	unsigned int nBytes = 0;
  322|  7.00k|	unsigned int *nBytesp = &nBytes;
  323|       |
  324|  7.00k|#ifdef HAVE_USELOCALE
  325|  7.00k|	locale_t oldlocale = uselocale(NULL);
  326|  7.00k|	locale_t newloc;
  327|       |#elif defined(HAVE_SETLOCALE)
  328|       |	char *oldlocale = NULL;
  329|       |#endif
  330|       |
  331|  7.00k|	tok->char_offset = 0;
  332|  7.00k|	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|  7.00k|	if ((len < -1) || (len == -1 && strlen(str) > INT32_MAX))
  ------------------
  |  Branch (340:6): [True: 0, False: 7.00k]
  |  Branch (340:21): [True: 0, False: 7.00k]
  |  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|  7.00k|#ifdef HAVE_USELOCALE
  347|  7.00k|	{
  348|  7.00k|#ifdef HAVE_DUPLOCALE
  349|  7.00k|		locale_t duploc = duplocale(oldlocale);
  350|  7.00k|		if (duploc == NULL && errno == ENOMEM)
  ------------------
  |  Branch (350:7): [True: 0, False: 7.00k]
  |  Branch (350:25): [True: 0, False: 0]
  ------------------
  351|      0|		{
  352|      0|			tok->err = json_tokener_error_memory;
  353|      0|			return NULL;
  354|      0|		}
  355|  7.00k|		newloc = newlocale(LC_NUMERIC_MASK, "C", duploc);
  356|       |#else
  357|       |		newloc = newlocale(LC_NUMERIC_MASK, "C", oldlocale);
  358|       |#endif
  359|  7.00k|		if (newloc == NULL)
  ------------------
  |  Branch (359:7): [True: 0, False: 7.00k]
  ------------------
  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|  7.00k|		uselocale(newloc);
  375|  7.00k|	}
  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|   844k|	while (PEEK_CHAR(c, tok)) // Note: c might be '\0' !
  ------------------
  |  |  285|   844k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:2): [True: 844k, False: 0]
  |  |  |  Branch (285:3): [True: 0, False: 844k]
  |  |  ------------------
  |  |  286|   844k|	     ? (((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|   844k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|   844k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 844k]
  |  |  ------------------
  |  |  291|   844k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|   844k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|   844k|	            : (((dest) = *str), 1)))
  ------------------
  394|   844k|	{
  395|       |
  396|  2.13M|	redo_char:
  397|  2.13M|		switch (state)
  ------------------
  |  |  261|  2.13M|#define state tok->stack[tok->depth].state
  |  |  ------------------
  |  |  |  Branch (261:15): [True: 2.13M, False: 0]
  |  |  ------------------
  ------------------
  398|  2.13M|		{
  399|       |
  400|   833k|		case json_tokener_state_eatws:
  ------------------
  |  Branch (400:3): [True: 833k, False: 1.29M]
  ------------------
  401|       |			/* Advance until we change state */
  402|  1.07M|			while (is_ws_char(c))
  ------------------
  |  Branch (402:11): [True: 243k, False: 833k]
  ------------------
  403|   243k|			{
  404|   243k|				if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok)))
  ------------------
  |  |  300|   243k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok)))
  ------------------
  |  |  285|   243k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 243k]
  |  |  ------------------
  |  |  286|   243k|	     ? (((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|   243k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|   243k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 243k]
  |  |  ------------------
  |  |  291|   243k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|   243k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|   243k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (404:9): [True: 0, False: 243k]
  |  Branch (404:38): [True: 0, False: 243k]
  ------------------
  405|      0|					goto out;
  406|   243k|			}
  407|   833k|			if (c == '/' && !(tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|  1.05k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (407:8): [True: 1.05k, False: 832k]
  |  Branch (407:20): [True: 1.05k, False: 0]
  ------------------
  408|  1.05k|			{
  409|  1.05k|				printbuf_reset(tok->pb);
  410|  1.05k|				printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.05k|	do {                                                  \
  |  |  308|  1.05k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.05k]
  |  |  ------------------
  |  |  309|  1.05k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.05k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.05k]
  |  |  ------------------
  ------------------
  411|  1.05k|				state = json_tokener_state_comment_start;
  ------------------
  |  |  261|  1.05k|#define state tok->stack[tok->depth].state
  ------------------
  412|  1.05k|			}
  413|   832k|			else
  414|   832k|			{
  415|   832k|				state = saved_state;
  ------------------
  |  |  261|   832k|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|   832k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  416|   832k|				goto redo_char;
  417|   832k|			}
  418|  1.05k|			break;
  419|       |
  420|   150k|		case json_tokener_state_start:
  ------------------
  |  Branch (420:3): [True: 150k, False: 1.98M]
  ------------------
  421|   150k|			switch (c)
  422|   150k|			{
  423|  50.7k|			case '{':
  ------------------
  |  Branch (423:4): [True: 50.7k, False: 100k]
  ------------------
  424|  50.7k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  50.7k|#define state tok->stack[tok->depth].state
  ------------------
  425|  50.7k|				saved_state = json_tokener_state_object_field_start;
  ------------------
  |  |  262|  50.7k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  426|  50.7k|				current = json_object_new_object();
  ------------------
  |  |  263|  50.7k|#define current tok->stack[tok->depth].current
  ------------------
  427|  50.7k|				if (current == NULL)
  ------------------
  |  |  263|  50.7k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (427:9): [True: 0, False: 50.7k]
  ------------------
  428|      0|				{
  429|      0|					tok->err = json_tokener_error_memory;
  430|      0|					goto out;
  431|      0|				}
  432|  50.7k|				break;
  433|  50.7k|			case '[':
  ------------------
  |  Branch (433:4): [True: 10.8k, False: 140k]
  ------------------
  434|  10.8k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  10.8k|#define state tok->stack[tok->depth].state
  ------------------
  435|  10.8k|				saved_state = json_tokener_state_array;
  ------------------
  |  |  262|  10.8k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  436|  10.8k|				current = json_object_new_array();
  ------------------
  |  |  263|  10.8k|#define current tok->stack[tok->depth].current
  ------------------
  437|  10.8k|				if (current == NULL)
  ------------------
  |  |  263|  10.8k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (437:9): [True: 0, False: 10.8k]
  ------------------
  438|      0|				{
  439|      0|					tok->err = json_tokener_error_memory;
  440|      0|					goto out;
  441|      0|				}
  442|  10.8k|				break;
  443|  10.8k|			case 'I':
  ------------------
  |  Branch (443:4): [True: 2, False: 150k]
  ------------------
  444|     17|			case 'i':
  ------------------
  |  Branch (444:4): [True: 15, False: 150k]
  ------------------
  445|     17|				state = json_tokener_state_inf;
  ------------------
  |  |  261|     17|#define state tok->stack[tok->depth].state
  ------------------
  446|     17|				printbuf_reset(tok->pb);
  447|     17|				tok->st_pos = 0;
  448|     17|				goto redo_char;
  449|    138|			case 'N':
  ------------------
  |  Branch (449:4): [True: 138, False: 150k]
  ------------------
  450|    383|			case 'n':
  ------------------
  |  Branch (450:4): [True: 245, False: 150k]
  ------------------
  451|    383|				state = json_tokener_state_null; // or NaN
  ------------------
  |  |  261|    383|#define state tok->stack[tok->depth].state
  ------------------
  452|    383|				printbuf_reset(tok->pb);
  453|    383|				tok->st_pos = 0;
  454|    383|				goto redo_char;
  455|    100|			case '\'':
  ------------------
  |  Branch (455:4): [True: 100, False: 150k]
  ------------------
  456|    100|				if (tok->flags & JSON_TOKENER_STRICT)
  ------------------
  |  |  159|    100|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (456:9): [True: 0, False: 100]
  ------------------
  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|  76.2k|			case '"':
  ------------------
  |  Branch (463:4): [True: 76.1k, False: 74.6k]
  ------------------
  464|  76.2k|				state = json_tokener_state_string;
  ------------------
  |  |  261|  76.2k|#define state tok->stack[tok->depth].state
  ------------------
  465|  76.2k|				printbuf_reset(tok->pb);
  466|  76.2k|				tok->quote_char = c;
  467|  76.2k|				break;
  468|     30|			case 'T':
  ------------------
  |  Branch (468:4): [True: 30, False: 150k]
  ------------------
  469|     76|			case 't':
  ------------------
  |  Branch (469:4): [True: 46, False: 150k]
  ------------------
  470|    199|			case 'F':
  ------------------
  |  Branch (470:4): [True: 123, False: 150k]
  ------------------
  471|    331|			case 'f':
  ------------------
  |  Branch (471:4): [True: 132, False: 150k]
  ------------------
  472|    331|				state = json_tokener_state_boolean;
  ------------------
  |  |  261|    331|#define state tok->stack[tok->depth].state
  ------------------
  473|    331|				printbuf_reset(tok->pb);
  474|    331|				tok->st_pos = 0;
  475|    331|				goto redo_char;
  476|  2.94k|			case '0':
  ------------------
  |  Branch (476:4): [True: 2.94k, False: 147k]
  ------------------
  477|  5.70k|			case '1':
  ------------------
  |  Branch (477:4): [True: 2.76k, False: 148k]
  ------------------
  478|  6.55k|			case '2':
  ------------------
  |  Branch (478:4): [True: 852, False: 149k]
  ------------------
  479|  6.92k|			case '3':
  ------------------
  |  Branch (479:4): [True: 373, False: 150k]
  ------------------
  480|  8.54k|			case '4':
  ------------------
  |  Branch (480:4): [True: 1.61k, False: 149k]
  ------------------
  481|  9.23k|			case '5':
  ------------------
  |  Branch (481:4): [True: 686, False: 150k]
  ------------------
  482|  9.37k|			case '6':
  ------------------
  |  Branch (482:4): [True: 142, False: 150k]
  ------------------
  483|  9.52k|			case '7':
  ------------------
  |  Branch (483:4): [True: 149, False: 150k]
  ------------------
  484|  9.59k|			case '8':
  ------------------
  |  Branch (484:4): [True: 72, False: 150k]
  ------------------
  485|  10.0k|			case '9':
  ------------------
  |  Branch (485:4): [True: 420, False: 150k]
  ------------------
  486|  12.1k|			case '-':
  ------------------
  |  Branch (486:4): [True: 2.12k, False: 148k]
  ------------------
  487|  12.1k|				state = json_tokener_state_number;
  ------------------
  |  |  261|  12.1k|#define state tok->stack[tok->depth].state
  ------------------
  488|  12.1k|				printbuf_reset(tok->pb);
  489|  12.1k|				tok->is_double = 0;
  490|  12.1k|				goto redo_char;
  491|     92|			default: tok->err = json_tokener_error_parse_unexpected; goto out;
  ------------------
  |  Branch (491:4): [True: 92, False: 150k]
  ------------------
  492|   150k|			}
  493|   137k|			break;
  494|       |
  495|   149k|		case json_tokener_state_finish:
  ------------------
  |  Branch (495:3): [True: 149k, False: 1.98M]
  ------------------
  496|   149k|			if (tok->depth == 0)
  ------------------
  |  Branch (496:8): [True: 6.55k, False: 142k]
  ------------------
  497|  6.55k|				goto out;
  498|   142k|			obj = json_object_get(current);
  ------------------
  |  |  263|   142k|#define current tok->stack[tok->depth].current
  ------------------
  499|   142k|			json_tokener_reset_level(tok, tok->depth);
  500|   142k|			tok->depth--;
  501|   142k|			goto redo_char;
  502|       |
  503|     18|		case json_tokener_state_inf: /* aka starts with 'i' (or 'I', or "-i", or "-I") */
  ------------------
  |  Branch (503:3): [True: 18, False: 2.13M]
  ------------------
  504|     18|		{
  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|     18|			int is_negative = 0;
  513|       |
  514|       |			/* Note: tok->st_pos must be 0 when state is set to json_tokener_state_inf */
  515|     45|			while (tok->st_pos < (int)json_inf_str_len)
  ------------------
  |  Branch (515:11): [True: 45, False: 0]
  ------------------
  516|     45|			{
  517|     45|				char inf_char = *str;
  518|     45|				if (inf_char != json_inf_str[tok->st_pos] &&
  ------------------
  |  Branch (518:9): [True: 35, False: 10]
  ------------------
  519|     35|				    ((tok->flags & JSON_TOKENER_STRICT) ||
  ------------------
  |  |  159|     35|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (519:10): [True: 0, False: 35]
  ------------------
  520|     35|				      inf_char != json_inf_str_invert[tok->st_pos])
  ------------------
  |  Branch (520:11): [True: 18, False: 17]
  ------------------
  521|     45|				   )
  522|     18|				{
  523|     18|					tok->err = json_tokener_error_parse_unexpected;
  524|     18|					goto out;
  525|     18|				}
  526|     27|				tok->st_pos++;
  527|     27|				(void)ADVANCE_CHAR(str, tok);
  ------------------
  |  |  300|     27|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
  528|     27|				if (!PEEK_CHAR(c, tok))
  ------------------
  |  |  285|     27|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 27]
  |  |  ------------------
  |  |  286|     27|	     ? (((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|     27|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|     27|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 27]
  |  |  ------------------
  |  |  291|     27|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|     27|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|     27|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (528:9): [True: 0, False: 27]
  ------------------
  529|      0|				{
  530|       |					/* out of input chars, for now at least */
  531|      0|					goto out;
  532|      0|				}
  533|     27|			}
  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) == '-')
  ------------------
  |  |   75|      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.72k|		case json_tokener_state_null: /* aka starts with 'n' */
  ------------------
  |  Branch (553:3): [True: 1.72k, False: 2.13M]
  ------------------
  554|  1.72k|		{
  555|  1.72k|			int size;
  556|  1.72k|			int size_nan;
  557|  1.72k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.72k|	do {                                                  \
  |  |  308|  1.72k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.72k]
  |  |  ------------------
  |  |  309|  1.72k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.72k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.72k]
  |  |  ------------------
  ------------------
  558|  1.72k|			size = json_min(tok->st_pos + 1, json_null_str_len);
  ------------------
  |  |   22|  1.72k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 1.13k, False: 592]
  |  |  ------------------
  ------------------
  559|  1.72k|			size_nan = json_min(tok->st_pos + 1, json_nan_str_len);
  ------------------
  |  |   22|  1.72k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 766, False: 959]
  |  |  ------------------
  ------------------
  560|  1.72k|			if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|  1.72k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (560:9): [True: 1.72k, False: 0]
  ------------------
  561|  1.72k|			     strncasecmp(json_null_str, tok->pb->buf, size) == 0) ||
  ------------------
  |  Branch (561:9): [True: 1.30k, False: 416]
  ------------------
  562|    416|			    (strncmp(json_null_str, tok->pb->buf, size) == 0))
  ------------------
  |  Branch (562:8): [True: 0, False: 416]
  ------------------
  563|  1.30k|			{
  564|  1.30k|				if (tok->st_pos == json_null_str_len)
  ------------------
  |  Branch (564:9): [True: 230, False: 1.07k]
  ------------------
  565|    230|				{
  566|    230|					current = NULL;
  ------------------
  |  |  263|    230|#define current tok->stack[tok->depth].current
  ------------------
  567|    230|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    230|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  568|    230|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|    230|#define state tok->stack[tok->depth].state
  ------------------
  569|    230|					goto redo_char;
  570|    230|				}
  571|  1.30k|			}
  572|    416|			else if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|    416|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (572:14): [True: 416, False: 0]
  ------------------
  573|    416|			          strncasecmp(json_nan_str, tok->pb->buf, size_nan) == 0) ||
  ------------------
  |  Branch (573:14): [True: 393, False: 23]
  ------------------
  574|     23|			         (strncmp(json_nan_str, tok->pb->buf, size_nan) == 0))
  ------------------
  |  Branch (574:13): [True: 0, False: 23]
  ------------------
  575|    393|			{
  576|    393|				if (tok->st_pos == json_nan_str_len)
  ------------------
  |  Branch (576:9): [True: 130, False: 263]
  ------------------
  577|    130|				{
  578|    130|					current = json_object_new_double(NAN);
  ------------------
  |  |  263|    130|#define current tok->stack[tok->depth].current
  ------------------
  579|    130|					if (current == NULL)
  ------------------
  |  |  263|    130|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (579:10): [True: 0, False: 130]
  ------------------
  580|      0|					{
  581|      0|						tok->err = json_tokener_error_memory;
  582|      0|						goto out;
  583|      0|					}
  584|    130|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    130|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  585|    130|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|    130|#define state tok->stack[tok->depth].state
  ------------------
  586|    130|					goto redo_char;
  587|    130|				}
  588|    393|			}
  589|     23|			else
  590|     23|			{
  591|     23|				tok->err = json_tokener_error_parse_null;
  592|     23|				goto out;
  593|     23|			}
  594|  1.34k|			tok->st_pos++;
  595|  1.34k|		}
  596|      0|		break;
  597|       |
  598|  1.05k|		case json_tokener_state_comment_start:
  ------------------
  |  Branch (598:3): [True: 1.05k, False: 2.13M]
  ------------------
  599|  1.05k|			if (c == '*')
  ------------------
  |  Branch (599:8): [True: 261, False: 791]
  ------------------
  600|    261|			{
  601|    261|				state = json_tokener_state_comment;
  ------------------
  |  |  261|    261|#define state tok->stack[tok->depth].state
  ------------------
  602|    261|			}
  603|    791|			else if (c == '/')
  ------------------
  |  Branch (603:13): [True: 777, False: 14]
  ------------------
  604|    777|			{
  605|    777|				state = json_tokener_state_comment_eol;
  ------------------
  |  |  261|    777|#define state tok->stack[tok->depth].state
  ------------------
  606|    777|			}
  607|     14|			else
  608|     14|			{
  609|     14|				tok->err = json_tokener_error_parse_comment;
  610|     14|				goto out;
  611|     14|			}
  612|  1.03k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.03k|	do {                                                  \
  |  |  308|  1.03k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.03k]
  |  |  ------------------
  |  |  309|  1.03k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.03k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.03k]
  |  |  ------------------
  ------------------
  613|  1.03k|			break;
  614|       |
  615|  1.32k|		case json_tokener_state_comment:
  ------------------
  |  Branch (615:3): [True: 1.32k, False: 2.13M]
  ------------------
  616|  1.32k|		{
  617|       |			/* Advance until we change state */
  618|  1.32k|			const char *case_start = str;
  619|  21.7k|			while (c != '*')
  ------------------
  |  Branch (619:11): [True: 20.4k, False: 1.30k]
  ------------------
  620|  20.4k|			{
  621|  20.4k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|  40.9k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  20.4k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 20.4k]
  |  |  ------------------
  |  |  286|  20.4k|	     ? (((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.4k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  20.4k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 20.4k]
  |  |  ------------------
  |  |  291|  20.4k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  20.4k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  20.4k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (621:9): [True: 24, False: 20.4k]
  |  Branch (621:36): [True: 0, False: 20.4k]
  ------------------
  622|     24|				{
  623|     24|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     24|	do {                                                  \
  |  |  308|     24|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 24]
  |  |  ------------------
  |  |  309|     24|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     24|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 24]
  |  |  ------------------
  ------------------
  624|     24|					                           str - case_start);
  625|     24|					goto out;
  626|     24|				}
  627|  20.4k|			}
  628|  1.30k|			printbuf_memappend_checked(tok->pb, case_start, 1 + str - case_start);
  ------------------
  |  |  307|  1.30k|	do {                                                  \
  |  |  308|  1.30k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.30k]
  |  |  ------------------
  |  |  309|  1.30k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.30k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.30k]
  |  |  ------------------
  ------------------
  629|  1.30k|			state = json_tokener_state_comment_end;
  ------------------
  |  |  261|  1.30k|#define state tok->stack[tok->depth].state
  ------------------
  630|  1.30k|		}
  631|      0|		break;
  632|       |
  633|    777|		case json_tokener_state_comment_eol:
  ------------------
  |  Branch (633:3): [True: 777, False: 2.13M]
  ------------------
  634|    777|		{
  635|       |			/* Advance until we change state */
  636|    777|			const char *case_start = str;
  637|  56.6k|			while (c != '\n')
  ------------------
  |  Branch (637:11): [True: 55.9k, False: 732]
  ------------------
  638|  55.9k|			{
  639|  55.9k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|   111k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  55.8k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 55.8k]
  |  |  ------------------
  |  |  286|  55.8k|	     ? (((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|  55.8k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  55.8k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 55.8k]
  |  |  ------------------
  |  |  291|  55.8k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  55.8k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  55.8k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (639:9): [True: 45, False: 55.8k]
  |  Branch (639:36): [True: 0, False: 55.8k]
  ------------------
  640|     45|				{
  641|     45|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     45|	do {                                                  \
  |  |  308|     45|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 45]
  |  |  ------------------
  |  |  309|     45|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     45|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 45]
  |  |  ------------------
  ------------------
  642|     45|					                           str - case_start);
  643|     45|					goto out;
  644|     45|				}
  645|  55.9k|			}
  646|    732|			printbuf_memappend_checked(tok->pb, case_start, str - case_start);
  ------------------
  |  |  307|    732|	do {                                                  \
  |  |  308|    732|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 732]
  |  |  ------------------
  |  |  309|    732|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    732|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 732]
  |  |  ------------------
  ------------------
  647|    732|			MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
  ------------------
  |  |   87|    732|	if (0)           \
  |  |  ------------------
  |  |  |  Branch (87:6): [Folded, False: 732]
  |  |  ------------------
  |  |   88|    732|	mc_debug(x, ##__VA_ARGS__)
  ------------------
  648|    732|			state = json_tokener_state_eatws;
  ------------------
  |  |  261|    732|#define state tok->stack[tok->depth].state
  ------------------
  649|    732|		}
  650|      0|		break;
  651|       |
  652|  1.30k|		case json_tokener_state_comment_end:
  ------------------
  |  Branch (652:3): [True: 1.30k, False: 2.13M]
  ------------------
  653|  1.30k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.30k|	do {                                                  \
  |  |  308|  1.30k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.30k]
  |  |  ------------------
  |  |  309|  1.30k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.30k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.30k]
  |  |  ------------------
  ------------------
  654|  1.30k|			if (c == '/')
  ------------------
  |  Branch (654:8): [True: 232, False: 1.07k]
  ------------------
  655|    232|			{
  656|    232|				MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
  ------------------
  |  |   87|    232|	if (0)           \
  |  |  ------------------
  |  |  |  Branch (87:6): [Folded, False: 232]
  |  |  ------------------
  |  |   88|    232|	mc_debug(x, ##__VA_ARGS__)
  ------------------
  657|    232|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|    232|#define state tok->stack[tok->depth].state
  ------------------
  658|    232|			}
  659|  1.07k|			else
  660|  1.07k|			{
  661|  1.07k|				state = json_tokener_state_comment;
  ------------------
  |  |  261|  1.07k|#define state tok->stack[tok->depth].state
  ------------------
  662|  1.07k|			}
  663|  1.30k|			break;
  664|       |
  665|   124k|		case json_tokener_state_string:
  ------------------
  |  Branch (665:3): [True: 124k, False: 2.00M]
  ------------------
  666|   124k|		{
  667|       |			/* Advance until we change state */
  668|   124k|			const char *case_start = str;
  669|  1.80M|			while (1)
  ------------------
  |  Branch (669:11): [True: 1.80M, Folded]
  ------------------
  670|  1.80M|			{
  671|  1.80M|				if (c == tok->quote_char)
  ------------------
  |  Branch (671:9): [True: 76.1k, False: 1.72M]
  ------------------
  672|  76.1k|				{
  673|  76.1k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|  76.1k|	do {                                                  \
  |  |  308|  76.1k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 76.1k]
  |  |  ------------------
  |  |  309|  76.1k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  76.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 76.1k]
  |  |  ------------------
  ------------------
  674|  76.1k|					                           str - case_start);
  675|  76.1k|					current =
  ------------------
  |  |  263|  76.1k|#define current tok->stack[tok->depth].current
  ------------------
  676|  76.1k|					    json_object_new_string_len(tok->pb->buf, tok->pb->bpos);
  677|  76.1k|					if (current == NULL)
  ------------------
  |  |  263|  76.1k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (677:10): [True: 0, False: 76.1k]
  ------------------
  678|      0|					{
  679|      0|						tok->err = json_tokener_error_memory;
  680|      0|						goto out;
  681|      0|					}
  682|  76.1k|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  76.1k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  683|  76.1k|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|  76.1k|#define state tok->stack[tok->depth].state
  ------------------
  684|  76.1k|					break;
  685|  76.1k|				}
  686|  1.72M|				else if (c == '\\')
  ------------------
  |  Branch (686:14): [True: 47.9k, False: 1.67M]
  ------------------
  687|  47.9k|				{
  688|  47.9k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|  47.9k|	do {                                                  \
  |  |  308|  47.9k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 47.9k]
  |  |  ------------------
  |  |  309|  47.9k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  47.9k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 47.9k]
  |  |  ------------------
  ------------------
  689|  47.9k|					                           str - case_start);
  690|  47.9k|					saved_state = json_tokener_state_string;
  ------------------
  |  |  262|  47.9k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  691|  47.9k|					state = json_tokener_state_string_escape;
  ------------------
  |  |  261|  47.9k|#define state tok->stack[tok->depth].state
  ------------------
  692|  47.9k|					break;
  693|  47.9k|				}
  694|  1.67M|				else if ((tok->flags & JSON_TOKENER_STRICT) && (unsigned char)c <= 0x1f)
  ------------------
  |  |  159|  1.67M|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (694:14): [True: 0, False: 1.67M]
  |  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.67M|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|  3.35M|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  1.67M|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 1.67M]
  |  |  ------------------
  |  |  286|  1.67M|	     ? (((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.67M|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  1.67M|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 1.67M]
  |  |  ------------------
  |  |  291|  1.67M|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  1.67M|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  1.67M|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (700:9): [True: 43, False: 1.67M]
  |  Branch (700:36): [True: 0, False: 1.67M]
  ------------------
  701|     43|				{
  702|     43|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     43|	do {                                                  \
  |  |  308|     43|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 43]
  |  |  ------------------
  |  |  309|     43|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     43|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 43]
  |  |  ------------------
  ------------------
  703|     43|					                           str - case_start);
  704|     43|					goto out;
  705|     43|				}
  706|  1.67M|			}
  707|   124k|		}
  708|   124k|		break;
  709|       |
  710|   124k|		case json_tokener_state_string_escape:
  ------------------
  |  Branch (710:3): [True: 55.3k, False: 2.07M]
  ------------------
  711|  55.3k|			switch (c)
  712|  55.3k|			{
  713|  10.6k|			case '"':
  ------------------
  |  Branch (713:4): [True: 10.6k, False: 44.7k]
  ------------------
  714|  32.7k|			case '\\':
  ------------------
  |  Branch (714:4): [True: 22.0k, False: 33.2k]
  ------------------
  715|  32.8k|			case '/':
  ------------------
  |  Branch (715:4): [True: 153, False: 55.2k]
  ------------------
  716|  32.8k|				printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  32.8k|	do {                                                  \
  |  |  308|  32.8k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 32.8k]
  |  |  ------------------
  |  |  309|  32.8k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  32.8k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 32.8k]
  |  |  ------------------
  ------------------
  717|  32.8k|				state = saved_state;
  ------------------
  |  |  261|  32.8k|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|  32.8k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  718|  32.8k|				break;
  719|    765|			case 'b':
  ------------------
  |  Branch (719:4): [True: 765, False: 54.5k]
  ------------------
  720|  18.9k|			case 'n':
  ------------------
  |  Branch (720:4): [True: 18.2k, False: 37.1k]
  ------------------
  721|  19.2k|			case 'r':
  ------------------
  |  Branch (721:4): [True: 284, False: 55.0k]
  ------------------
  722|  19.8k|			case 't':
  ------------------
  |  Branch (722:4): [True: 574, False: 54.7k]
  ------------------
  723|  20.0k|			case 'f':
  ------------------
  |  Branch (723:4): [True: 237, False: 55.1k]
  ------------------
  724|  20.0k|				if (c == 'b')
  ------------------
  |  Branch (724:9): [True: 765, False: 19.3k]
  ------------------
  725|    765|					printbuf_memappend_checked(tok->pb, "\b", 1);
  ------------------
  |  |  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]
  |  |  ------------------
  ------------------
  726|  19.3k|				else if (c == 'n')
  ------------------
  |  Branch (726:14): [True: 18.2k, False: 1.09k]
  ------------------
  727|  18.2k|					printbuf_memappend_checked(tok->pb, "\n", 1);
  ------------------
  |  |  307|  18.2k|	do {                                                  \
  |  |  308|  18.2k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 18.2k]
  |  |  ------------------
  |  |  309|  18.2k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  18.2k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 18.2k]
  |  |  ------------------
  ------------------
  728|  1.09k|				else if (c == 'r')
  ------------------
  |  Branch (728:14): [True: 284, False: 811]
  ------------------
  729|    284|					printbuf_memappend_checked(tok->pb, "\r", 1);
  ------------------
  |  |  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]
  |  |  ------------------
  ------------------
  730|    811|				else if (c == 't')
  ------------------
  |  Branch (730:14): [True: 574, False: 237]
  ------------------
  731|    574|					printbuf_memappend_checked(tok->pb, "\t", 1);
  ------------------
  |  |  307|    574|	do {                                                  \
  |  |  308|    574|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 574]
  |  |  ------------------
  |  |  309|    574|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    574|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 574]
  |  |  ------------------
  ------------------
  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|  20.0k|				state = saved_state;
  ------------------
  |  |  261|  20.0k|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|  20.0k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  735|  20.0k|				break;
  736|  2.40k|			case 'u':
  ------------------
  |  Branch (736:4): [True: 2.40k, False: 52.9k]
  ------------------
  737|  2.40k|				tok->ucs_char = 0;
  738|  2.40k|				tok->st_pos = 0;
  739|  2.40k|				state = json_tokener_state_escape_unicode;
  ------------------
  |  |  261|  2.40k|#define state tok->stack[tok->depth].state
  ------------------
  740|  2.40k|				break;
  741|     13|			default: tok->err = json_tokener_error_parse_string; goto out;
  ------------------
  |  Branch (741:4): [True: 13, False: 55.3k]
  ------------------
  742|  55.3k|			}
  743|  55.3k|			break;
  744|       |
  745|       |			// ===================================================
  746|       |
  747|  55.3k|		case json_tokener_state_escape_unicode:
  ------------------
  |  Branch (747:3): [True: 2.85k, False: 2.12M]
  ------------------
  748|  2.85k|		{
  749|       |			/* Handle a 4-byte \uNNNN sequence, or two sequences if a surrogate pair */
  750|  11.3k|			while (1)
  ------------------
  |  Branch (750:11): [True: 11.3k, Folded]
  ------------------
  751|  11.3k|			{
  752|  11.3k|				if (!c || !is_hex_char(c))
  ------------------
  |  Branch (752:9): [True: 2, False: 11.3k]
  |  Branch (752:15): [True: 11, False: 11.3k]
  ------------------
  753|     13|				{
  754|     13|					tok->err = json_tokener_error_parse_string;
  755|     13|					goto out;
  756|     13|				}
  757|  11.3k|				tok->ucs_char |=
  758|  11.3k|				    ((unsigned int)jt_hexdigit(c) << ((3 - tok->st_pos) * 4));
  ------------------
  |  |   47|  11.3k|#define jt_hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x)&7) + 9)
  |  |  ------------------
  |  |  |  Branch (47:25): [True: 7.65k, False: 3.72k]
  |  |  ------------------
  ------------------
  759|  11.3k|				tok->st_pos++;
  760|  11.3k|				if (tok->st_pos >= 4)
  ------------------
  |  Branch (760:9): [True: 2.84k, False: 8.54k]
  ------------------
  761|  2.84k|					break;
  762|       |
  763|  8.54k|				(void)ADVANCE_CHAR(str, tok);
  ------------------
  |  |  300|  8.54k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
  764|  8.54k|				if (!PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  8.54k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 8.54k]
  |  |  ------------------
  |  |  286|  8.54k|	     ? (((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.54k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  8.54k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 8.54k]
  |  |  ------------------
  |  |  291|  8.54k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  8.54k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  8.54k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (764:9): [True: 0, False: 8.54k]
  ------------------
  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.54k|			}
  775|  2.84k|			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.84k|			if (tok->high_surrogate)
  ------------------
  |  Branch (780:8): [True: 446, False: 2.39k]
  ------------------
  781|    446|			{
  782|    446|				if (IS_LOW_SURROGATE(tok->ucs_char))
  ------------------
  |  |  149|    446|#define IS_LOW_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xDC00)
  |  |  ------------------
  |  |  |  Branch (149:30): [True: 311, False: 135]
  |  |  ------------------
  ------------------
  783|    311|				{
  784|       |					/* Recalculate the ucs_char, then fall thru to process normally */
  785|    311|					tok->ucs_char = DECODE_SURROGATE_PAIR(tok->high_surrogate,
  ------------------
  |  |  150|    311|#define DECODE_SURROGATE_PAIR(hi, lo) ((((hi)&0x3FF) << 10) + ((lo)&0x3FF) + 0x10000)
  ------------------
  786|    311|					                                      tok->ucs_char);
  787|    311|				}
  788|    135|				else
  789|    135|				{
  790|       |					/* High surrogate was not followed by a low surrogate
  791|       |					 * Replace the high and process the rest normally
  792|       |					 */
  793|    135|					printbuf_memappend_checked(tok->pb,
  ------------------
  |  |  307|    135|	do {                                                  \
  |  |  308|    135|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 135]
  |  |  ------------------
  |  |  309|    135|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    135|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 135]
  |  |  ------------------
  ------------------
  794|    135|					                           (char *)utf8_replacement_char, 3);
  795|    135|				}
  796|    446|				tok->high_surrogate = 0;
  797|    446|			}
  798|       |
  799|  2.84k|			if (tok->ucs_char < 0x80)
  ------------------
  |  Branch (799:8): [True: 874, False: 1.96k]
  ------------------
  800|    874|			{
  801|    874|				unsigned char unescaped_utf[1];
  802|    874|				unescaped_utf[0] = tok->ucs_char;
  803|    874|				printbuf_memappend_checked(tok->pb, (char *)unescaped_utf, 1);
  ------------------
  |  |  307|    874|	do {                                                  \
  |  |  308|    874|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 874]
  |  |  ------------------
  |  |  309|    874|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    874|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 874]
  |  |  ------------------
  ------------------
  804|    874|			}
  805|  1.96k|			else if (tok->ucs_char < 0x800)
  ------------------
  |  Branch (805:13): [True: 42, False: 1.92k]
  ------------------
  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.92k|			else if (IS_HIGH_SURROGATE(tok->ucs_char))
  ------------------
  |  |  148|  1.92k|#define IS_HIGH_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xD800)
  |  |  ------------------
  |  |  |  Branch (148:31): [True: 695, False: 1.22k]
  |  |  ------------------
  ------------------
  813|    695|			{
  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|    695|				tok->high_surrogate = tok->ucs_char;
  829|    695|				tok->ucs_char = 0;
  830|    695|				state = json_tokener_state_escape_unicode_need_escape;
  ------------------
  |  |  261|    695|#define state tok->stack[tok->depth].state
  ------------------
  831|    695|				break;
  832|    695|			}
  833|  1.22k|			else if (IS_LOW_SURROGATE(tok->ucs_char))
  ------------------
  |  |  149|  1.22k|#define IS_LOW_SURROGATE(uc) (((uc)&0xFFFFFC00) == 0xDC00)
  |  |  ------------------
  |  |  |  Branch (149:30): [True: 420, False: 809]
  |  |  ------------------
  ------------------
  834|    420|			{
  835|       |				/* Got a low surrogate not preceded by a high */
  836|    420|				printbuf_memappend_checked(tok->pb, (char *)utf8_replacement_char, 3);
  ------------------
  |  |  307|    420|	do {                                                  \
  |  |  308|    420|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 420]
  |  |  ------------------
  |  |  309|    420|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    420|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 420]
  |  |  ------------------
  ------------------
  837|    420|			}
  838|    809|			else if (tok->ucs_char < 0x10000)
  ------------------
  |  Branch (838:13): [True: 498, False: 311]
  ------------------
  839|    498|			{
  840|    498|				unsigned char unescaped_utf[3];
  841|    498|				unescaped_utf[0] = 0xe0 | (tok->ucs_char >> 12);
  842|    498|				unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
  843|    498|				unescaped_utf[2] = 0x80 | (tok->ucs_char & 0x3f);
  844|    498|				printbuf_memappend_checked(tok->pb, (char *)unescaped_utf, 3);
  ------------------
  |  |  307|    498|	do {                                                  \
  |  |  308|    498|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 498]
  |  |  ------------------
  |  |  309|    498|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    498|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 498]
  |  |  ------------------
  ------------------
  845|    498|			}
  846|    311|			else if (tok->ucs_char < 0x110000)
  ------------------
  |  Branch (846:13): [True: 311, False: 0]
  ------------------
  847|    311|			{
  848|    311|				unsigned char unescaped_utf[4];
  849|    311|				unescaped_utf[0] = 0xf0 | ((tok->ucs_char >> 18) & 0x07);
  850|    311|				unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 12) & 0x3f);
  851|    311|				unescaped_utf[2] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
  852|    311|				unescaped_utf[3] = 0x80 | (tok->ucs_char & 0x3f);
  853|    311|				printbuf_memappend_checked(tok->pb, (char *)unescaped_utf, 4);
  ------------------
  |  |  307|    311|	do {                                                  \
  |  |  308|    311|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 311]
  |  |  ------------------
  |  |  309|    311|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    311|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 311]
  |  |  ------------------
  ------------------
  854|    311|			}
  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.14k|			state = saved_state; // i.e. _state_string or _state_object_field
  ------------------
  |  |  261|  2.14k|#define state tok->stack[tok->depth].state
  ------------------
              			state = saved_state; // i.e. _state_string or _state_object_field
  ------------------
  |  |  262|  2.14k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  861|  2.14k|		}
  862|      0|		break;
  863|       |
  864|    695|		case json_tokener_state_escape_unicode_need_escape:
  ------------------
  |  Branch (864:3): [True: 695, False: 2.13M]
  ------------------
  865|       |			// We get here after processing a high_surrogate
  866|       |			// require a '\\' char
  867|    695|			if (!c || c != '\\')
  ------------------
  |  Branch (867:8): [True: 1, False: 694]
  |  Branch (867:14): [True: 148, False: 546]
  ------------------
  868|    149|			{
  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|    149|				printbuf_memappend_checked(tok->pb, (char *)utf8_replacement_char, 3);
  ------------------
  |  |  307|    149|	do {                                                  \
  |  |  308|    149|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 149]
  |  |  ------------------
  |  |  309|    149|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|    149|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 149]
  |  |  ------------------
  ------------------
  874|    149|				tok->high_surrogate = 0;
  875|    149|				tok->ucs_char = 0;
  876|    149|				tok->st_pos = 0;
  877|    149|				state = saved_state;
  ------------------
  |  |  261|    149|#define state tok->stack[tok->depth].state
  ------------------
              				state = saved_state;
  ------------------
  |  |  262|    149|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  878|    149|				goto redo_char;
  879|    149|			}
  880|    546|			state = json_tokener_state_escape_unicode_need_u;
  ------------------
  |  |  261|    546|#define state tok->stack[tok->depth].state
  ------------------
  881|    546|			break;
  882|       |
  883|    546|		case json_tokener_state_escape_unicode_need_u:
  ------------------
  |  Branch (883:3): [True: 546, False: 2.13M]
  ------------------
  884|       |			/* We already had a \ char, check that it's \u */
  885|    546|			if (!c || c != 'u')
  ------------------
  |  Branch (885:8): [True: 1, False: 545]
  |  Branch (885:14): [True: 97, False: 448]
  ------------------
  886|     98|			{
  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|     98|				printbuf_memappend_checked(tok->pb, (char *)utf8_replacement_char, 3);
  ------------------
  |  |  307|     98|	do {                                                  \
  |  |  308|     98|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 98]
  |  |  ------------------
  |  |  309|     98|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     98|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 98]
  |  |  ------------------
  ------------------
  893|     98|				tok->high_surrogate = 0;
  894|     98|				tok->ucs_char = 0;
  895|     98|				tok->st_pos = 0;
  896|     98|				state = json_tokener_state_string_escape;
  ------------------
  |  |  261|     98|#define state tok->stack[tok->depth].state
  ------------------
  897|     98|				goto redo_char;
  898|     98|			}
  899|    448|			state = json_tokener_state_escape_unicode;
  ------------------
  |  |  261|    448|#define state tok->stack[tok->depth].state
  ------------------
  900|    448|			break;
  901|       |
  902|       |			// ===================================================
  903|       |
  904|  1.83k|		case json_tokener_state_boolean:
  ------------------
  |  Branch (904:3): [True: 1.83k, False: 2.13M]
  ------------------
  905|  1.83k|		{
  906|  1.83k|			int size1, size2;
  907|  1.83k|			printbuf_memappend_checked(tok->pb, &c, 1);
  ------------------
  |  |  307|  1.83k|	do {                                                  \
  |  |  308|  1.83k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 1.83k]
  |  |  ------------------
  |  |  309|  1.83k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  1.83k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 1.83k]
  |  |  ------------------
  ------------------
  908|  1.83k|			size1 = json_min(tok->st_pos + 1, json_true_str_len);
  ------------------
  |  |   22|  1.83k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 974, False: 861]
  |  |  ------------------
  ------------------
  909|  1.83k|			size2 = json_min(tok->st_pos + 1, json_false_str_len);
  ------------------
  |  |   22|  1.83k|#define json_min(a, b) ((a) < (b) ? (a) : (b))
  |  |  ------------------
  |  |  |  Branch (22:25): [True: 1.28k, False: 552]
  |  |  ------------------
  ------------------
  910|  1.83k|			if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|  1.83k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (910:9): [True: 1.83k, False: 0]
  ------------------
  911|  1.83k|			     strncasecmp(json_true_str, tok->pb->buf, size1) == 0) ||
  ------------------
  |  Branch (911:9): [True: 324, False: 1.51k]
  ------------------
  912|  1.51k|			    (strncmp(json_true_str, tok->pb->buf, size1) == 0))
  ------------------
  |  Branch (912:8): [True: 0, False: 1.51k]
  ------------------
  913|    324|			{
  914|    324|				if (tok->st_pos == json_true_str_len)
  ------------------
  |  Branch (914:9): [True: 61, False: 263]
  ------------------
  915|     61|				{
  916|     61|					current = json_object_new_boolean(1);
  ------------------
  |  |  263|     61|#define current tok->stack[tok->depth].current
  ------------------
  917|     61|					if (current == NULL)
  ------------------
  |  |  263|     61|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (917:10): [True: 0, False: 61]
  ------------------
  918|      0|					{
  919|      0|						tok->err = json_tokener_error_memory;
  920|      0|						goto out;
  921|      0|					}
  922|     61|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|     61|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  923|     61|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|     61|#define state tok->stack[tok->depth].state
  ------------------
  924|     61|					goto redo_char;
  925|     61|				}
  926|    324|			}
  927|  1.51k|			else if ((!(tok->flags & JSON_TOKENER_STRICT) &&
  ------------------
  |  |  159|  1.51k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (927:14): [True: 1.51k, False: 0]
  ------------------
  928|  1.51k|			          strncasecmp(json_false_str, tok->pb->buf, size2) == 0) ||
  ------------------
  |  Branch (928:14): [True: 1.48k, False: 26]
  ------------------
  929|     26|			         (strncmp(json_false_str, tok->pb->buf, size2) == 0))
  ------------------
  |  Branch (929:13): [True: 0, False: 26]
  ------------------
  930|  1.48k|			{
  931|  1.48k|				if (tok->st_pos == json_false_str_len)
  ------------------
  |  Branch (931:9): [True: 244, False: 1.24k]
  ------------------
  932|    244|				{
  933|    244|					current = json_object_new_boolean(0);
  ------------------
  |  |  263|    244|#define current tok->stack[tok->depth].current
  ------------------
  934|    244|					if (current == NULL)
  ------------------
  |  |  263|    244|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (934:10): [True: 0, False: 244]
  ------------------
  935|      0|					{
  936|      0|						tok->err = json_tokener_error_memory;
  937|      0|						goto out;
  938|      0|					}
  939|    244|					saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    244|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  940|    244|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|    244|#define state tok->stack[tok->depth].state
  ------------------
  941|    244|					goto redo_char;
  942|    244|				}
  943|  1.48k|			}
  944|     26|			else
  945|     26|			{
  946|     26|				tok->err = json_tokener_error_parse_boolean;
  947|     26|				goto out;
  948|     26|			}
  949|  1.50k|			tok->st_pos++;
  950|  1.50k|		}
  951|      0|		break;
  952|       |
  953|  12.1k|		case json_tokener_state_number:
  ------------------
  |  Branch (953:3): [True: 12.1k, False: 2.11M]
  ------------------
  954|  12.1k|		{
  955|       |			/* Advance until we change state */
  956|  12.1k|			const char *case_start = str;
  957|  12.1k|			int case_len = 0;
  958|  12.1k|			int is_exponent = 0;
  959|  12.1k|			int neg_sign_ok = 1;
  960|  12.1k|			int pos_sign_ok = 0;
  961|  12.1k|			if (printbuf_length(tok->pb) > 0)
  ------------------
  |  |   75|  12.1k|#define printbuf_length(p) ((p)->bpos)
  ------------------
  |  Branch (961:8): [True: 0, False: 12.1k]
  ------------------
  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];
  ------------------
  |  |   75|      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|  86.9k|			while (c && ((c >= '0' && c <= '9') ||
  ------------------
  |  Branch (985:11): [True: 86.9k, False: 36]
  |  Branch (985:18): [True: 74.1k, False: 12.8k]
  |  Branch (985:30): [True: 71.2k, False: 2.87k]
  ------------------
  986|  15.6k|			             (!is_exponent && (c == 'e' || c == 'E')) ||
  ------------------
  |  Branch (986:18): [True: 14.7k, False: 927]
  |  Branch (986:35): [True: 465, False: 14.2k]
  |  Branch (986:47): [True: 34, False: 14.2k]
  ------------------
  987|  15.1k|			             (neg_sign_ok && c == '-') || (pos_sign_ok && c == '+') ||
  ------------------
  |  Branch (987:18): [True: 2.66k, False: 12.5k]
  |  Branch (987:33): [True: 2.13k, False: 534]
  |  Branch (987:47): [True: 534, False: 12.5k]
  |  Branch (987:62): [True: 430, False: 104]
  ------------------
  988|  12.6k|			             (!tok->is_double && c == '.')))
  ------------------
  |  Branch (988:18): [True: 12.0k, False: 592]
  |  Branch (988:37): [True: 511, False: 11.5k]
  ------------------
  989|  74.8k|			{
  990|  74.8k|				pos_sign_ok = neg_sign_ok = 0;
  991|  74.8k|				++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|  74.8k|				switch (c)
 1000|  74.8k|				{
 1001|    511|				case '.':
  ------------------
  |  Branch (1001:5): [True: 511, False: 74.3k]
  ------------------
 1002|    511|					tok->is_double = 1;
 1003|    511|					pos_sign_ok = 1;
 1004|    511|					neg_sign_ok = 1;
 1005|    511|					break;
 1006|    465|				case 'e': /* FALLTHRU */
  ------------------
  |  Branch (1006:5): [True: 465, False: 74.3k]
  ------------------
 1007|    499|				case 'E':
  ------------------
  |  Branch (1007:5): [True: 34, False: 74.8k]
  ------------------
 1008|    499|					is_exponent = 1;
 1009|    499|					tok->is_double = 1;
 1010|       |					/* the exponent part can begin with a negative sign */
 1011|    499|					pos_sign_ok = neg_sign_ok = 1;
 1012|    499|					break;
 1013|  73.8k|				default: break;
  ------------------
  |  Branch (1013:5): [True: 73.8k, False: 1.01k]
  ------------------
 1014|  74.8k|				}
 1015|       |
 1016|  74.8k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|   149k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|  74.8k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 74.8k]
  |  |  ------------------
  |  |  286|  74.8k|	     ? (((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|  74.8k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|  74.8k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 74.8k]
  |  |  ------------------
  |  |  291|  74.8k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|  74.8k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|  74.8k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (1016:9): [True: 0, False: 74.8k]
  |  Branch (1016:36): [True: 0, False: 74.8k]
  ------------------
 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|  74.8k|			}
 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|  12.1k|			if (tok->depth > 0 && c != ',' && c != ']' && c != '}' && c != '/' &&
  ------------------
  |  Branch (1030:8): [True: 12.0k, False: 85]
  |  Branch (1030:26): [True: 3.39k, False: 8.66k]
  |  Branch (1030:38): [True: 3.38k, False: 11]
  |  Branch (1030:50): [True: 1.05k, False: 2.32k]
  |  Branch (1030:62): [True: 981, False: 75]
  ------------------
 1031|    981|			    c != 'I' && c != 'i' && !is_ws_char(c))
  ------------------
  |  Branch (1031:8): [True: 980, False: 1]
  |  Branch (1031:20): [True: 979, False: 1]
  |  Branch (1031:32): [True: 34, False: 945]
  ------------------
 1032|     34|			{
 1033|     34|				tok->err = json_tokener_error_parse_number;
 1034|     34|				goto out;
 1035|     34|			}
 1036|  12.1k|			if (case_len > 0)
  ------------------
  |  Branch (1036:8): [True: 12.1k, False: 0]
  ------------------
 1037|  12.1k|				printbuf_memappend_checked(tok->pb, case_start, case_len);
  ------------------
  |  |  307|  12.1k|	do {                                                  \
  |  |  308|  12.1k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 12.1k]
  |  |  ------------------
  |  |  309|  12.1k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  12.1k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 12.1k]
  |  |  ------------------
  ------------------
 1038|       |
 1039|       |			// Check for -Infinity
 1040|  12.1k|			if (tok->pb->buf[0] == '-' && case_len <= 1 && (c == 'i' || c == 'I'))
  ------------------
  |  Branch (1040:8): [True: 2.12k, False: 9.98k]
  |  Branch (1040:34): [True: 6, False: 2.11k]
  |  Branch (1040:52): [True: 0, False: 6]
  |  Branch (1040:64): [True: 1, False: 5]
  ------------------
 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|  12.1k|			if (tok->flags & JSON_TOKENER_STRICT)
  ------------------
  |  |  159|  12.1k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1046:8): [True: 0, False: 12.1k]
  ------------------
 1047|      0|			{
 1048|       |				/* Check the accumulated text against the RFC 8259 grammar:
 1049|       |				 *
 1050|       |				 *   number = [ minus ] int [ frac ] [ exp ]
 1051|       |				 *   int    = zero / ( digit1-9 *DIGIT )
 1052|       |				 *   frac   = decimal-point 1*DIGIT
 1053|       |				 *   exp    = e [ minus / plus ] 1*DIGIT
 1054|       |				 *
 1055|       |				 * so the integer part is mandatory and may not carry a
 1056|       |				 * leading zero, and both the fraction and the exponent
 1057|       |				 * need at least one digit of their own. That rejects
 1058|       |				 * "01", ".5", "-.123", "1.", "2.e3" and "1e", while
 1059|       |				 * "0", "-0", "0.5" and "2e3" stay valid.
 1060|       |				 */
 1061|      0|				const char *num = tok->pb->buf;
 1062|      0|				if (*num == '-')
  ------------------
  |  Branch (1062:9): [True: 0, False: 0]
  ------------------
 1063|      0|					num++;
 1064|      0|				if (*num == '0')
  ------------------
  |  Branch (1064:9): [True: 0, False: 0]
  ------------------
 1065|      0|				{
 1066|      0|					num++;
 1067|      0|					if (*num >= '0' && *num <= '9')
  ------------------
  |  Branch (1067:10): [True: 0, False: 0]
  |  Branch (1067:25): [True: 0, False: 0]
  ------------------
 1068|      0|					{
 1069|      0|						tok->err = json_tokener_error_parse_number;
 1070|      0|						goto out;
 1071|      0|					}
 1072|      0|				}
 1073|      0|				else if (*num >= '1' && *num <= '9')
  ------------------
  |  Branch (1073:14): [True: 0, False: 0]
  |  Branch (1073:29): [True: 0, False: 0]
  ------------------
 1074|      0|				{
 1075|      0|					while (*num >= '0' && *num <= '9')
  ------------------
  |  Branch (1075:13): [True: 0, False: 0]
  |  Branch (1075:28): [True: 0, False: 0]
  ------------------
 1076|      0|						num++;
 1077|      0|				}
 1078|      0|				else
 1079|      0|				{
 1080|       |					/* no integer part at all, e.g. ".5" or "-.123" */
 1081|      0|					tok->err = json_tokener_error_parse_number;
 1082|      0|					goto out;
 1083|      0|				}
 1084|      0|				if (*num == '.')
  ------------------
  |  Branch (1084:9): [True: 0, False: 0]
  ------------------
 1085|      0|				{
 1086|      0|					num++;
 1087|      0|					if (!(*num >= '0' && *num <= '9'))
  ------------------
  |  Branch (1087:12): [True: 0, False: 0]
  |  Branch (1087:27): [True: 0, False: 0]
  ------------------
 1088|      0|					{
 1089|      0|						tok->err = json_tokener_error_parse_number;
 1090|      0|						goto out;
 1091|      0|					}
 1092|      0|					while (*num >= '0' && *num <= '9')
  ------------------
  |  Branch (1092:13): [True: 0, False: 0]
  |  Branch (1092:28): [True: 0, False: 0]
  ------------------
 1093|      0|						num++;
 1094|      0|				}
 1095|      0|				if (*num == 'e' || *num == 'E')
  ------------------
  |  Branch (1095:9): [True: 0, False: 0]
  |  Branch (1095:24): [True: 0, False: 0]
  ------------------
 1096|      0|				{
 1097|      0|					num++;
 1098|      0|					if (*num == '+' || *num == '-')
  ------------------
  |  Branch (1098:10): [True: 0, False: 0]
  |  Branch (1098:25): [True: 0, False: 0]
  ------------------
 1099|      0|						num++;
 1100|      0|					if (!(*num >= '0' && *num <= '9'))
  ------------------
  |  Branch (1100:12): [True: 0, False: 0]
  |  Branch (1100:27): [True: 0, False: 0]
  ------------------
 1101|      0|					{
 1102|      0|						tok->err = json_tokener_error_parse_number;
 1103|      0|						goto out;
 1104|      0|					}
 1105|      0|					while (*num >= '0' && *num <= '9')
  ------------------
  |  Branch (1105:13): [True: 0, False: 0]
  |  Branch (1105:28): [True: 0, False: 0]
  ------------------
 1106|      0|						num++;
 1107|      0|				}
 1108|      0|				if (*num != '\0')
  ------------------
  |  Branch (1108:9): [True: 0, False: 0]
  ------------------
 1109|      0|				{
 1110|      0|					tok->err = json_tokener_error_parse_number;
 1111|      0|					goto out;
 1112|      0|				}
 1113|      0|			}
 1114|  12.1k|			if (tok->is_double && !(tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|    588|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1114:8): [True: 588, False: 11.5k]
  |  Branch (1114:26): [True: 588, False: 0]
  ------------------
 1115|    588|			{
 1116|       |				/* Trim some chars off the end, to allow things
 1117|       |				   like "123e+" to parse ok. */
 1118|  1.20k|				while (printbuf_length(tok->pb) > 1)
  ------------------
  |  |   75|  1.20k|#define printbuf_length(p) ((p)->bpos)
  ------------------
  |  Branch (1118:12): [True: 1.18k, False: 23]
  ------------------
 1119|  1.18k|				{
 1120|  1.18k|					char last_char = tok->pb->buf[printbuf_length(tok->pb) - 1];
  ------------------
  |  |   75|  1.18k|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1121|  1.18k|					if (last_char != 'e' && last_char != 'E' &&
  ------------------
  |  Branch (1121:10): [True: 871, False: 313]
  |  Branch (1121:30): [True: 850, False: 21]
  ------------------
 1122|    850|					    last_char != '-' && last_char != '+')
  ------------------
  |  Branch (1122:10): [True: 846, False: 4]
  |  Branch (1122:30): [True: 565, False: 281]
  ------------------
 1123|    565|					{
 1124|    565|						break;
 1125|    565|					}
 1126|    619|					tok->pb->buf[printbuf_length(tok->pb) - 1] = '\0';
  ------------------
  |  |   75|    619|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1127|    619|					printbuf_length(tok->pb)--;
  ------------------
  |  |   75|    619|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1128|    619|				}
 1129|    588|			}
 1130|  12.1k|		}
 1131|      0|			{
 1132|  12.1k|				int64_t num64;
 1133|  12.1k|				uint64_t numuint64;
 1134|  12.1k|				double numd;
 1135|  12.1k|				if (!tok->is_double && tok->pb->buf[0] == '-' &&
  ------------------
  |  Branch (1135:9): [True: 11.5k, False: 588]
  |  Branch (1135:28): [True: 1.63k, False: 9.88k]
  ------------------
 1136|  1.63k|				    json_parse_int64(tok->pb->buf, &num64) == 0)
  ------------------
  |  Branch (1136:9): [True: 1.63k, False: 5]
  ------------------
 1137|  1.63k|				{
 1138|  1.63k|					if (errno == ERANGE && (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|     18|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1138:10): [True: 18, False: 1.61k]
  |  Branch (1138:29): [True: 0, False: 18]
  ------------------
 1139|      0|					{
 1140|      0|						tok->err = json_tokener_error_parse_number;
 1141|      0|						goto out;
 1142|      0|					}
 1143|  1.63k|					current = json_object_new_int64(num64);
  ------------------
  |  |  263|  1.63k|#define current tok->stack[tok->depth].current
  ------------------
 1144|  1.63k|					if (current == NULL)
  ------------------
  |  |  263|  1.63k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1144:10): [True: 0, False: 1.63k]
  ------------------
 1145|      0|					{
 1146|      0|						tok->err = json_tokener_error_memory;
 1147|      0|						goto out;
 1148|      0|					}
 1149|  1.63k|				}
 1150|  10.4k|				else if (!tok->is_double && tok->pb->buf[0] != '-' &&
  ------------------
  |  Branch (1150:14): [True: 9.88k, False: 588]
  |  Branch (1150:33): [True: 9.88k, False: 5]
  ------------------
 1151|  9.88k|				         json_parse_uint64(tok->pb->buf, &numuint64) == 0)
  ------------------
  |  Branch (1151:14): [True: 9.88k, False: 0]
  ------------------
 1152|  9.88k|				{
 1153|  9.88k|					if (errno == ERANGE && (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|     92|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1153:10): [True: 92, False: 9.79k]
  |  Branch (1153:29): [True: 0, False: 92]
  ------------------
 1154|      0|					{
 1155|      0|						tok->err = json_tokener_error_parse_number;
 1156|      0|						goto out;
 1157|      0|					}
 1158|  9.88k|					if (numuint64 <= INT64_MAX)
  ------------------
  |  Branch (1158:10): [True: 9.38k, False: 494]
  ------------------
 1159|  9.38k|					{
 1160|  9.38k|						num64 = (int64_t)numuint64;
 1161|  9.38k|						current = json_object_new_int64(num64);
  ------------------
  |  |  263|  9.38k|#define current tok->stack[tok->depth].current
  ------------------
 1162|  9.38k|						if (current == NULL)
  ------------------
  |  |  263|  9.38k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1162:11): [True: 0, False: 9.38k]
  ------------------
 1163|      0|						{
 1164|      0|							tok->err = json_tokener_error_memory;
 1165|      0|							goto out;
 1166|      0|						}
 1167|  9.38k|					}
 1168|    494|					else
 1169|    494|					{
 1170|    494|						current = json_object_new_uint64(numuint64);
  ------------------
  |  |  263|    494|#define current tok->stack[tok->depth].current
  ------------------
 1171|    494|						if (current == NULL)
  ------------------
  |  |  263|    494|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1171:11): [True: 0, False: 494]
  ------------------
 1172|      0|						{
 1173|      0|							tok->err = json_tokener_error_memory;
 1174|      0|							goto out;
 1175|      0|						}
 1176|    494|					}
 1177|  9.88k|				}
 1178|    593|				else if (tok->is_double &&
  ------------------
  |  Branch (1178:14): [True: 588, False: 5]
  ------------------
 1179|    588|				         json_tokener_parse_double(
  ------------------
  |  Branch (1179:14): [True: 586, False: 2]
  ------------------
 1180|    588|				             tok->pb->buf, printbuf_length(tok->pb), &numd) == 0)
  ------------------
  |  |   75|    588|#define printbuf_length(p) ((p)->bpos)
  ------------------
 1181|    586|				{
 1182|    586|					current = json_object_new_double_s(numd, tok->pb->buf);
  ------------------
  |  |  263|    586|#define current tok->stack[tok->depth].current
  ------------------
 1183|    586|					if (current == NULL)
  ------------------
  |  |  263|    586|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1183:10): [True: 0, False: 586]
  ------------------
 1184|      0|					{
 1185|      0|						tok->err = json_tokener_error_memory;
 1186|      0|						goto out;
 1187|      0|					}
 1188|    586|				}
 1189|      7|				else
 1190|      7|				{
 1191|      7|					tok->err = json_tokener_error_parse_number;
 1192|      7|					goto out;
 1193|      7|				}
 1194|  12.0k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  12.0k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1195|  12.0k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  12.0k|#define state tok->stack[tok->depth].state
  ------------------
 1196|  12.0k|				goto redo_char;
 1197|  12.1k|			}
 1198|      0|			break;
 1199|       |
 1200|  20.9k|		case json_tokener_state_array_after_sep:
  ------------------
  |  Branch (1200:3): [True: 20.9k, False: 2.11M]
  ------------------
 1201|  31.7k|		case json_tokener_state_array:
  ------------------
  |  Branch (1201:3): [True: 10.8k, False: 2.12M]
  ------------------
 1202|  31.7k|			if (c == ']')
  ------------------
  |  Branch (1202:8): [True: 428, False: 31.3k]
  ------------------
 1203|    428|			{
 1204|       |				// Minimize memory usage; assume parsed objs are unlikely to be changed
 1205|    428|				json_object_array_shrink(current, 0);
  ------------------
  |  |  263|    428|#define current tok->stack[tok->depth].current
  ------------------
 1206|       |
 1207|    428|				if (state == json_tokener_state_array_after_sep &&
  ------------------
  |  |  261|    428|#define state tok->stack[tok->depth].state
  ------------------
  |  Branch (1207:9): [True: 25, False: 403]
  ------------------
 1208|     25|				    (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|     25|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1208:9): [True: 0, False: 25]
  ------------------
 1209|      0|				{
 1210|      0|					tok->err = json_tokener_error_parse_unexpected;
 1211|      0|					goto out;
 1212|      0|				}
 1213|    428|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|    428|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1214|    428|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|    428|#define state tok->stack[tok->depth].state
  ------------------
 1215|    428|			}
 1216|  31.3k|			else
 1217|  31.3k|			{
 1218|  31.3k|				if (tok->depth >= tok->max_depth - 1)
  ------------------
  |  Branch (1218:9): [True: 1, False: 31.3k]
  ------------------
 1219|      1|				{
 1220|      1|					tok->err = json_tokener_error_depth;
 1221|      1|					goto out;
 1222|      1|				}
 1223|  31.3k|				state = json_tokener_state_array_add;
  ------------------
  |  |  261|  31.3k|#define state tok->stack[tok->depth].state
  ------------------
 1224|  31.3k|				tok->depth++;
 1225|  31.3k|				json_tokener_reset_level(tok, tok->depth);
 1226|  31.3k|				goto redo_char;
 1227|  31.3k|			}
 1228|    428|			break;
 1229|       |
 1230|  30.8k|		case json_tokener_state_array_add:
  ------------------
  |  Branch (1230:3): [True: 30.8k, False: 2.10M]
  ------------------
 1231|  30.8k|			if (json_object_array_add(current, obj) != 0)
  ------------------
  |  |  263|  30.8k|#define current tok->stack[tok->depth].current
  ------------------
  |  Branch (1231:8): [True: 0, False: 30.8k]
  ------------------
 1232|      0|			{
 1233|      0|				tok->err = json_tokener_error_memory;
 1234|      0|				goto out;
 1235|      0|			}
 1236|  30.8k|			saved_state = json_tokener_state_array_sep;
  ------------------
  |  |  262|  30.8k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1237|  30.8k|			state = json_tokener_state_eatws;
  ------------------
  |  |  261|  30.8k|#define state tok->stack[tok->depth].state
  ------------------
 1238|  30.8k|			goto redo_char;
 1239|       |
 1240|  30.8k|		case json_tokener_state_array_sep:
  ------------------
  |  Branch (1240:3): [True: 30.8k, False: 2.10M]
  ------------------
 1241|  30.8k|			if (c == ']')
  ------------------
  |  Branch (1241:8): [True: 9.90k, False: 20.9k]
  ------------------
 1242|  9.90k|			{
 1243|       |				// Minimize memory usage; assume parsed objs are unlikely to be changed
 1244|  9.90k|				json_object_array_shrink(current, 0);
  ------------------
  |  |  263|  9.90k|#define current tok->stack[tok->depth].current
  ------------------
 1245|       |
 1246|  9.90k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  9.90k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1247|  9.90k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  9.90k|#define state tok->stack[tok->depth].state
  ------------------
 1248|  9.90k|			}
 1249|  20.9k|			else if (c == ',')
  ------------------
  |  Branch (1249:13): [True: 20.9k, False: 24]
  ------------------
 1250|  20.9k|			{
 1251|  20.9k|				saved_state = json_tokener_state_array_after_sep;
  ------------------
  |  |  262|  20.9k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1252|  20.9k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  20.9k|#define state tok->stack[tok->depth].state
  ------------------
 1253|  20.9k|			}
 1254|     24|			else
 1255|     24|			{
 1256|     24|				tok->err = json_tokener_error_parse_array;
 1257|     24|				goto out;
 1258|     24|			}
 1259|  30.8k|			break;
 1260|       |
 1261|  50.7k|		case json_tokener_state_object_field_start:
  ------------------
  |  Branch (1261:3): [True: 50.7k, False: 2.08M]
  ------------------
 1262|   132k|		case json_tokener_state_object_field_start_after_sep:
  ------------------
  |  Branch (1262:3): [True: 81.4k, False: 2.05M]
  ------------------
 1263|   132k|			if (c == '}')
  ------------------
  |  Branch (1263:8): [True: 19.6k, False: 112k]
  ------------------
 1264|  19.6k|			{
 1265|  19.6k|				if (state == json_tokener_state_object_field_start_after_sep &&
  ------------------
  |  |  261|  19.6k|#define state tok->stack[tok->depth].state
  ------------------
  |  Branch (1265:9): [True: 4, False: 19.6k]
  ------------------
 1266|      4|				    (tok->flags & JSON_TOKENER_STRICT))
  ------------------
  |  |  159|      4|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1266:9): [True: 0, False: 4]
  ------------------
 1267|      0|				{
 1268|      0|					tok->err = json_tokener_error_parse_unexpected;
 1269|      0|					goto out;
 1270|      0|				}
 1271|  19.6k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  19.6k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1272|  19.6k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  19.6k|#define state tok->stack[tok->depth].state
  ------------------
 1273|  19.6k|			}
 1274|   112k|			else if (c == '"' || c == '\'')
  ------------------
  |  Branch (1274:13): [True: 112k, False: 19]
  |  Branch (1274:25): [True: 1, False: 18]
  ------------------
 1275|   112k|			{
 1276|   112k|				tok->quote_char = c;
 1277|   112k|				printbuf_reset(tok->pb);
 1278|   112k|				state = json_tokener_state_object_field;
  ------------------
  |  |  261|   112k|#define state tok->stack[tok->depth].state
  ------------------
 1279|   112k|			}
 1280|     18|			else
 1281|     18|			{
 1282|     18|				tok->err = json_tokener_error_parse_object_key_name;
 1283|     18|				goto out;
 1284|     18|			}
 1285|   132k|			break;
 1286|       |
 1287|   132k|		case json_tokener_state_object_field:
  ------------------
  |  Branch (1287:3): [True: 119k, False: 2.01M]
  ------------------
 1288|   119k|		{
 1289|       |			/* Advance until we change state */
 1290|   119k|			const char *case_start = str;
 1291|   980k|			while (1)
  ------------------
  |  Branch (1291:11): [True: 980k, Folded]
  ------------------
 1292|   980k|			{
 1293|   980k|				if (c == tok->quote_char)
  ------------------
  |  Branch (1293:9): [True: 112k, False: 867k]
  ------------------
 1294|   112k|				{
 1295|   112k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|   112k|	do {                                                  \
  |  |  308|   112k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 112k]
  |  |  ------------------
  |  |  309|   112k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|   112k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 112k]
  |  |  ------------------
  ------------------
 1296|   112k|					                           str - case_start);
 1297|   112k|					obj_field_name = strdup(tok->pb->buf);
  ------------------
  |  |  264|   112k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
 1298|   112k|					if (obj_field_name == NULL)
  ------------------
  |  |  264|   112k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
  |  Branch (1298:10): [True: 0, False: 112k]
  ------------------
 1299|      0|					{
 1300|      0|						tok->err = json_tokener_error_memory;
 1301|      0|						goto out;
 1302|      0|					}
 1303|   112k|					saved_state = json_tokener_state_object_field_end;
  ------------------
  |  |  262|   112k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1304|   112k|					state = json_tokener_state_eatws;
  ------------------
  |  |  261|   112k|#define state tok->stack[tok->depth].state
  ------------------
 1305|   112k|					break;
 1306|   112k|				}
 1307|   867k|				else if (c == '\\')
  ------------------
  |  Branch (1307:14): [True: 7.32k, False: 860k]
  ------------------
 1308|  7.32k|				{
 1309|  7.32k|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|  7.32k|	do {                                                  \
  |  |  308|  7.32k|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 7.32k]
  |  |  ------------------
  |  |  309|  7.32k|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|  7.32k|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 7.32k]
  |  |  ------------------
  ------------------
 1310|  7.32k|					                           str - case_start);
 1311|  7.32k|					saved_state = json_tokener_state_object_field;
  ------------------
  |  |  262|  7.32k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1312|  7.32k|					state = json_tokener_state_string_escape;
  ------------------
  |  |  261|  7.32k|#define state tok->stack[tok->depth].state
  ------------------
 1313|  7.32k|					break;
 1314|  7.32k|				}
 1315|   860k|				else if ((tok->flags & JSON_TOKENER_STRICT) && (unsigned char)c <= 0x1f)
  ------------------
  |  |  159|   860k|#define JSON_TOKENER_STRICT 0x01
  ------------------
  |  Branch (1315:14): [True: 0, False: 860k]
  |  Branch (1315:52): [True: 0, False: 0]
  ------------------
 1316|      0|				{
 1317|       |					// Disallow control characters in strict mode
 1318|      0|					tok->err = json_tokener_error_parse_string;
 1319|      0|					goto out;
 1320|      0|				}
 1321|   860k|				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  300|  1.72M|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
              				if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok))
  ------------------
  |  |  285|   860k|	(((tok)->char_offset == len)                                         \
  |  |  ------------------
  |  |  |  Branch (285:3): [True: 0, False: 860k]
  |  |  ------------------
  |  |  286|   860k|	     ? (((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|   860k|	     : (((tok->flags & JSON_TOKENER_VALIDATE_UTF8) &&                \
  |  |  ------------------
  |  |  |  |  179|   860k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  |  |  ------------------
  |  |  |  Branch (290:11): [True: 0, False: 860k]
  |  |  ------------------
  |  |  291|   860k|	         (!json_tokener_validate_utf8(*str, nBytesp)))               \
  |  |  ------------------
  |  |  |  Branch (291:11): [True: 0, False: 0]
  |  |  ------------------
  |  |  292|   860k|	            ? ((tok->err = json_tokener_error_parse_utf8_string), 0) \
  |  |  293|   860k|	            : (((dest) = *str), 1)))
  ------------------
  |  Branch (1321:9): [True: 21, False: 860k]
  |  Branch (1321:36): [True: 0, False: 860k]
  ------------------
 1322|     21|				{
 1323|     21|					printbuf_memappend_checked(tok->pb, case_start,
  ------------------
  |  |  307|     21|	do {                                                  \
  |  |  308|     21|		if (printbuf_memappend((p), (s), (l)) < 0)    \
  |  |  ------------------
  |  |  |  Branch (308:7): [True: 0, False: 21]
  |  |  ------------------
  |  |  309|     21|		{                                             \
  |  |  310|      0|			tok->err = json_tokener_error_memory; \
  |  |  311|      0|			goto out;                             \
  |  |  312|      0|		}                                             \
  |  |  313|     21|	} while (0)
  |  |  ------------------
  |  |  |  Branch (313:11): [Folded, False: 21]
  |  |  ------------------
  ------------------
 1324|     21|					                           str - case_start);
 1325|     21|					goto out;
 1326|     21|				}
 1327|   860k|			}
 1328|   119k|		}
 1329|   119k|		break;
 1330|       |
 1331|   119k|		case json_tokener_state_object_field_end:
  ------------------
  |  Branch (1331:3): [True: 112k, False: 2.01M]
  ------------------
 1332|   112k|			if (c == ':')
  ------------------
  |  Branch (1332:8): [True: 112k, False: 19]
  ------------------
 1333|   112k|			{
 1334|   112k|				saved_state = json_tokener_state_object_value;
  ------------------
  |  |  262|   112k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1335|   112k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|   112k|#define state tok->stack[tok->depth].state
  ------------------
 1336|   112k|			}
 1337|     19|			else
 1338|     19|			{
 1339|     19|				tok->err = json_tokener_error_parse_object_key_sep;
 1340|     19|				goto out;
 1341|     19|			}
 1342|   112k|			break;
 1343|       |
 1344|   112k|		case json_tokener_state_object_value:
  ------------------
  |  Branch (1344:3): [True: 112k, False: 2.01M]
  ------------------
 1345|   112k|			if (tok->depth >= tok->max_depth - 1)
  ------------------
  |  Branch (1345:8): [True: 0, False: 112k]
  ------------------
 1346|      0|			{
 1347|      0|				tok->err = json_tokener_error_depth;
 1348|      0|				goto out;
 1349|      0|			}
 1350|   112k|			state = json_tokener_state_object_value_add;
  ------------------
  |  |  261|   112k|#define state tok->stack[tok->depth].state
  ------------------
 1351|   112k|			tok->depth++;
 1352|   112k|			json_tokener_reset_level(tok, tok->depth);
 1353|   112k|			goto redo_char;
 1354|       |
 1355|   111k|		case json_tokener_state_object_value_add:
  ------------------
  |  Branch (1355:3): [True: 111k, False: 2.01M]
  ------------------
 1356|   111k|			if (json_object_object_add(current, obj_field_name, obj) != 0)
  ------------------
  |  |  263|   111k|#define current tok->stack[tok->depth].current
  ------------------
              			if (json_object_object_add(current, obj_field_name, obj) != 0)
  ------------------
  |  |  264|   111k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
  |  Branch (1356:8): [True: 0, False: 111k]
  ------------------
 1357|      0|			{
 1358|      0|				tok->err = json_tokener_error_memory;
 1359|      0|				goto out;
 1360|      0|			}
 1361|   111k|			free(obj_field_name);
  ------------------
  |  |  264|   111k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
 1362|   111k|			obj_field_name = NULL;
  ------------------
  |  |  264|   111k|#define obj_field_name tok->stack[tok->depth].obj_field_name
  ------------------
 1363|   111k|			saved_state = json_tokener_state_object_sep;
  ------------------
  |  |  262|   111k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1364|   111k|			state = json_tokener_state_eatws;
  ------------------
  |  |  261|   111k|#define state tok->stack[tok->depth].state
  ------------------
 1365|   111k|			goto redo_char;
 1366|       |
 1367|   111k|		case json_tokener_state_object_sep:
  ------------------
  |  Branch (1367:3): [True: 111k, False: 2.01M]
  ------------------
 1368|       |			/* { */
 1369|   111k|			if (c == '}')
  ------------------
  |  Branch (1369:8): [True: 30.5k, False: 81.4k]
  ------------------
 1370|  30.5k|			{
 1371|  30.5k|				saved_state = json_tokener_state_finish;
  ------------------
  |  |  262|  30.5k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1372|  30.5k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  30.5k|#define state tok->stack[tok->depth].state
  ------------------
 1373|  30.5k|			}
 1374|  81.4k|			else if (c == ',')
  ------------------
  |  Branch (1374:13): [True: 81.4k, False: 16]
  ------------------
 1375|  81.4k|			{
 1376|  81.4k|				saved_state = json_tokener_state_object_field_start_after_sep;
  ------------------
  |  |  262|  81.4k|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
 1377|  81.4k|				state = json_tokener_state_eatws;
  ------------------
  |  |  261|  81.4k|#define state tok->stack[tok->depth].state
  ------------------
 1378|  81.4k|			}
 1379|     16|			else
 1380|     16|			{
 1381|     16|				tok->err = json_tokener_error_parse_object_value_sep;
 1382|     16|				goto out;
 1383|     16|			}
 1384|   111k|			break;
 1385|  2.13M|		}
 1386|   837k|		(void)ADVANCE_CHAR(str, tok);
  ------------------
  |  |  300|   837k|#define ADVANCE_CHAR(str, tok) (++(str), ((tok)->char_offset)++, c)
  ------------------
 1387|   837k|		if (!c) // This is the char *before* advancing
  ------------------
  |  Branch (1387:7): [True: 5, False: 837k]
  ------------------
 1388|      5|			break;
 1389|   837k|	} /* while(PEEK_CHAR) */
 1390|       |
 1391|  7.00k|out:
 1392|  7.00k|	if ((tok->flags & JSON_TOKENER_VALIDATE_UTF8) && (nBytes != 0))
  ------------------
  |  |  179|  7.00k|#define JSON_TOKENER_VALIDATE_UTF8 0x10
  ------------------
  |  Branch (1392:6): [True: 0, False: 7.00k]
  |  Branch (1392:51): [True: 0, False: 0]
  ------------------
 1393|      0|	{
 1394|      0|		tok->err = json_tokener_error_parse_utf8_string;
 1395|      0|	}
 1396|  7.00k|	if (c && (state == json_tokener_state_finish) && (tok->depth == 0) &&
  ------------------
  |  |  261|    289|#define state tok->stack[tok->depth].state
  ------------------
  |  Branch (1396:6): [True: 289, False: 6.71k]
  |  Branch (1396:11): [True: 62, False: 227]
  |  Branch (1396:51): [True: 62, False: 0]
  ------------------
 1397|     62|	    (tok->flags & (JSON_TOKENER_STRICT | JSON_TOKENER_ALLOW_TRAILING_CHARS)) ==
  ------------------
  |  |  159|     62|#define JSON_TOKENER_STRICT 0x01
  ------------------
              	    (tok->flags & (JSON_TOKENER_STRICT | JSON_TOKENER_ALLOW_TRAILING_CHARS)) ==
  ------------------
  |  |  167|     62|#define JSON_TOKENER_ALLOW_TRAILING_CHARS 0x02
  ------------------
  |  Branch (1397:6): [True: 0, False: 62]
  ------------------
 1398|     62|	        JSON_TOKENER_STRICT)
  ------------------
  |  |  159|     62|#define JSON_TOKENER_STRICT 0x01
  ------------------
 1399|      0|	{
 1400|       |		/* unexpected char after JSON data */
 1401|      0|		tok->err = json_tokener_error_parse_unexpected;
 1402|      0|	}
 1403|  7.00k|	if (!c)
  ------------------
  |  Branch (1403:6): [True: 6.71k, False: 289]
  ------------------
 1404|  6.71k|	{
 1405|       |		/* We hit an eof char (0) */
 1406|  6.71k|		if (state != json_tokener_state_finish && saved_state != json_tokener_state_finish)
  ------------------
  |  |  261|  6.71k|#define state tok->stack[tok->depth].state
  ------------------
              		if (state != json_tokener_state_finish && saved_state != json_tokener_state_finish)
  ------------------
  |  |  262|    229|#define saved_state tok->stack[tok->depth].saved_state
  ------------------
  |  Branch (1406:7): [True: 229, False: 6.48k]
  |  Branch (1406:45): [True: 191, False: 38]
  ------------------
 1407|    191|			tok->err = json_tokener_error_parse_eof;
 1408|  6.71k|	}
 1409|       |
 1410|  7.00k|#ifdef HAVE_USELOCALE
 1411|  7.00k|	uselocale(oldlocale);
 1412|  7.00k|	freelocale(newloc);
 1413|       |#elif defined(HAVE_SETLOCALE)
 1414|       |	setlocale(LC_NUMERIC, oldlocale);
 1415|       |	free(oldlocale);
 1416|       |#endif
 1417|       |
 1418|  7.00k|	if (tok->err == json_tokener_success)
  ------------------
  |  Branch (1418:6): [True: 6.58k, False: 418]
  ------------------
 1419|  6.58k|	{
 1420|  6.58k|		json_object *ret = json_object_get(current);
  ------------------
  |  |  263|  6.58k|#define current tok->stack[tok->depth].current
  ------------------
 1421|  6.58k|		int ii;
 1422|       |
 1423|       |		/* Partially reset, so we parse additional objects on subsequent calls. */
 1424|  13.2k|		for (ii = tok->depth; ii >= 0; ii--)
  ------------------
  |  Branch (1424:25): [True: 6.64k, False: 6.58k]
  ------------------
 1425|  6.64k|			json_tokener_reset_level(tok, ii);
 1426|  6.58k|		return ret;
 1427|  6.58k|	}
 1428|       |
 1429|    418|	MC_DEBUG("json_tokener_parse_ex: error %s at offset %d\n", json_tokener_errors[tok->err],
  ------------------
  |  |   87|    418|	if (0)           \
  |  |  ------------------
  |  |  |  Branch (87:6): [Folded, False: 418]
  |  |  ------------------
  |  |   88|    418|	mc_debug(x, ##__VA_ARGS__)
  ------------------
 1430|    418|	         tok->char_offset);
 1431|       |	return NULL;
 1432|  7.00k|}
json_tokener.c:json_tokener_reset_level:
  198|   308k|{
  199|   308k|	tok->stack[depth].state = json_tokener_state_eatws;
  200|   308k|	tok->stack[depth].saved_state = json_tokener_state_start;
  201|   308k|	json_object_put(tok->stack[depth].current);
  202|   308k|	tok->stack[depth].current = NULL;
  203|   308k|	free(tok->stack[depth].obj_field_name);
  204|       |	tok->stack[depth].obj_field_name = NULL;
  205|   308k|}
json_tokener.c:is_ws_char:
   70|  1.07M|{
   71|  1.07M|	return c == ' '
  ------------------
  |  Branch (71:9): [True: 213k, False: 864k]
  ------------------
   72|   864k|	    || c == '\t'
  ------------------
  |  Branch (72:9): [True: 27.6k, False: 836k]
  ------------------
   73|   836k|	    || c == '\n'
  ------------------
  |  Branch (73:9): [True: 3.05k, False: 833k]
  ------------------
   74|   833k|	    || c == '\r';
  ------------------
  |  Branch (74:9): [True: 82, False: 833k]
  ------------------
   75|  1.07M|}
json_tokener.c:is_hex_char:
   78|  11.3k|{
   79|  11.3k|	return (c >= '0' && c <= '9')
  ------------------
  |  Branch (79:10): [True: 11.3k, False: 3]
  |  Branch (79:22): [True: 7.65k, False: 3.73k]
  ------------------
   80|  3.73k|	    || (c >= 'A' && c <= 'F')
  ------------------
  |  Branch (80:10): [True: 3.73k, False: 3]
  |  Branch (80:22): [True: 3.51k, False: 222]
  ------------------
   81|    225|	    || (c >= 'a' && c <= 'f');
  ------------------
  |  Branch (81:10): [True: 220, False: 5]
  |  Branch (81:22): [True: 214, False: 6]
  ------------------
   82|  11.3k|}
json_tokener.c:json_tokener_parse_double:
 1472|    588|{
 1473|    588|	char *end;
 1474|    588|	*retval = strtod(buf, &end);
 1475|    588|	if (buf + len == end)
  ------------------
  |  Branch (1475:6): [True: 586, False: 2]
  ------------------
 1476|    586|		return 0; // It worked
 1477|      2|	return 1;
 1478|    588|}

json_parse_int64:
  244|  1.63k|{
  245|  1.63k|	char *end = NULL;
  246|  1.63k|	int64_t val;
  247|       |
  248|  1.63k|	errno = 0;
  249|  1.63k|	val = strtoll(buf, &end, 10);
  250|  1.63k|	if (end != buf)
  ------------------
  |  Branch (250:6): [True: 1.63k, False: 5]
  ------------------
  251|  1.63k|		*retval = val;
  252|  1.63k|	if ((val == 0 && errno != 0) || (end == buf))
  ------------------
  |  Branch (252:7): [True: 44, False: 1.59k]
  |  Branch (252:19): [True: 0, False: 44]
  |  Branch (252:34): [True: 5, False: 1.63k]
  ------------------
  253|      5|	{
  254|      5|		errno = EINVAL;
  255|      5|		return 1;
  256|      5|	}
  257|  1.63k|	return 0;
  258|  1.63k|}
json_parse_uint64:
  261|  9.88k|{
  262|  9.88k|	char *end = NULL;
  263|  9.88k|	uint64_t val;
  264|       |
  265|  9.88k|	errno = 0;
  266|       |	/* strtoull() skips leading whitespace and then quietly negates a
  267|       |	 * leading '-', wrapping the result into a huge value. We only skipped
  268|       |	 * spaces here, so a '-' behind a tab/newline/etc slipped past the check
  269|       |	 * below. Skip the same whitespace set strtoull() does so the rejection
  270|       |	 * actually holds. */
  271|  9.88k|	while (*buf == ' ' || *buf == '\t' || *buf == '\n' || *buf == '\v' || *buf == '\f' ||
  ------------------
  |  Branch (271:9): [True: 0, False: 9.88k]
  |  Branch (271:24): [True: 0, False: 9.88k]
  |  Branch (271:40): [True: 0, False: 9.88k]
  |  Branch (271:56): [True: 0, False: 9.88k]
  |  Branch (271:72): [True: 0, False: 9.88k]
  ------------------
  272|  9.88k|	       *buf == '\r')
  ------------------
  |  Branch (272:9): [True: 0, False: 9.88k]
  ------------------
  273|      0|		buf++;
  274|  9.88k|	if (*buf == '-')
  ------------------
  |  Branch (274:6): [True: 0, False: 9.88k]
  ------------------
  275|      0|		return 1; /* error: uint cannot be negative */
  276|       |
  277|  9.88k|	val = strtoull(buf, &end, 10);
  278|  9.88k|	if (end != buf)
  ------------------
  |  Branch (278:6): [True: 9.88k, False: 0]
  ------------------
  279|  9.88k|		*retval = val;
  280|  9.88k|	if ((val == 0 && errno != 0) || (end == buf))
  ------------------
  |  Branch (280:7): [True: 738, False: 9.14k]
  |  Branch (280:19): [True: 0, False: 738]
  |  Branch (280:34): [True: 0, False: 9.88k]
  ------------------
  281|      0|	{
  282|      0|		errno = EINVAL;
  283|      0|		return 1;
  284|      0|	}
  285|  9.88k|	return 0;
  286|  9.88k|}
json_type_to_name:
  314|    240|{
  315|    240|	int o_type_int = (int)o_type;
  316|    240|	if (o_type_int < 0 || o_type_int >= (int)NELEM(json_type_name))
  ------------------
  |  |  299|    240|#define NELEM(a) (sizeof(a) / sizeof(a[0]))
  ------------------
  |  Branch (316:6): [True: 0, False: 240]
  |  Branch (316:24): [True: 0, False: 240]
  ------------------
  317|      0|	{
  318|      0|		_json_c_set_last_err("json_type_to_name: type %d is out of range [0,%u]\n", o_type,
  319|      0|		                     (unsigned)NELEM(json_type_name));
  ------------------
  |  |  299|      0|#define NELEM(a) (sizeof(a) / sizeof(a[0]))
  ------------------
  320|      0|		return NULL;
  321|      0|	}
  322|    240|	return json_type_name[o_type];
  323|    240|}

lh_char_equal:
  495|   301k|{
  496|   301k|	return (strcmp((const char *)k1, (const char *)k2) == 0);
  497|   301k|}
lh_table_new:
  501|  66.4k|{
  502|  66.4k|	int i;
  503|  66.4k|	struct lh_table *t;
  504|       |
  505|       |	/* Allocate space for elements to avoid divisions by zero. */
  506|  66.4k|	assert(size > 0);
  ------------------
  |  Branch (506:2): [True: 0, False: 66.4k]
  |  Branch (506:2): [True: 66.4k, False: 0]
  ------------------
  507|  66.4k|	t = (struct lh_table *)calloc(1, sizeof(struct lh_table));
  508|  66.4k|	if (!t)
  ------------------
  |  Branch (508:6): [True: 0, False: 66.4k]
  ------------------
  509|      0|		return NULL;
  510|       |
  511|  66.4k|	t->count = 0;
  512|  66.4k|	t->size = size;
  513|  66.4k|	t->table = (struct lh_entry *)calloc(size, sizeof(struct lh_entry));
  514|  66.4k|	if (!t->table)
  ------------------
  |  Branch (514:6): [True: 0, False: 66.4k]
  ------------------
  515|      0|	{
  516|      0|		free(t);
  517|      0|		return NULL;
  518|      0|	}
  519|  66.4k|	t->free_fn = free_fn;
  520|  66.4k|	t->hash_fn = hash_fn;
  521|  66.4k|	t->equal_fn = equal_fn;
  522|  1.13M|	for (i = 0; i < size; i++)
  ------------------
  |  Branch (522:14): [True: 1.07M, False: 66.4k]
  ------------------
  523|  1.07M|		t->table[i].k = LH_EMPTY;
  ------------------
  |  |   43|  1.13M|#define LH_EMPTY (void *)-1
  ------------------
  524|  66.4k|	return t;
  525|  66.4k|}
lh_kchar_table_new:
  528|  66.1k|{
  529|  66.1k|	return lh_table_new(size, free_fn, char_hash_fn, lh_char_equal);
  530|  66.1k|}
lh_table_resize:
  538|    294|{
  539|    294|	struct lh_table *new_t;
  540|    294|	struct lh_entry *ent;
  541|       |
  542|    294|	new_t = lh_table_new(new_size, NULL, t->hash_fn, t->equal_fn);
  543|    294|	if (new_t == NULL)
  ------------------
  |  Branch (543:6): [True: 0, False: 294]
  ------------------
  544|      0|		return -1;
  545|       |
  546|  4.69k|	for (ent = t->head; ent != NULL; ent = ent->next)
  ------------------
  |  Branch (546:22): [True: 4.39k, False: 294]
  ------------------
  547|  4.39k|	{
  548|  4.39k|		unsigned long h = lh_get_hash(new_t, ent->k);
  549|  4.39k|		unsigned int opts = 0;
  550|  4.39k|		if (ent->k_is_constant)
  ------------------
  |  Branch (550:7): [True: 0, False: 4.39k]
  ------------------
  551|      0|			opts = JSON_C_OBJECT_ADD_CONSTANT_KEY;
  ------------------
  |  |  114|      0|#define JSON_C_OBJECT_ADD_CONSTANT_KEY (1 << 2)
  ------------------
  552|  4.39k|		if (lh_table_insert_w_hash(new_t, ent->k, ent->v, h, opts) != 0)
  ------------------
  |  Branch (552:7): [True: 0, False: 4.39k]
  ------------------
  553|      0|		{
  554|      0|			lh_table_free(new_t);
  555|      0|			return -1;
  556|      0|		}
  557|  4.39k|	}
  558|    294|	free(t->table);
  559|    294|	t->table = new_t->table;
  560|    294|	t->size = new_size;
  561|    294|	t->head = new_t->head;
  562|    294|	t->tail = new_t->tail;
  563|    294|	free(new_t);
  564|       |
  565|    294|	return 0;
  566|    294|}
lh_table_free:
  569|  66.1k|{
  570|  66.1k|	struct lh_entry *c;
  571|  66.1k|	if (t->free_fn)
  ------------------
  |  Branch (571:6): [True: 66.1k, False: 0]
  ------------------
  572|  66.1k|	{
  573|   137k|		for (c = t->head; c != NULL; c = c->next)
  ------------------
  |  Branch (573:21): [True: 71.5k, False: 66.1k]
  ------------------
  574|  71.5k|			t->free_fn(c);
  575|  66.1k|	}
  576|  66.1k|	free(t->table);
  577|  66.1k|	free(t);
  578|  66.1k|}
lh_table_insert_w_hash:
  582|   141k|{
  583|   141k|	unsigned long n;
  584|       |
  585|   141k|	if (t->count >= t->size * LH_LOAD_FACTOR)
  ------------------
  |  |   38|   141k|#define LH_LOAD_FACTOR 0.66
  ------------------
  |  Branch (585:6): [True: 294, False: 141k]
  ------------------
  586|    294|	{
  587|       |		/* Avoid signed integer overflow with large tables. */
  588|    294|		int new_size = (t->size > INT_MAX / 2) ? INT_MAX : (t->size * 2);
  ------------------
  |  Branch (588:18): [True: 0, False: 294]
  ------------------
  589|    294|		if (t->size == INT_MAX || lh_table_resize(t, new_size) != 0)
  ------------------
  |  Branch (589:7): [True: 0, False: 294]
  |  Branch (589:29): [True: 0, False: 294]
  ------------------
  590|      0|			return -1;
  591|    294|	}
  592|       |
  593|   141k|	n = h % t->size;
  594|       |
  595|   156k|	while (1)
  ------------------
  |  Branch (595:9): [True: 156k, Folded]
  ------------------
  596|   156k|	{
  597|   156k|		if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   43|   313k|#define LH_EMPTY (void *)-1
  ------------------
              		if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   48|  15.3k|#define LH_FREED (void *)-2
  ------------------
  |  Branch (597:7): [True: 141k, False: 15.3k]
  |  Branch (597:36): [True: 0, False: 15.3k]
  ------------------
  598|   141k|			break;
  599|  15.3k|		if ((int)++n == t->size)
  ------------------
  |  Branch (599:7): [True: 410, False: 14.9k]
  ------------------
  600|    410|			n = 0;
  601|  15.3k|	}
  602|       |
  603|   141k|	t->table[n].k = k;
  604|   141k|	t->table[n].k_is_constant = (opts & JSON_C_OBJECT_ADD_CONSTANT_KEY);
  ------------------
  |  |  114|   141k|#define JSON_C_OBJECT_ADD_CONSTANT_KEY (1 << 2)
  ------------------
  605|   141k|	t->table[n].v = v;
  606|   141k|	t->count++;
  607|       |
  608|   141k|	if (t->head == NULL)
  ------------------
  |  Branch (608:6): [True: 40.0k, False: 101k]
  ------------------
  609|  40.0k|	{
  610|  40.0k|		t->head = t->tail = &t->table[n];
  611|  40.0k|		t->table[n].next = t->table[n].prev = NULL;
  612|  40.0k|	}
  613|   101k|	else
  614|   101k|	{
  615|   101k|		t->tail->next = &t->table[n];
  616|   101k|		t->table[n].prev = t->tail;
  617|   101k|		t->table[n].next = NULL;
  618|   101k|		t->tail = &t->table[n];
  619|   101k|	}
  620|       |
  621|   141k|	return 0;
  622|   141k|}
lh_table_lookup_entry_w_hash:
  630|   417k|{
  631|   417k|	unsigned long n = h % t->size;
  632|   417k|	int count = 0;
  633|       |
  634|   468k|	while (count < t->size)
  ------------------
  |  Branch (634:9): [True: 468k, False: 0]
  ------------------
  635|   468k|	{
  636|   468k|		if (t->table[n].k == LH_EMPTY)
  ------------------
  |  |   43|   468k|#define LH_EMPTY (void *)-1
  ------------------
  |  Branch (636:7): [True: 166k, False: 301k]
  ------------------
  637|   166k|			return NULL;
  638|   301k|		if (t->table[n].k != LH_FREED && t->equal_fn(t->table[n].k, k))
  ------------------
  |  |   48|   603k|#define LH_FREED (void *)-2
  ------------------
  |  Branch (638:7): [True: 301k, False: 125]
  |  Branch (638:36): [True: 251k, False: 50.6k]
  ------------------
  639|   251k|			return &t->table[n];
  640|  50.7k|		if ((int)++n == t->size)
  ------------------
  |  Branch (640:7): [True: 812, False: 49.9k]
  ------------------
  641|    812|			n = 0;
  642|  50.7k|		count++;
  643|  50.7k|	}
  644|      0|	return NULL;
  645|   417k|}
lh_table_lookup_entry:
  648|   276k|{
  649|   276k|	return lh_table_lookup_entry_w_hash(t, k, lh_get_hash(t, k));
  650|   276k|}
lh_table_lookup_ex:
  653|   275k|{
  654|   275k|	struct lh_entry *e = lh_table_lookup_entry(t, k);
  655|   275k|	if (e != NULL)
  ------------------
  |  Branch (655:6): [True: 245k, False: 29.6k]
  ------------------
  656|   245k|	{
  657|   245k|		if (v != NULL)
  ------------------
  |  Branch (657:7): [True: 239k, False: 6.10k]
  ------------------
  658|   239k|			*v = lh_entry_v(e);
  659|   245k|		return 1; /* key found */
  660|   245k|	}
  661|  29.6k|	if (v != NULL)
  ------------------
  |  Branch (661:6): [True: 28.8k, False: 800]
  ------------------
  662|  28.8k|		*v = NULL;
  663|  29.6k|	return 0; /* key not found */
  664|   275k|}
lh_table_delete_entry:
  667|  65.3k|{
  668|       |	/* CAW: fixed to be 64bit nice, still need the crazy negative case... */
  669|  65.3k|	ptrdiff_t n = (ptrdiff_t)(e - t->table);
  670|       |
  671|  65.3k|	assert(n >= 0 && n < t->size);
  ------------------
  |  Branch (671:2): [True: 0, False: 65.3k]
  |  Branch (671:2): [True: 0, False: 0]
  |  Branch (671:2): [True: 65.3k, False: 0]
  |  Branch (671:2): [True: 65.3k, False: 0]
  ------------------
  672|       |
  673|       |	/* CAW: this is bad, really bad, maybe stack goes other direction on this machine... */
  674|  65.3k|	if (n < 0)
  ------------------
  |  Branch (674:6): [True: 0, False: 65.3k]
  ------------------
  675|      0|	{
  676|      0|		return -2;
  677|      0|	}
  678|       |
  679|  65.3k|	if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   43|   130k|#define LH_EMPTY (void *)-1
  ------------------
              	if (t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED)
  ------------------
  |  |   48|  65.3k|#define LH_FREED (void *)-2
  ------------------
  |  Branch (679:6): [True: 0, False: 65.3k]
  |  Branch (679:35): [True: 0, False: 65.3k]
  ------------------
  680|      0|		return -1;
  681|  65.3k|	t->count--;
  682|  65.3k|	if (t->free_fn)
  ------------------
  |  Branch (682:6): [True: 65.3k, False: 0]
  ------------------
  683|  65.3k|		t->free_fn(e);
  684|  65.3k|	t->table[n].v = NULL;
  685|  65.3k|	t->table[n].k = LH_FREED;
  ------------------
  |  |   48|  65.3k|#define LH_FREED (void *)-2
  ------------------
  686|  65.3k|	if (t->tail == &t->table[n] && t->head == &t->table[n])
  ------------------
  |  Branch (686:6): [True: 64.9k, False: 396]
  |  Branch (686:33): [True: 10.7k, False: 54.1k]
  ------------------
  687|  10.7k|	{
  688|  10.7k|		t->head = t->tail = NULL;
  689|  10.7k|	}
  690|  54.5k|	else if (t->head == &t->table[n])
  ------------------
  |  Branch (690:11): [True: 5, False: 54.5k]
  ------------------
  691|      5|	{
  692|      5|		t->head->next->prev = NULL;
  693|      5|		t->head = t->head->next;
  694|      5|	}
  695|  54.5k|	else if (t->tail == &t->table[n])
  ------------------
  |  Branch (695:11): [True: 54.1k, False: 391]
  ------------------
  696|  54.1k|	{
  697|  54.1k|		t->tail->prev->next = NULL;
  698|  54.1k|		t->tail = t->tail->prev;
  699|  54.1k|	}
  700|    391|	else
  701|    391|	{
  702|    391|		t->table[n].prev->next = t->table[n].next;
  703|    391|		t->table[n].next->prev = t->table[n].prev;
  704|    391|	}
  705|       |	t->table[n].next = t->table[n].prev = NULL;
  706|  65.3k|	return 0;
  707|  65.3k|}
lh_table_delete_entry_to_tail:
  710|  42.3k|{
  711|  42.3k|	struct lh_entry *del_entry = t->tail;
  712|  42.3k|	do
  713|  64.8k|	{
  714|  64.8k|		struct lh_entry *prev = del_entry->prev;
  715|       |		// Could probably micro-optimize this, but better to avoid code duplication for now
  716|  64.8k|		if (lh_table_delete_entry(t, del_entry) != 0)
  ------------------
  |  Branch (716:7): [True: 0, False: 64.8k]
  ------------------
  717|      0|			return -1;
  718|  64.8k|		if (del_entry == first_entry)
  ------------------
  |  Branch (718:7): [True: 42.3k, False: 22.5k]
  ------------------
  719|  42.3k|			break;
  720|  22.5k|		del_entry = prev;
  721|  22.5k|	} while (del_entry != NULL);
  ------------------
  |  Branch (721:11): [True: 22.5k, False: 0]
  ------------------
  722|  42.3k|	return 0;
  723|  42.3k|}
lh_table_delete:
  726|    456|{
  727|    456|	struct lh_entry *e = lh_table_lookup_entry(t, k);
  728|    456|	if (!e)
  ------------------
  |  Branch (728:6): [True: 0, False: 456]
  ------------------
  729|      0|		return -1;
  730|    456|	return lh_table_delete_entry(t, e);
  731|    456|}
lh_table_length:
  734|   161k|{
  735|   161k|	return t->count;
  736|   161k|}
linkhash.c:lh_char_hash:
  459|   422k|{
  460|       |#if defined _MSC_VER || defined __MINGW32__
  461|       |#define RANDOM_SEED_TYPE LONG
  462|       |#else
  463|   422k|#define RANDOM_SEED_TYPE int
  464|   422k|#endif
  465|   422k|	static volatile RANDOM_SEED_TYPE random_seed = -1;
  466|       |
  467|   422k|	if (random_seed == -1)
  ------------------
  |  Branch (467:6): [True: 1, False: 422k]
  ------------------
  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|   422k|	return hashlittle((const char *)k, strlen((const char *)k), (uint32_t)random_seed);
  492|   422k|}
linkhash.c:hashlittle:
  256|   422k|{
  257|   422k|	uint32_t a,b,c; /* internal state */
  258|   422k|	union
  259|   422k|	{
  260|   422k|		const void *ptr;
  261|   422k|		size_t i;
  262|   422k|	} u; /* needed for Mac Powerbook G4 */
  263|       |
  264|       |	/* Set up the internal state */
  265|   422k|	a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
  266|       |
  267|   422k|	u.ptr = key;
  268|   422k|	if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
  ------------------
  |  |  118|   844k|#define HASH_LITTLE_ENDIAN 1
  |  |  ------------------
  |  |  |  Branch (118:28): [True: 422k, Folded]
  |  |  ------------------
  ------------------
  |  Branch (268:28): [True: 307k, False: 114k]
  ------------------
  269|   307k|		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|   334k|		while (length > 12)
  ------------------
  |  Branch (272:10): [True: 27.4k, False: 307k]
  ------------------
  273|  27.4k|		{
  274|  27.4k|			a += k[0];
  275|  27.4k|			b += k[1];
  276|  27.4k|			c += k[2];
  277|  27.4k|			mix(a,b,c);
  ------------------
  |  |  178|  27.4k|#define mix(a,b,c) \
  |  |  179|  27.4k|{ \
  |  |  180|  27.4k|	a -= c;  a ^= rot(c, 4);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  27.4k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  181|  27.4k|	b -= a;  b ^= rot(a, 6);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  27.4k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  182|  27.4k|	c -= b;  c ^= rot(b, 8);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  27.4k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  183|  27.4k|	a -= c;  a ^= rot(c,16);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  27.4k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  184|  27.4k|	b -= a;  b ^= rot(a,19);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  27.4k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  185|  27.4k|	c -= b;  c ^= rot(b, 4);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  27.4k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  186|  27.4k|}
  ------------------
  278|  27.4k|			length -= 12;
  279|  27.4k|			k += 3;
  280|  27.4k|		}
  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|   307k|#endif
  303|   307k|#ifndef PRECISE_MEMORY_ACCESS
  304|       |
  305|   307k|		switch(length)
  ------------------
  |  Branch (305:10): [True: 307k, False: 0]
  ------------------
  306|   307k|		{
  307|  1.00k|		case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (307:3): [True: 1.00k, False: 306k]
  ------------------
  308|  1.76k|		case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (308:3): [True: 1.76k, False: 305k]
  ------------------
  309|  4.93k|		case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (309:3): [True: 4.93k, False: 302k]
  ------------------
  310|  35.8k|		case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (310:3): [True: 35.8k, False: 271k]
  ------------------
  311|  55.5k|		case 8 : b+=k[1]; a+=k[0]; break;
  ------------------
  |  Branch (311:3): [True: 55.5k, False: 251k]
  ------------------
  312|  22.6k|		case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
  ------------------
  |  Branch (312:3): [True: 22.6k, False: 284k]
  ------------------
  313|  80.2k|		case 6 : b+=k[1]&0xffff; a+=k[0]; break;
  ------------------
  |  Branch (313:3): [True: 80.2k, False: 227k]
  ------------------
  314|  47.3k|		case 5 : b+=k[1]&0xff; a+=k[0]; break;
  ------------------
  |  Branch (314:3): [True: 47.3k, False: 259k]
  ------------------
  315|  26.5k|		case 4 : a+=k[0]; break;
  ------------------
  |  Branch (315:3): [True: 26.5k, False: 280k]
  ------------------
  316|  1.32k|		case 3 : a+=k[0]&0xffffff; break;
  ------------------
  |  Branch (316:3): [True: 1.32k, False: 305k]
  ------------------
  317|  1.59k|		case 2 : a+=k[0]&0xffff; break;
  ------------------
  |  Branch (317:3): [True: 1.59k, False: 305k]
  ------------------
  318|  27.7k|		case 1 : a+=k[0]&0xff; break;
  ------------------
  |  Branch (318:3): [True: 27.7k, False: 279k]
  ------------------
  319|    716|		case 0 : return c; /* zero length strings require no mixing */
  ------------------
  |  Branch (319:3): [True: 716, False: 306k]
  ------------------
  320|   307k|		}
  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|   307k|	}
  345|   114k|	else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0))
  ------------------
  |  |  118|   229k|#define HASH_LITTLE_ENDIAN 1
  |  |  ------------------
  |  |  |  Branch (118:28): [True: 114k, Folded]
  |  |  ------------------
  ------------------
  |  Branch (345:33): [True: 13.5k, False: 101k]
  ------------------
  346|  13.5k|	{
  347|  13.5k|		const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */
  348|  13.5k|		const uint8_t  *k8;
  349|       |
  350|       |		/*--------------- all but last block: aligned reads and different mixing */
  351|  26.0k|		while (length > 12)
  ------------------
  |  Branch (351:10): [True: 12.5k, False: 13.5k]
  ------------------
  352|  12.5k|		{
  353|  12.5k|			a += k[0] + (((uint32_t)k[1])<<16);
  354|  12.5k|			b += k[2] + (((uint32_t)k[3])<<16);
  355|  12.5k|			c += k[4] + (((uint32_t)k[5])<<16);
  356|  12.5k|			mix(a,b,c);
  ------------------
  |  |  178|  12.5k|#define mix(a,b,c) \
  |  |  179|  12.5k|{ \
  |  |  180|  12.5k|	a -= c;  a ^= rot(c, 4);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  12.5k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  181|  12.5k|	b -= a;  b ^= rot(a, 6);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  12.5k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  182|  12.5k|	c -= b;  c ^= rot(b, 8);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  12.5k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  183|  12.5k|	a -= c;  a ^= rot(c,16);  c += b; \
  |  |  ------------------
  |  |  |  |  131|  12.5k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  184|  12.5k|	b -= a;  b ^= rot(a,19);  a += c; \
  |  |  ------------------
  |  |  |  |  131|  12.5k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  185|  12.5k|	c -= b;  c ^= rot(b, 4);  b += a; \
  |  |  ------------------
  |  |  |  |  131|  12.5k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  186|  12.5k|}
  ------------------
  357|  12.5k|			length -= 12;
  358|  12.5k|			k += 6;
  359|  12.5k|		}
  360|       |
  361|       |		/*----------------------------- handle the last (probably partial) block */
  362|  13.5k|		k8 = (const uint8_t *)k;
  363|  13.5k|		switch(length)
  ------------------
  |  Branch (363:10): [True: 13.5k, False: 0]
  ------------------
  364|  13.5k|		{
  365|      0|		case 12: c+=k[4]+(((uint32_t)k[5])<<16);
  ------------------
  |  Branch (365:3): [True: 0, False: 13.5k]
  ------------------
  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: 13.5k]
  ------------------
  370|     26|		case 10: c+=k[4];
  ------------------
  |  Branch (370:3): [True: 26, False: 13.4k]
  ------------------
  371|     26|			 b+=k[2]+(((uint32_t)k[3])<<16);
  372|     26|			 a+=k[0]+(((uint32_t)k[1])<<16);
  373|     26|			 break;
  374|    603|		case 9 : c+=k8[8];                      /* fall through */
  ------------------
  |  Branch (374:3): [True: 603, False: 12.9k]
  ------------------
  375|    763|		case 8 : b+=k[2]+(((uint32_t)k[3])<<16);
  ------------------
  |  Branch (375:3): [True: 160, False: 13.3k]
  ------------------
  376|    763|			 a+=k[0]+(((uint32_t)k[1])<<16);
  377|    763|			 break;
  378|      0|		case 7 : b+=((uint32_t)k8[6])<<16;      /* fall through */
  ------------------
  |  Branch (378:3): [True: 0, False: 13.5k]
  ------------------
  379|      0|		case 6 : b+=k[2];
  ------------------
  |  Branch (379:3): [True: 0, False: 13.5k]
  ------------------
  380|      0|			 a+=k[0]+(((uint32_t)k[1])<<16);
  381|      0|			 break;
  382|      0|		case 5 : b+=k8[4];                      /* fall through */
  ------------------
  |  Branch (382:3): [True: 0, False: 13.5k]
  ------------------
  383|      0|		case 4 : a+=k[0]+(((uint32_t)k[1])<<16);
  ------------------
  |  Branch (383:3): [True: 0, False: 13.5k]
  ------------------
  384|      0|			 break;
  385|    222|		case 3 : a+=((uint32_t)k8[2])<<16;      /* fall through */
  ------------------
  |  Branch (385:3): [True: 222, False: 13.2k]
  ------------------
  386|    222|		case 2 : a+=k[0];
  ------------------
  |  Branch (386:3): [True: 0, False: 13.5k]
  ------------------
  387|    222|			 break;
  388|  12.5k|		case 1 : a+=k8[0];
  ------------------
  |  Branch (388:3): [True: 12.5k, False: 1.01k]
  ------------------
  389|  12.5k|			 break;
  390|      0|		case 0 : return c;                     /* zero length requires no mixing */
  ------------------
  |  Branch (390:3): [True: 0, False: 13.5k]
  ------------------
  391|  13.5k|		}
  392|       |
  393|  13.5k|	}
  394|   101k|	else
  395|   101k|	{
  396|       |		/* need to read the key one byte at a time */
  397|   101k|		const uint8_t *k = (const uint8_t *)key;
  398|       |
  399|       |		/*--------------- all but the last block: affect some 32 bits of (a,b,c) */
  400|   101k|		while (length > 12)
  ------------------
  |  Branch (400:10): [True: 8, False: 101k]
  ------------------
  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|   101k|		switch(length) /* all the case statements fall through */
  ------------------
  |  Branch (420:10): [True: 101k, False: 0]
  ------------------
  421|   101k|		{
  422|  19.4k|		case 12: c+=((uint32_t)k[11])<<24; /* FALLTHRU */
  ------------------
  |  Branch (422:3): [True: 19.4k, False: 82.0k]
  ------------------
  423|  21.5k|		case 11: c+=((uint32_t)k[10])<<16; /* FALLTHRU */
  ------------------
  |  Branch (423:3): [True: 2.17k, False: 99.2k]
  ------------------
  424|  21.5k|		case 10: c+=((uint32_t)k[9])<<8; /* FALLTHRU */
  ------------------
  |  Branch (424:3): [True: 0, False: 101k]
  ------------------
  425|  21.6k|		case 9 : c+=k[8]; /* FALLTHRU */
  ------------------
  |  Branch (425:3): [True: 28, False: 101k]
  ------------------
  426|  53.6k|		case 8 : b+=((uint32_t)k[7])<<24; /* FALLTHRU */
  ------------------
  |  Branch (426:3): [True: 32.0k, False: 69.4k]
  ------------------
  427|  53.6k|		case 7 : b+=((uint32_t)k[6])<<16; /* FALLTHRU */
  ------------------
  |  Branch (427:3): [True: 2, False: 101k]
  ------------------
  428|  80.0k|		case 6 : b+=((uint32_t)k[5])<<8; /* FALLTHRU */
  ------------------
  |  Branch (428:3): [True: 26.3k, False: 75.0k]
  ------------------
  429|  80.0k|		case 5 : b+=k[4]; /* FALLTHRU */
  ------------------
  |  Branch (429:3): [True: 0, False: 101k]
  ------------------
  430|   101k|		case 4 : a+=((uint32_t)k[3])<<24; /* FALLTHRU */
  ------------------
  |  Branch (430:3): [True: 21.3k, False: 80.0k]
  ------------------
  431|   101k|		case 3 : a+=((uint32_t)k[2])<<16; /* FALLTHRU */
  ------------------
  |  Branch (431:3): [True: 0, False: 101k]
  ------------------
  432|   101k|		case 2 : a+=((uint32_t)k[1])<<8; /* FALLTHRU */
  ------------------
  |  Branch (432:3): [True: 0, False: 101k]
  ------------------
  433|   101k|		case 1 : a+=k[0];
  ------------------
  |  Branch (433:3): [True: 0, False: 101k]
  ------------------
  434|   101k|			 break;
  435|      0|		case 0 : return c;
  ------------------
  |  Branch (435:3): [True: 0, False: 101k]
  ------------------
  436|   101k|		}
  437|   101k|	}
  438|       |
  439|   421k|	final(a,b,c);
  ------------------
  |  |  215|   421k|#define final(a,b,c) \
  |  |  216|   421k|{ \
  |  |  217|   421k|	c ^= b; c -= rot(b,14); \
  |  |  ------------------
  |  |  |  |  131|   421k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  218|   421k|	a ^= c; a -= rot(c,11); \
  |  |  ------------------
  |  |  |  |  131|   421k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  219|   421k|	b ^= a; b -= rot(a,25); \
  |  |  ------------------
  |  |  |  |  131|   421k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  220|   421k|	c ^= b; c -= rot(b,16); \
  |  |  ------------------
  |  |  |  |  131|   421k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  221|   421k|	a ^= c; a -= rot(c,4);  \
  |  |  ------------------
  |  |  |  |  131|   421k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  222|   421k|	b ^= a; b -= rot(a,14); \
  |  |  ------------------
  |  |  |  |  131|   421k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  223|   421k|	c ^= b; c -= rot(b,24); \
  |  |  ------------------
  |  |  |  |  131|   421k|#define rot(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
  |  |  ------------------
  |  |  224|   421k|}
  ------------------
  440|   421k|	return c;
  441|   422k|}

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

printbuf_new:
   39|  13.2k|{
   40|  13.2k|	struct printbuf *p;
   41|       |
   42|  13.2k|	p = (struct printbuf *)calloc(1, sizeof(struct printbuf));
   43|  13.2k|	if (!p)
  ------------------
  |  Branch (43:6): [True: 0, False: 13.2k]
  ------------------
   44|      0|		return NULL;
   45|  13.2k|	p->size = 32;
   46|  13.2k|	p->bpos = 0;
   47|  13.2k|	if (!(p->buf = (char *)malloc(p->size)))
  ------------------
  |  Branch (47:6): [True: 0, False: 13.2k]
  ------------------
   48|      0|	{
   49|      0|		free(p);
   50|      0|		return NULL;
   51|      0|	}
   52|  13.2k|	p->buf[0] = '\0';
   53|  13.2k|	return p;
   54|  13.2k|}
printbuf_memappend:
   99|  1.22M|{
  100|       |	/* Prevent signed integer overflows with large buffers. */
  101|  1.22M|	if (size < 0 || size > INT_MAX - p->bpos - 1)
  ------------------
  |  Branch (101:6): [True: 0, False: 1.22M]
  |  Branch (101:18): [True: 0, False: 1.22M]
  ------------------
  102|      0|	{
  103|      0|		errno = EFBIG;
  104|      0|		return -1;
  105|      0|	}
  106|  1.22M|	if (p->size <= p->bpos + size + 1)
  ------------------
  |  Branch (106:6): [True: 25.4k, False: 1.19M]
  ------------------
  107|  25.4k|	{
  108|  25.4k|		int buf_offset = -1;
  109|  25.4k|		const uintptr_t buf_addr = (uintptr_t)(const void *)buf;
  110|  25.4k|		const uintptr_t p_buf_addr = (uintptr_t)(const void *)p->buf;
  111|       |
  112|       |		/* realloc() invalidates source pointers into the old buffer. */
  113|  25.4k|		if (buf_addr >= p_buf_addr && buf_addr - p_buf_addr < (uintptr_t)p->size)
  ------------------
  |  Branch (113:7): [True: 9.96k, False: 15.4k]
  |  Branch (113:33): [True: 0, False: 9.96k]
  ------------------
  114|      0|			buf_offset = (int)(buf_addr - p_buf_addr);
  115|  25.4k|		if (printbuf_extend(p, p->bpos + size + 1) < 0)
  ------------------
  |  Branch (115:7): [True: 0, False: 25.4k]
  ------------------
  116|      0|			return -1;
  117|  25.4k|		if (buf_offset >= 0)
  ------------------
  |  Branch (117:7): [True: 0, False: 25.4k]
  ------------------
  118|      0|			buf = p->buf + buf_offset;
  119|  25.4k|	}
  120|  1.22M|	memmove(p->buf + p->bpos, buf, size);
  121|  1.22M|	p->bpos += size;
  122|  1.22M|	p->buf[p->bpos] = '\0';
  123|  1.22M|	return size;
  124|  1.22M|}
printbuf_reset:
  194|   209k|{
  195|   209k|	p->buf[0] = '\0';
  196|   209k|	p->bpos = 0;
  197|   209k|}
printbuf_free:
  200|   196k|{
  201|   196k|	if (p)
  ------------------
  |  Branch (201:6): [True: 13.2k, False: 183k]
  ------------------
  202|  13.2k|	{
  203|  13.2k|		free(p->buf);
  204|  13.2k|		free(p);
  205|  13.2k|	}
  206|   196k|}
printbuf.c:printbuf_extend:
   67|  25.4k|{
   68|  25.4k|	char *t;
   69|  25.4k|	int new_size;
   70|       |
   71|  25.4k|	if (p->size >= min_size)
  ------------------
  |  Branch (71:6): [True: 4.08k, False: 21.3k]
  ------------------
   72|  4.08k|		return 0;
   73|       |	/* Prevent signed integer overflows with large buffers. */
   74|  21.3k|	if (min_size > INT_MAX - 8)
  ------------------
  |  Branch (74:6): [True: 0, False: 21.3k]
  ------------------
   75|      0|	{
   76|      0|		errno = EFBIG;
   77|      0|		return -1;
   78|      0|	}
   79|  21.3k|	if (p->size > INT_MAX / 2)
  ------------------
  |  Branch (79:6): [True: 0, False: 21.3k]
  ------------------
   80|      0|		new_size = min_size + 8;
   81|  21.3k|	else {
   82|  21.3k|		new_size = p->size * 2;
   83|  21.3k|		if (new_size < min_size + 8)
  ------------------
  |  Branch (83:7): [True: 489, False: 20.8k]
  ------------------
   84|    489|			new_size = min_size + 8;
   85|  21.3k|	}
   86|       |#ifdef PRINTBUF_DEBUG
   87|       |	MC_DEBUG("printbuf_extend: realloc "
   88|       |	         "bpos=%d min_size=%d old_size=%d new_size=%d\n",
   89|       |	         p->bpos, min_size, p->size, new_size);
   90|       |#endif /* PRINTBUF_DEBUG */
   91|  21.3k|	if (!(t = (char *)realloc(p->buf, new_size)))
  ------------------
  |  Branch (91:6): [True: 0, False: 21.3k]
  ------------------
   92|      0|		return -1;
   93|  21.3k|	p->size = new_size;
   94|  21.3k|	p->buf = t;
   95|  21.3k|	return 0;
   96|  21.3k|}

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_init:
  137|      2|{
  138|      2|	pthread_once(&_lib_init_once, _do_lib_init);
  139|      2|}
libdm-common.c:_dm_lib_init:
  144|      2|{
  145|      2|	dm_lib_init();
  146|      2|}
libdm-common.c:_do_lib_init:
  117|      2|{
  118|      2|	const char *env;
  119|       |
  120|      2|	_init_tid = pthread_self();
  121|       |
  122|      2|	if (getenv("DM_DISABLE_UDEV"))
  ------------------
  |  Branch (122:6): [True: 0, False: 2]
  ------------------
  123|      0|		_udev_disabled = 1;
  124|       |
  125|      2|	_name_mangling_mode = DEFAULT_DM_NAME_MANGLING;
  ------------------
  |  |   51|      2|#define DEFAULT_DM_NAME_MANGLING DM_STRING_MANGLING_AUTO
  ------------------
  126|      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 (126:6): [True: 0, False: 2]
  ------------------
  127|      0|		if (!strcasecmp(env, "none"))
  ------------------
  |  Branch (127:7): [True: 0, False: 0]
  ------------------
  128|      0|			_name_mangling_mode = DM_STRING_MANGLING_NONE;
  129|      0|		else if (!strcasecmp(env, "auto"))
  ------------------
  |  Branch (129:12): [True: 0, False: 0]
  ------------------
  130|      0|			_name_mangling_mode = DM_STRING_MANGLING_AUTO;
  131|      0|		else if (!strcasecmp(env, "hex"))
  ------------------
  |  Branch (131:12): [True: 0, False: 0]
  ------------------
  132|      0|			_name_mangling_mode = DM_STRING_MANGLING_HEX;
  133|      0|	}
  134|      2|}

CRYPTO_calloc:
   29|    781|{
   30|    781|    size_t bytes;
   31|       |
   32|    781|    if (ossl_unlikely(!ossl_size_mul(num, size, &bytes, file, line)))
  ------------------
  |  |   24|    781|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 781]
  |  |  ------------------
  ------------------
   33|      0|        return NULL;
   34|       |
   35|    781|    return CRYPTO_zalloc(bytes, file, line);
   36|    781|}
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))) {
  ------------------
  |  |   24|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24: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)))
  ------------------
  |  |   24|     24|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24: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) {
  ------------------
  |  |  143|    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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  370|      0|        OPENSSL_free((void *)a->ln);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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) {
  ------------------
  |  |  144|    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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  ------------------
  |  |  141|    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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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:
   91|      1|{
   92|      1|#ifndef OPENSSL_NO_ERR
   93|      1|    if (ERR_reason_error_string(BIO_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (93:9): [True: 1, False: 0]
  ------------------
   94|      1|        ERR_load_strings_const(BIO_str_reasons);
   95|      1|#endif
   96|      1|    return 1;
   97|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|}

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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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);
  ------------------
  |  |  115|      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:
  220|    204|{
  221|    204|    if (a == NULL)
  ------------------
  |  Branch (221:9): [True: 204, False: 0]
  ------------------
  222|    204|        return;
  223|      0|    if (!BN_get_flags(a, BN_FLG_STATIC_DATA))
  ------------------
  |  |   59|      0|#define BN_FLG_STATIC_DATA 0x02
  ------------------
  |  Branch (223:9): [True: 0, False: 0]
  ------------------
  224|      0|        bn_free_d(a, 0);
  225|      0|    if (a->flags & BN_FLG_MALLOCED)
  ------------------
  |  |   58|      0|#define BN_FLG_MALLOCED 0x01
  ------------------
  |  Branch (225:9): [True: 0, False: 0]
  ------------------
  226|      0|        OPENSSL_free(a);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  227|      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))
  ------------------
  |  |  150|      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)) {
  ------------------
  |  |  151|      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:
  311|      3|{
  312|      3|    COMP_METHOD *meth = NULL;
  313|       |
  314|       |#ifndef OPENSSL_NO_ZLIB
  315|       |    if (RUN_ONCE(&zlib_once, ossl_comp_zlib_init))
  316|       |        meth = &zlib_stateful_method;
  317|       |#endif
  318|       |
  319|      3|    return meth;
  320|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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.66M|{
  585|  1.66M|#ifndef FIPS_MODULE
  586|  1.66M|    if (ctx == NULL)
  ------------------
  |  Branch (586:9): [True: 0, False: 1.66M]
  ------------------
  587|      0|        return get_default_context();
  588|  1.66M|#endif
  589|  1.66M|    return ctx;
  590|  1.66M|}
ossl_lib_ctx_is_default:
  593|  1.08k|{
  594|  1.08k|#ifndef FIPS_MODULE
  595|  1.08k|    if (ctx == NULL || ctx == get_default_context())
  ------------------
  |  Branch (595:9): [True: 0, False: 1.08k]
  |  Branch (595:24): [True: 0, False: 1.08k]
  ------------------
  596|      0|        return 1;
  597|  1.08k|#endif
  598|  1.08k|    return 0;
  599|  1.08k|}
ossl_lib_ctx_is_global_default:
  611|    442|{
  612|    442|#ifndef FIPS_MODULE
  613|    442|    if (ossl_lib_ctx_get_concrete(ctx) == &default_context_int)
  ------------------
  |  Branch (613:9): [True: 0, False: 442]
  ------------------
  614|      0|        return 1;
  615|    442|#endif
  616|    442|    return 0;
  617|    442|}
ossl_lib_ctx_get_data:
  620|  1.66M|{
  621|  1.66M|    ctx = ossl_lib_ctx_get_concrete(ctx);
  622|  1.66M|    if (ctx == NULL)
  ------------------
  |  Branch (622:9): [True: 0, False: 1.66M]
  ------------------
  623|      0|        return NULL;
  624|       |
  625|  1.66M|    switch (index) {
  626|     28|    case OSSL_LIB_CTX_PROPERTY_STRING_INDEX:
  ------------------
  |  |   99|     28|#define OSSL_LIB_CTX_PROPERTY_STRING_INDEX 3
  ------------------
  |  Branch (626:5): [True: 28, False: 1.66M]
  ------------------
  627|     28|        return ctx->property_string_data;
  628|   832k|    case OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX:
  ------------------
  |  |   96|   832k|#define OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX 0
  ------------------
  |  Branch (628:5): [True: 832k, False: 831k]
  ------------------
  629|   832k|        return ctx->evp_method_store;
  630|    485|    case OSSL_LIB_CTX_PROVIDER_STORE_INDEX:
  ------------------
  |  |   97|    485|#define OSSL_LIB_CTX_PROVIDER_STORE_INDEX 1
  ------------------
  |  Branch (630:5): [True: 485, False: 1.66M]
  ------------------
  631|    485|        return ctx->provider_store;
  632|   830k|    case OSSL_LIB_CTX_NAMEMAP_INDEX:
  ------------------
  |  |  100|   830k|#define OSSL_LIB_CTX_NAMEMAP_INDEX 4
  ------------------
  |  Branch (632:5): [True: 830k, False: 832k]
  ------------------
  633|   830k|        return ctx->namemap;
  634|     36|    case OSSL_LIB_CTX_PROPERTY_DEFN_INDEX:
  ------------------
  |  |   98|     36|#define OSSL_LIB_CTX_PROPERTY_DEFN_INDEX 2
  ------------------
  |  Branch (634:5): [True: 36, False: 1.66M]
  ------------------
  635|     36|        return ctx->property_defns;
  636|    166|    case OSSL_LIB_CTX_GLOBAL_PROPERTIES:
  ------------------
  |  |  112|    166|#define OSSL_LIB_CTX_GLOBAL_PROPERTIES 14
  ------------------
  |  Branch (636:5): [True: 166, False: 1.66M]
  ------------------
  637|    166|        return ctx->global_properties;
  638|      0|    case OSSL_LIB_CTX_DRBG_INDEX:
  ------------------
  |  |  101|      0|#define OSSL_LIB_CTX_DRBG_INDEX 5
  ------------------
  |  Branch (638:5): [True: 0, False: 1.66M]
  ------------------
  639|      0|        return ctx->drbg;
  640|      0|    case OSSL_LIB_CTX_DRBG_NONCE_INDEX:
  ------------------
  |  |  102|      0|#define OSSL_LIB_CTX_DRBG_NONCE_INDEX 6
  ------------------
  |  Branch (640:5): [True: 0, False: 1.66M]
  ------------------
  641|      0|        return ctx->drbg_nonce;
  642|      0|#ifndef FIPS_MODULE
  643|      0|    case OSSL_LIB_CTX_PROVIDER_CONF_INDEX:
  ------------------
  |  |  114|      0|#define OSSL_LIB_CTX_PROVIDER_CONF_INDEX 16
  ------------------
  |  Branch (643:5): [True: 0, False: 1.66M]
  ------------------
  644|      0|        return ctx->provider_conf;
  645|      1|    case OSSL_LIB_CTX_BIO_CORE_INDEX:
  ------------------
  |  |  115|      1|#define OSSL_LIB_CTX_BIO_CORE_INDEX 17
  ------------------
  |  Branch (645:5): [True: 1, False: 1.66M]
  ------------------
  646|      1|        return ctx->bio_core;
  647|      5|    case OSSL_LIB_CTX_CHILD_PROVIDER_INDEX:
  ------------------
  |  |  116|      5|#define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18
  ------------------
  |  Branch (647:5): [True: 5, False: 1.66M]
  ------------------
  648|      5|        return ctx->child_provider;
  649|      4|    case OSSL_LIB_CTX_DECODER_STORE_INDEX:
  ------------------
  |  |  109|      4|#define OSSL_LIB_CTX_DECODER_STORE_INDEX 11
  ------------------
  |  Branch (649:5): [True: 4, False: 1.66M]
  ------------------
  650|      4|        return ctx->decoder_store;
  651|      5|    case OSSL_LIB_CTX_DECODER_CACHE_INDEX:
  ------------------
  |  |  118|      5|#define OSSL_LIB_CTX_DECODER_CACHE_INDEX 20
  ------------------
  |  Branch (651:5): [True: 5, False: 1.66M]
  ------------------
  652|      5|        return ctx->decoder_cache;
  653|      4|    case OSSL_LIB_CTX_ENCODER_STORE_INDEX:
  ------------------
  |  |  108|      4|#define OSSL_LIB_CTX_ENCODER_STORE_INDEX 10
  ------------------
  |  Branch (653:5): [True: 4, False: 1.66M]
  ------------------
  654|      4|        return ctx->encoder_store;
  655|      4|    case OSSL_LIB_CTX_STORE_LOADER_STORE_INDEX:
  ------------------
  |  |  113|      4|#define OSSL_LIB_CTX_STORE_LOADER_STORE_INDEX 15
  ------------------
  |  Branch (655:5): [True: 4, False: 1.66M]
  ------------------
  656|      4|        return ctx->store_loader_store;
  657|      0|    case OSSL_LIB_CTX_SELF_TEST_CB_INDEX:
  ------------------
  |  |  110|      0|#define OSSL_LIB_CTX_SELF_TEST_CB_INDEX 12
  ------------------
  |  Branch (657:5): [True: 0, False: 1.66M]
  ------------------
  658|      0|        return ctx->self_test_cb;
  659|      0|    case OSSL_LIB_CTX_INDICATOR_CB_INDEX:
  ------------------
  |  |  120|      0|#define OSSL_LIB_CTX_INDICATOR_CB_INDEX 22
  ------------------
  |  Branch (659:5): [True: 0, False: 1.66M]
  ------------------
  660|      0|        return ctx->indicator_cb;
  661|      0|#endif
  662|      0|#ifndef OPENSSL_NO_THREAD_POOL
  663|      2|    case OSSL_LIB_CTX_THREAD_INDEX:
  ------------------
  |  |  117|      2|#define OSSL_LIB_CTX_THREAD_INDEX 19
  ------------------
  |  Branch (663:5): [True: 2, False: 1.66M]
  ------------------
  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:
  ------------------
  |  |  119|      0|#define OSSL_LIB_CTX_COMP_METHODS 21
  ------------------
  |  Branch (672:5): [True: 0, False: 1.66M]
  ------------------
  673|      0|        return (void *)&ctx->comp_methods;
  674|       |
  675|      0|    case OSSL_LIB_CTX_SSL_CONF_IMODULE:
  ------------------
  |  |  121|      0|#define OSSL_LIB_CTX_SSL_CONF_IMODULE 23
  ------------------
  |  Branch (675:5): [True: 0, False: 1.66M]
  ------------------
  676|      0|        return (void *)ctx->ssl_imod;
  677|       |
  678|      0|    default:
  ------------------
  |  Branch (678:5): [True: 0, False: 1.66M]
  ------------------
  679|       |        return NULL;
  680|  1.66M|    }
  681|  1.66M|}
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|    442|{
  698|       |#ifdef FIPS_MODULE
  699|       |    return "FIPS internal library context";
  700|       |#else
  701|    442|    if (ossl_lib_ctx_is_global_default(libctx))
  ------------------
  |  Branch (701:9): [True: 0, False: 442]
  ------------------
  702|      0|        return "Global default library context";
  703|    442|    if (ossl_lib_ctx_is_default(libctx))
  ------------------
  |  Branch (703:9): [True: 0, False: 442]
  ------------------
  704|      0|        return "Thread-local default library context";
  705|    442|    return "Non-default library context";
  706|    442|#endif
  707|    442|}
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.08k|{
  459|  1.08k|    OSSL_LIB_CTX *current_defctx = get_thread_default_context();
  460|       |
  461|  1.08k|    if (current_defctx == NULL && default_context_inited)
  ------------------
  |  Branch (461:9): [True: 1.08k, False: 0]
  |  Branch (461:35): [True: 1.08k, False: 0]
  ------------------
  462|  1.08k|        current_defctx = &default_context_int;
  463|  1.08k|    return current_defctx;
  464|  1.08k|}
context.c:get_thread_default_context:
  439|  1.08k|{
  440|  1.08k|    if (!RUN_ONCE(&default_context_thread_key_init, default_context_do_thread_key_init))
  ------------------
  |  |  130|  1.08k|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1.08k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (440:9): [True: 0, False: 1.08k]
  ------------------
  441|      0|        return NULL;
  442|       |
  443|  1.08k|    if (!RUN_ONCE(&default_context_init, default_context_do_init))
  ------------------
  |  |  130|  1.08k|    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)
  |  |  ------------------
  |  |  |  Branch (130:6): [True: 1.08k, False: 0]
  |  |  ------------------
  ------------------
  |  Branch (443:9): [True: 0, False: 1.08k]
  ------------------
  444|      0|        return NULL;
  445|       |
  446|  1.08k|    return CRYPTO_THREAD_get_local(&default_context_thread_local);
  447|  1.08k|}

ossl_algorithm_do_all:
  149|    467|{
  150|    467|    struct algorithm_data_st cbdata = {
  151|    467|        0,
  152|    467|    };
  153|       |
  154|    467|    cbdata.libctx = libctx;
  155|    467|    cbdata.operation_id = operation_id;
  156|    467|    cbdata.pre = pre;
  157|    467|    cbdata.reserve_store = reserve_store;
  158|    467|    cbdata.fn = fn;
  159|    467|    cbdata.unreserve_store = unreserve_store;
  160|    467|    cbdata.post = post;
  161|    467|    cbdata.data = data;
  162|       |
  163|    467|    if (provider == NULL) {
  ------------------
  |  Branch (163:9): [True: 467, False: 0]
  ------------------
  164|    467|        ossl_provider_doall_activated(libctx, algorithm_do_this, &cbdata);
  165|    467|    } 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)
  ------------------
  |  |   45|      0|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|      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|    467|}
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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  198|     34|    return ret;
  199|     34|}
core_algorithm.c:algorithm_do_this:
  103|    934|{
  104|    934|    struct algorithm_data_st *data = cbdata;
  105|    934|    int first_operation = 1;
  106|    934|    int last_operation = OSSL_OP__HIGHEST;
  ------------------
  |  |  299|    934|#define OSSL_OP__HIGHEST 22
  ------------------
  107|    934|    int cur_operation;
  108|    934|    int ok = 1;
  109|       |
  110|    934|    if (data->operation_id != 0)
  ------------------
  |  Branch (110:9): [True: 934, False: 0]
  ------------------
  111|    934|        first_operation = last_operation = data->operation_id;
  112|       |
  113|    934|    for (cur_operation = first_operation;
  114|  1.86k|        cur_operation <= last_operation;
  ------------------
  |  Branch (114:9): [True: 934, False: 934]
  ------------------
  115|    934|        cur_operation++) {
  116|    934|        int no_store = 0; /* Assume caching is ok */
  117|    934|        const OSSL_ALGORITHM *map = NULL;
  118|    934|        int ret = 0;
  119|       |
  120|    934|        map = ossl_provider_query_operation(provider, cur_operation,
  121|    934|            &no_store);
  122|    934|        ret = algorithm_do_map(provider, map, cur_operation, no_store, data);
  123|    934|        ossl_provider_unquery_operation(provider, cur_operation, map);
  124|       |
  125|    934|        if (ret < 0)
  ------------------
  |  Branch (125:13): [True: 0, False: 934]
  ------------------
  126|       |            /* Hard error, bail out immediately! */
  127|      0|            return 0;
  128|       |
  129|       |        /* If post-condition not fulfilled, set general failure */
  130|    934|        if (!ret)
  ------------------
  |  Branch (130:13): [True: 0, False: 934]
  ------------------
  131|      0|            ok = 0;
  132|    934|    }
  133|       |
  134|    934|    return ok;
  135|    934|}
core_algorithm.c:algorithm_do_map:
   44|    934|{
   45|    934|    struct algorithm_data_st *data = cbdata;
   46|    934|    int ret = 0;
   47|       |
   48|    934|    if (!data->reserve_store(no_store, data->data))
  ------------------
  |  Branch (48:9): [True: 0, False: 934]
  ------------------
   49|       |        /* Error, bail out! */
   50|      0|        return -1;
   51|       |
   52|       |    /* Do we fulfill pre-conditions? */
   53|    934|    if (data->pre == NULL) {
  ------------------
  |  Branch (53:9): [True: 0, False: 934]
  ------------------
   54|       |        /* If there is no pre-condition function, assume "yes" */
   55|      0|        ret = 1;
   56|    934|    } else if (!data->pre(provider, cur_operation, no_store, data->data,
  ------------------
  |  Branch (56:16): [True: 0, False: 934]
  ------------------
   57|    934|                   &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|    934|    if (ret == 0) {
  ------------------
  |  Branch (68:9): [True: 932, False: 2]
  ------------------
   69|    932|        ret = 1;
   70|    932|        goto end;
   71|    932|    }
   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|    934|end:
   91|    934|    data->unreserve_store(data->data);
   92|       |
   93|    934|    return ret;
   94|      2|}

ossl_method_construct:
  137|    467|{
  138|    467|    void *method = NULL;
  139|    467|    OSSL_PROVIDER *provider = provider_rw != NULL ? *provider_rw : NULL;
  ------------------
  |  Branch (139:31): [True: 467, False: 0]
  ------------------
  140|    467|    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|    467|    cbdata.store = NULL;
  154|    467|    cbdata.force_store = force_store;
  155|    467|    cbdata.mcm = mcm;
  156|    467|    cbdata.mcm_data = mcm_data;
  157|    467|    ossl_algorithm_do_all(libctx, operation_id, provider,
  158|    467|        ossl_method_construct_precondition,
  159|    467|        ossl_method_construct_reserve_store,
  160|    467|        ossl_method_construct_this,
  161|    467|        ossl_method_construct_unreserve_store,
  162|    467|        ossl_method_construct_postcondition,
  163|    467|        &cbdata);
  164|       |
  165|       |    /* If there is a temporary store, try there first */
  166|    467|    if (cbdata.store != NULL)
  ------------------
  |  Branch (166:9): [True: 0, False: 467]
  ------------------
  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|    467|    if (method == NULL)
  ------------------
  |  Branch (171:9): [True: 467, False: 0]
  ------------------
  172|    467|        method = mcm->get(NULL, (const OSSL_PROVIDER **)provider_rw, mcm_data);
  173|       |
  174|    467|    return method;
  175|    467|}
core_fetch.c:ossl_method_construct_precondition:
   63|    934|{
   64|    934|    if (!ossl_assert(result != NULL)) {
  ------------------
  |  |   45|    934|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|    934|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (64:9): [True: 0, False: 934]
  ------------------
   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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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|    934|    *result = 0;
   71|       |
   72|       |    /* No flag bits for temporary stores */
   73|    934|    if (!is_temporary_method_store(no_store, cbdata)
  ------------------
  |  Branch (73:9): [True: 934, False: 0]
  ------------------
   74|    934|        && !ossl_provider_test_operation_bit(provider, operation_id, result))
  ------------------
  |  Branch (74:12): [True: 0, False: 934]
  ------------------
   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|    934|    *result = !*result;
   83|       |
   84|    934|    return 1;
   85|    934|}
core_fetch.c:is_temporary_method_store:
   29|  1.87k|{
   30|  1.87k|    struct construct_data_st *data = cbdata;
   31|       |
   32|  1.87k|    return no_store && !data->force_store;
  ------------------
  |  Branch (32:12): [True: 0, False: 1.87k]
  |  Branch (32:24): [True: 0, False: 0]
  ------------------
   33|  1.87k|}
core_fetch.c:ossl_method_construct_reserve_store:
   36|    934|{
   37|    934|    struct construct_data_st *data = cbdata;
   38|       |
   39|    934|    if (is_temporary_method_store(no_store, data) && data->store == NULL) {
  ------------------
  |  Branch (39:9): [True: 0, False: 934]
  |  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|    934|    return data->mcm->lock_store(data->store, data->mcm_data);
   51|    934|}
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|    934|{
   55|    934|    struct construct_data_st *data = cbdata;
   56|       |
   57|    934|    return data->mcm->unlock_store(data->store, data->mcm_data);
   58|    934|}
core_fetch.c:ossl_method_construct_postcondition:
   90|      2|{
   91|      2|    if (!ossl_assert(result != NULL)) {
  ------------------
  |  |   45|      2|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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|   830k|{
   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|   830k|    return namemap == NULL || tsan_load(&namemap->max_number) == 0;
  ------------------
  |  |   61|   830k|#define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed)
  ------------------
  |  Branch (99:12): [True: 0, False: 830k]
  |  Branch (99:31): [True: 1, False: 830k]
  ------------------
  100|   830k|#endif
  101|   830k|}
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|   831k|{
  144|   831k|    if (name == NULL)
  ------------------
  |  Branch (144:9): [True: 0, False: 831k]
  ------------------
  145|      0|        return 0;
  146|   831k|    return ossl_namemap_name2num_n(namemap, name, strlen(name));
  147|   831k|}
ossl_namemap_name2num_n:
  151|   831k|{
  152|   831k|    int number = 0;
  153|   831k|    HT_VALUE *val;
  154|   831k|    NAMENUM_KEY key;
  155|       |
  156|   831k|#ifndef FIPS_MODULE
  157|   831k|    if (namemap == NULL)
  ------------------
  |  Branch (157:9): [True: 0, False: 831k]
  ------------------
  158|      0|        namemap = ossl_namemap_stored(NULL);
  159|   831k|#endif
  160|       |
  161|   831k|    if (namemap == NULL)
  ------------------
  |  Branch (161:9): [True: 0, False: 831k]
  ------------------
  162|      0|        return 0;
  163|       |
  164|   831k|    if (name_len > NAMEMAP_NAME_LEN)
  ------------------
  |  |   19|   831k|#define NAMEMAP_NAME_LEN 64
  ------------------
  |  Branch (164:9): [True: 35, False: 831k]
  ------------------
  165|     35|        name_len = NAMEMAP_NAME_LEN;
  ------------------
  |  |   19|     35|#define NAMEMAP_NAME_LEN 64
  ------------------
  166|       |
  167|   831k|    HT_INIT_RAW_KEY(&key);
  ------------------
  |  |  132|   831k|    do {                               \
  |  |  133|   831k|        HT_INIT_KEY((key));            \
  |  |  ------------------
  |  |  |  |  114|   831k|    do {                                                                                           \
  |  |  |  |  115|   831k|        memset((key), 0, sizeof(*(key)));                                                          \
  |  |  |  |  116|   831k|        (key)->key_header.keysize = (key)->key_header.bufsize = (sizeof(*(key)) - sizeof(HT_KEY)); \
  |  |  |  |  117|   831k|        (key)->key_header.keybuf = (((uint8_t *)key) + sizeof(HT_KEY));                            \
  |  |  |  |  118|   831k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:14): [Folded, False: 831k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  134|   831k|        (key)->key_header.keysize = 0; \
  |  |  135|   831k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (135:14): [Folded, False: 831k]
  |  |  ------------------
  ------------------
  168|   831k|    HT_COPY_RAW_KEY_CASE(TO_HT_KEY(&key), name, name_len);
  ------------------
  |  |  166|   831k|    do {                                                                               \
  |  |  167|   831k|        size_t tmplen = (size_t)(len);                                                 \
  |  |  168|   831k|        if (tmplen > (key)->bufsize - (key)->keysize)                                  \
  |  |  ------------------
  |  |  |  Branch (168:13): [True: 0, False: 831k]
  |  |  ------------------
  |  |  169|   831k|            tmplen = (key)->bufsize - (key)->keysize;                                  \
  |  |  170|   831k|        ossl_ht_strcase((key), (char *)&((key)->keybuf[(key)->keysize]), buf, tmplen); \
  |  |  171|   831k|        (key)->keysize += tmplen;                                                      \
  |  |  172|   831k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (172:14): [Folded, False: 831k]
  |  |  ------------------
  ------------------
  169|       |
  170|   831k|    val = ossl_ht_get(namemap->namenum_ht, TO_HT_KEY(&key));
  ------------------
  |  |  258|   831k|#define TO_HT_KEY(key) &(key)->key_header
  ------------------
  171|       |
  172|   831k|    if (val != NULL)
  ------------------
  |  Branch (172:9): [True: 830k, False: 1.20k]
  ------------------
  173|       |        /* We store a (small) int directly instead of a pointer to it. */
  174|   830k|        number = (int)(intptr_t)val->value;
  175|       |
  176|   831k|    return number;
  177|   831k|}
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)) {
  ------------------
  |  |   45|     34|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|     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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  370|     34|    return number;
  371|     34|}
ossl_namemap_stored:
  471|   830k|{
  472|   830k|#ifndef FIPS_MODULE
  473|   830k|    int nms;
  474|   830k|#endif
  475|   830k|    OSSL_NAMEMAP *namemap = ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_NAMEMAP_INDEX);
  ------------------
  |  |  100|   830k|#define OSSL_LIB_CTX_NAMEMAP_INDEX 4
  ------------------
  476|       |
  477|   830k|    if (namemap == NULL)
  ------------------
  |  Branch (477:9): [True: 0, False: 830k]
  ------------------
  478|      0|        return NULL;
  479|       |
  480|   830k|#ifndef FIPS_MODULE
  481|   830k|    nms = ossl_namemap_empty(namemap);
  482|   830k|    if (nms < 0) {
  ------------------
  |  Branch (482:9): [True: 0, False: 830k]
  ------------------
  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|   830k|    if (nms == 1) {
  ------------------
  |  Branch (489:9): [True: 1, False: 830k]
  ------------------
  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|   830k|#endif
  524|       |
  525|   830k|    return namemap;
  526|   830k|}
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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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)) {
  ------------------
  |  |   45|    170|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|    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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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) {
  ------------------
  |  | 1582|     15|#define ASN1_PKEY_ALIAS 0x1
  ------------------
  |  Branch (432:13): [True: 10, False: 5]
  ------------------
  433|     10|            switch (nid) {
  434|      1|            case EVP_PKEY_DHX:
  ------------------
  |  |   77|      1|#define EVP_PKEY_DHX NID_dhpublicnumber
  |  |  ------------------
  |  |  |  | 5539|      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:
  ------------------
  |  |   79|      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|    222|{
  254|    222|    const int max = sizeof(ctype_char_map) / sizeof(*ctype_char_map);
  255|    222|    const int a = ossl_toascii(c);
  ------------------
  |  |   56|    222|#define ossl_toascii(c) (c)
  ------------------
  256|       |
  257|    222|    return a >= 0 && a < max && (ctype_char_map[a] & mask) != 0;
  ------------------
  |  Branch (257:12): [True: 222, False: 0]
  |  Branch (257:22): [True: 222, False: 0]
  |  Branch (257:33): [True: 31, False: 191]
  ------------------
  258|    222|}
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.2.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.2.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.2.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: Fri Oct 16 07:02:41 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|  11.9M|{
   22|  11.9M|    register DES_LONG l, r, t, u;
   23|  11.9M|    register DES_LONG *s;
   24|       |
   25|  11.9M|    r = data[0];
   26|  11.9M|    l = data[1];
   27|       |
   28|  11.9M|    IP(r, l);
  ------------------
  |  |  150|  11.9M|    {                                       \
  |  |  151|  11.9M|        register DES_LONG tt;               \
  |  |  152|  11.9M|        PERM_OP(r, l, tt, 4, 0x0f0f0f0fL);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  153|  11.9M|        PERM_OP(l, r, tt, 16, 0x0000ffffL); \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  154|  11.9M|        PERM_OP(r, l, tt, 2, 0x33333333L);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  155|  11.9M|        PERM_OP(l, r, tt, 8, 0x00ff00ffL);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  156|  11.9M|        PERM_OP(r, l, tt, 1, 0x55555555L);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  157|  11.9M|    }
  ------------------
   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|  11.9M|    r = ROTATE(r, 29) & 0xffffffffL;
  ------------------
  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   38|  11.9M|    l = ROTATE(l, 29) & 0xffffffffL;
  ------------------
  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   39|       |
   40|  11.9M|    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|  11.9M|    if (enc) {
  ------------------
  |  Branch (45:9): [True: 11.9M, False: 0]
  ------------------
   46|  11.9M|        D_ENCRYPT(l, r, 0); /* 1 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   47|  11.9M|        D_ENCRYPT(r, l, 2); /* 2 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   48|  11.9M|        D_ENCRYPT(l, r, 4); /* 3 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   49|  11.9M|        D_ENCRYPT(r, l, 6); /* 4 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   50|  11.9M|        D_ENCRYPT(l, r, 8); /* 5 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   51|  11.9M|        D_ENCRYPT(r, l, 10); /* 6 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   52|  11.9M|        D_ENCRYPT(l, r, 12); /* 7 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   53|  11.9M|        D_ENCRYPT(r, l, 14); /* 8 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   54|  11.9M|        D_ENCRYPT(l, r, 16); /* 9 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   55|  11.9M|        D_ENCRYPT(r, l, 18); /* 10 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   56|  11.9M|        D_ENCRYPT(l, r, 20); /* 11 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   57|  11.9M|        D_ENCRYPT(r, l, 22); /* 12 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   58|  11.9M|        D_ENCRYPT(l, r, 24); /* 13 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   59|  11.9M|        D_ENCRYPT(r, l, 26); /* 14 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   60|  11.9M|        D_ENCRYPT(l, r, 28); /* 15 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   61|  11.9M|        D_ENCRYPT(r, l, 30); /* 16 */
  ------------------
  |  |  101|  11.9M|    {                                                                                                                                                                                                                                                                                                      \
  |  |  102|  11.9M|        LOAD_DATA_tmp(R, S, u, t, E0, E1);                                                                                                                                                                                                                                                                 \
  |  |  ------------------
  |  |  |  |   88|  11.9M|#define LOAD_DATA_tmp(a, b, c, d, e, f) LOAD_DATA(a, b, c, d, e, f, g)
  |  |  |  |  ------------------
  |  |  |  |  |  |   90|  11.9M|    u = R ^ s[S];                          \
  |  |  |  |  |  |   91|  11.9M|    t = R ^ s[S + 1]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|  11.9M|        t = ROTATE(t, 4);                                                                                                                                                                                                                                                                                  \
  |  |  ------------------
  |  |  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  |  |  ------------------
  |  |  104|  11.9M|        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|  11.9M|    }
  ------------------
   62|  11.9M|    } 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|  11.9M|    l = ROTATE(l, 3) & 0xffffffffL;
  ------------------
  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   83|  11.9M|    r = ROTATE(r, 3) & 0xffffffffL;
  ------------------
  |  |   61|  11.9M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
   84|       |
   85|  11.9M|    FP(r, l);
  ------------------
  |  |  160|  11.9M|    {                                       \
  |  |  161|  11.9M|        register DES_LONG tt;               \
  |  |  162|  11.9M|        PERM_OP(l, r, tt, 1, 0x55555555L);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  163|  11.9M|        PERM_OP(r, l, tt, 8, 0x00ff00ffL);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  164|  11.9M|        PERM_OP(l, r, tt, 2, 0x33333333L);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  165|  11.9M|        PERM_OP(r, l, tt, 16, 0x0000ffffL); \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  166|  11.9M|        PERM_OP(l, r, tt, 4, 0x0f0f0f0fL);  \
  |  |  ------------------
  |  |  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  |  |  ------------------
  |  |  167|  11.9M|    }
  ------------------
   86|  11.9M|    data[0] = l;
   87|  11.9M|    data[1] = r;
   88|  11.9M|    l = r = t = u = 0;
   89|  11.9M|}

DES_set_odd_parity:
   60|  11.9M|{
   61|  11.9M|    unsigned int i;
   62|       |
   63|   107M|    for (i = 0; i < DES_KEY_SZ; i++)
  ------------------
  |  |   52|   107M|#define DES_KEY_SZ (sizeof(DES_cblock))
  ------------------
  |  Branch (63:17): [True: 95.6M, False: 11.9M]
  ------------------
   64|  95.6M|        (*key)[i] = odd_parity[(*key)[i]];
   65|  11.9M|}
DES_set_key_unchecked:
  710|  11.9M|{
  711|  11.9M|    static const int shifts2[16] = {
  712|  11.9M|        0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0
  713|  11.9M|    };
  714|  11.9M|    register DES_LONG c, d, t, s, t2;
  715|  11.9M|    register const unsigned char *in;
  716|  11.9M|    register DES_LONG *k;
  717|  11.9M|    register int i;
  718|       |
  719|       |#ifdef OPENBSD_DEV_CRYPTO
  720|       |    memcpy(schedule->key, key, sizeof(schedule->key));
  721|       |    schedule->session = NULL;
  722|       |#endif
  723|  11.9M|    k = &schedule->ks->deslong[0];
  724|  11.9M|    in = &(*key)[0];
  725|       |
  726|  11.9M|    c2l(in, c);
  ------------------
  |  |  115|  11.9M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  116|  11.9M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  117|  11.9M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  118|  11.9M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  727|  11.9M|    c2l(in, d);
  ------------------
  |  |  115|  11.9M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  116|  11.9M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  117|  11.9M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  118|  11.9M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  728|       |
  729|       |    /*
  730|       |     * do PC1 in 47 simple operations. Thanks to John Fletcher
  731|       |     * for the inspiration.
  732|       |     */
  733|  11.9M|    PERM_OP(d, c, t, 4, 0x0f0f0f0fL);
  ------------------
  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  ------------------
  734|  11.9M|    HPERM_OP(c, t, -2, 0xcccc0000L);
  ------------------
  |  |  139|  11.9M|#define HPERM_OP(a, t, n, m) ((t) = ((((a) << (16 - (n))) ^ (a)) & (m)), \
  |  |  140|  11.9M|    (a) = (a) ^ (t) ^ (t >> (16 - (n))))
  ------------------
  735|  11.9M|    HPERM_OP(d, t, -2, 0xcccc0000L);
  ------------------
  |  |  139|  11.9M|#define HPERM_OP(a, t, n, m) ((t) = ((((a) << (16 - (n))) ^ (a)) & (m)), \
  |  |  140|  11.9M|    (a) = (a) ^ (t) ^ (t >> (16 - (n))))
  ------------------
  736|  11.9M|    PERM_OP(d, c, t, 1, 0x55555555L);
  ------------------
  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  ------------------
  737|  11.9M|    PERM_OP(c, d, t, 8, 0x00ff00ffL);
  ------------------
  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  ------------------
  738|  11.9M|    PERM_OP(d, c, t, 1, 0x55555555L);
  ------------------
  |  |  145|  11.9M|#define PERM_OP(a, b, t, n, m) ((t) = ((((a) >> (n)) ^ (b)) & (m)), \
  |  |  146|  11.9M|    (b) ^= (t),                                                     \
  |  |  147|  11.9M|    (a) ^= ((t) << (n)))
  ------------------
  739|  11.9M|    d = (((d & 0x000000ffL) << 16L) | (d & 0x0000ff00L) | ((d & 0x00ff0000L) >> 16L) | ((c & 0xf0000000L) >> 4L));
  740|  11.9M|    c &= 0x0fffffffL;
  741|       |
  742|   203M|    for (i = 0; i < ITERATIONS; i++) {
  ------------------
  |  |   28|   203M|#define ITERATIONS 16
  ------------------
  |  Branch (742:17): [True: 191M, False: 11.9M]
  ------------------
  743|   191M|        if (shifts2[i]) {
  ------------------
  |  Branch (743:13): [True: 143M, False: 47.8M]
  ------------------
  744|   143M|            c = ((c >> 2L) | (c << 26L));
  745|   143M|            d = ((d >> 2L) | (d << 26L));
  746|   143M|        } else {
  747|  47.8M|            c = ((c >> 1L) | (c << 27L));
  748|  47.8M|            d = ((d >> 1L) | (d << 27L));
  749|  47.8M|        }
  750|   191M|        c &= 0x0fffffffL;
  751|   191M|        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|   191M|        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|   191M|        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|   191M|        t2 = ((t << 16L) | (s & 0x0000ffffL)) & 0xffffffffL;
  761|   191M|        *(k++) = ROTATE(t2, 30) & 0xffffffffL;
  ------------------
  |  |   61|   191M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
  762|       |
  763|   191M|        t2 = ((s >> 16L) | (t & 0xffff0000L));
  764|   191M|        *(k++) = ROTATE(t2, 26) & 0xffffffffL;
  ------------------
  |  |   61|   191M|#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
  ------------------
  765|   191M|    }
  766|  11.9M|}

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:
  462|      4|{
  463|      4|    OSSL_METHOD_STORE *store = get_decoder_store(libctx);
  464|       |
  465|      4|    if (store != NULL)
  ------------------
  |  Branch (465:9): [True: 4, False: 0]
  ------------------
  466|      4|        return ossl_method_store_cache_flush_all(store);
  467|      0|    return 1;
  468|      4|}
decoder_meth.c:get_decoder_store:
  132|      4|{
  133|      4|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_DECODER_STORE_INDEX);
  ------------------
  |  |  109|      4|#define OSSL_LIB_CTX_DECODER_STORE_INDEX 11
  ------------------
  134|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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);
  ------------------
  |  |  118|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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:
  458|      4|{
  459|      4|    OSSL_METHOD_STORE *store = get_encoder_store(libctx);
  460|       |
  461|      4|    if (store != NULL)
  ------------------
  |  Branch (461:9): [True: 4, False: 0]
  ------------------
  462|      4|        return ossl_method_store_cache_flush_all(store);
  463|      0|    return 1;
  464|      4|}
encoder_meth.c:get_encoder_store:
  125|      4|{
  126|      4|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_ENCODER_STORE_INDEX);
  ------------------
  |  |  108|      4|#define OSSL_LIB_CTX_ENCODER_STORE_INDEX 10
  ------------------
  127|      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:
  608|     34|{
  609|     34|#ifndef OPENSSL_NO_ERR
  610|     34|    ERR_STRING_DATA d, *p = NULL;
  611|     34|    unsigned long l, r;
  612|       |
  613|     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 (613:9): [True: 0, False: 34]
  ------------------
  614|      0|        return NULL;
  615|      0|    }
  616|       |
  617|       |    /*
  618|       |     * ERR_reason_error_string() can't safely return system error strings,
  619|       |     * since openssl_strerror_r() needs a buffer for thread safety, and we
  620|       |     * haven't got one that would serve any sensible purpose.
  621|       |     */
  622|     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]
  |  |  ------------------
  ------------------
  623|      0|        return NULL;
  624|       |
  625|     34|    l = ERR_GET_LIB(e);
  626|     34|    r = ERR_GET_REASON(e);
  627|     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
  |  |  ------------------
  ------------------
  628|     34|    p = int_err_get_item(&d);
  629|     34|    if (p == NULL) {
  ------------------
  |  Branch (629:9): [True: 34, False: 0]
  ------------------
  630|     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
  |  |  ------------------
  ------------------
  631|     34|        p = int_err_get_item(&d);
  632|     34|    }
  633|     34|    return ((p == NULL) ? NULL : p->string);
  ------------------
  |  Branch (633:13): [True: 34, False: 0]
  ------------------
  634|       |#else
  635|       |    return NULL;
  636|       |#endif
  637|     34|}
ossl_err_get_state_int:
  653|  1.74k|{
  654|  1.74k|    ERR_STATE *state;
  655|  1.74k|    int saveerrno = 0;
  656|       |
  657|  1.74k|    if (save_sys_error)
  ------------------
  |  Branch (657:9): [True: 1.74k, False: 0]
  ------------------
  658|  1.74k|        saveerrno = get_last_sys_error();
  ------------------
  |  |   30|  1.74k|#define get_last_sys_error() errno
  ------------------
  659|       |
  660|  1.74k|    if (!OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL))
  ------------------
  |  |   31|  1.74k|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (660:9): [True: 0, False: 1.74k]
  ------------------
  661|      0|        return NULL;
  662|       |
  663|  1.74k|    state = CRYPTO_THREAD_get_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  664|  1.74k|        CRYPTO_THREAD_NO_CONTEXT);
  ------------------
  |  |   47|  1.74k|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  665|  1.74k|    if (state == (ERR_STATE *)-1)
  ------------------
  |  Branch (665:9): [True: 0, False: 1.74k]
  ------------------
  666|      0|        return NULL;
  667|       |
  668|  1.74k|    if (state == NULL) {
  ------------------
  |  Branch (668:9): [True: 1, False: 1.73k]
  ------------------
  669|      1|        if (!CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  ------------------
  |  Branch (669:13): [True: 0, False: 1]
  ------------------
  670|      1|                CRYPTO_THREAD_NO_CONTEXT, (ERR_STATE *)-1))
  ------------------
  |  |   47|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  671|      0|            return NULL;
  672|       |
  673|      1|        state = OSSL_ERR_STATE_new();
  674|      1|        if (state == NULL) {
  ------------------
  |  Branch (674:13): [True: 0, False: 1]
  ------------------
  675|      0|            CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  676|      0|                CRYPTO_THREAD_NO_CONTEXT, NULL);
  ------------------
  |  |   47|      0|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  677|      0|            return NULL;
  678|      0|        }
  679|       |
  680|      1|        if (!ossl_init_thread_start(NULL, NULL, err_delete_thread_state)
  ------------------
  |  Branch (680:13): [True: 0, False: 1]
  ------------------
  681|      1|            || !CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  ------------------
  |  Branch (681:16): [True: 0, False: 1]
  ------------------
  682|      1|                CRYPTO_THREAD_NO_CONTEXT, state)) {
  ------------------
  |  |   47|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  683|      0|            OSSL_ERR_STATE_free(state);
  684|      0|            CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  685|      0|                CRYPTO_THREAD_NO_CONTEXT, NULL);
  ------------------
  |  |   47|      0|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  686|      0|            return NULL;
  687|      0|        }
  688|       |
  689|       |        /* Ignore failures from these */
  690|      1|        OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL);
  ------------------
  |  |  548|      1|#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L
  ------------------
  691|      1|    }
  692|       |
  693|  1.74k|    if (save_sys_error)
  ------------------
  |  Branch (693:9): [True: 1.74k, False: 0]
  ------------------
  694|       |        set_sys_error(saveerrno);
  ------------------
  |  |   32|  1.74k|#define set_sys_error(e) errno = (e)
  ------------------
  695|  1.74k|    return state;
  696|  1.74k|}
err_shelve_state:
  703|      1|{
  704|      1|    int saveerrno = get_last_sys_error();
  ------------------
  |  |   30|      1|#define get_last_sys_error() errno
  ------------------
  705|       |
  706|       |    /*
  707|       |     * Note, at present our only caller is OPENSSL_init_crypto(), indirectly
  708|       |     * via ossl_init_load_crypto_nodelete(), by which point the requested
  709|       |     * "base" initialization has already been performed, so the below call is a
  710|       |     * NOOP, that re-enters OPENSSL_init_crypto() only to quickly return.
  711|       |     *
  712|       |     * If are no other valid callers of this function, the call below can be
  713|       |     * removed, avoiding the re-entry into OPENSSL_init_crypto().  If there are
  714|       |     * potential uses that are not from inside OPENSSL_init_crypto(), then this
  715|       |     * call is needed, but some care is required to make sure that the re-entry
  716|       |     * remains a NOOP.
  717|       |     */
  718|      1|    if (!OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL))
  ------------------
  |  |   31|      1|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (718:9): [True: 0, False: 1]
  ------------------
  719|      0|        return 0;
  720|       |
  721|      1|    *state = CRYPTO_THREAD_get_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  722|      1|        CRYPTO_THREAD_NO_CONTEXT);
  ------------------
  |  |   47|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  723|      1|    if (!CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  ------------------
  |  Branch (723:9): [True: 0, False: 1]
  ------------------
  724|      1|            CRYPTO_THREAD_NO_CONTEXT, (ERR_STATE *)-1))
  ------------------
  |  |   47|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  725|      0|        return 0;
  726|       |
  727|      1|    set_sys_error(saveerrno);
  ------------------
  |  |   32|      1|#define set_sys_error(e) errno = (e)
  ------------------
  728|      1|    return 1;
  729|      1|}
err_unshelve_state:
  736|      1|{
  737|      1|    if (state != (void *)-1)
  ------------------
  |  Branch (737:9): [True: 1, False: 0]
  ------------------
  738|      1|        CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_ERR_KEY,
  739|      1|            CRYPTO_THREAD_NO_CONTEXT, (ERR_STATE *)state);
  ------------------
  |  |   47|      1|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  740|      1|}
ERR_get_next_error_library:
  743|      4|{
  744|      4|    int ret;
  745|       |
  746|      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 (746:9): [True: 0, False: 4]
  ------------------
  747|      0|        return 0;
  748|       |
  749|      4|    if (!CRYPTO_THREAD_write_lock(err_string_lock))
  ------------------
  |  Branch (749:9): [True: 0, False: 4]
  ------------------
  750|      0|        return 0;
  751|      4|    ret = int_err_library_number++;
  752|      4|    CRYPTO_THREAD_unlock(err_string_lock);
  753|      4|    return ret;
  754|      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:
   16|    580|{
   17|    580|    ERR_STATE *es;
   18|       |
   19|    580|    es = ossl_err_get_state_int(1);
   20|    580|    if (es == NULL)
  ------------------
  |  Branch (20:9): [True: 0, False: 580]
  ------------------
   21|      0|        return;
   22|       |
   23|       |    /* Allocate a slot */
   24|    580|    err_get_slot(es);
   25|    580|    err_clear(es, es->top, 0);
   26|    580|}
ERR_set_debug:
   29|    580|{
   30|    580|    ERR_STATE *es;
   31|       |
   32|    580|    es = ossl_err_get_state_int(1);
   33|    580|    if (es == NULL)
  ------------------
  |  Branch (33:9): [True: 0, False: 580]
  ------------------
   34|      0|        return;
   35|       |
   36|    580|    err_set_debug(es, es->top, file, line, func);
   37|    580|}
ERR_set_error:
   40|    580|{
   41|    580|    va_list args;
   42|       |
   43|    580|    va_start(args, fmt);
   44|    580|    ERR_vset_error(lib, reason, fmt, args);
   45|       |    va_end(args);
   46|    580|}
ERR_vset_error:
   49|    580|{
   50|    580|    ERR_STATE *es;
   51|    580|    char *buf = NULL;
   52|    580|    size_t buf_size = 0;
   53|    580|    unsigned long flags = 0;
   54|    580|    size_t i;
   55|       |
   56|    580|    es = ossl_err_get_state_int(1);
   57|    580|    if (es == NULL)
  ------------------
  |  Branch (57:9): [True: 0, False: 580]
  ------------------
   58|      0|        return;
   59|    580|    i = es->top;
   60|       |
   61|    580|    if (fmt != NULL) {
  ------------------
  |  Branch (61:9): [True: 580, False: 0]
  ------------------
   62|    580|        int printed_len = 0;
   63|    580|        char *rbuf = NULL;
   64|       |
   65|    580|        buf = es->err_data[i];
   66|    580|        buf_size = es->err_data_size[i];
   67|       |
   68|       |        /*
   69|       |         * To protect the string we just grabbed from tampering by other
   70|       |         * functions we may call, or to protect them from freeing a pointer
   71|       |         * that may no longer be valid at that point, we clear away the
   72|       |         * data pointer and the flags.  We will set them again at the end
   73|       |         * of this function.
   74|       |         */
   75|    580|        es->err_data[i] = NULL;
   76|    580|        es->err_data_flags[i] = 0;
   77|       |
   78|       |        /*
   79|       |         * Try to maximize the space available.  If that fails, we use what
   80|       |         * we have.
   81|       |         */
   82|    580|        if (buf_size < ERR_MAX_DATA_SIZE
  ------------------
  |  |  348|  1.16k|#define ERR_MAX_DATA_SIZE 1024
  ------------------
  |  Branch (82:13): [True: 580, False: 0]
  ------------------
   83|    580|            && (rbuf = OPENSSL_realloc(buf, ERR_MAX_DATA_SIZE)) != NULL) {
  ------------------
  |  |  125|    580|    CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (83:16): [True: 580, False: 0]
  ------------------
   84|    580|            buf = rbuf;
   85|    580|            buf_size = ERR_MAX_DATA_SIZE;
  ------------------
  |  |  348|    580|#define ERR_MAX_DATA_SIZE 1024
  ------------------
   86|    580|        }
   87|       |
   88|    580|        if (buf != NULL) {
  ------------------
  |  Branch (88:13): [True: 580, False: 0]
  ------------------
   89|    580|            printed_len = vsnprintf(buf, buf_size, fmt, args);
   90|    580|        }
   91|    580|        if (printed_len < 0 || (size_t)printed_len >= buf_size)
  ------------------
  |  Branch (91:13): [True: 0, False: 580]
  |  Branch (91:32): [True: 0, False: 580]
  ------------------
   92|      0|            printed_len = 0;
   93|    580|        if (buf != NULL)
  ------------------
  |  Branch (93:13): [True: 580, False: 0]
  ------------------
   94|    580|            buf[printed_len] = '\0';
   95|       |
   96|       |        /*
   97|       |         * Try to reduce the size, but only if we maximized above.  If that
   98|       |         * fails, we keep what we have.
   99|       |         * (According to documentation, realloc leaves the old buffer untouched
  100|       |         * if it fails)
  101|       |         */
  102|    580|        if ((rbuf = OPENSSL_realloc(buf, printed_len + 1)) != NULL) {
  ------------------
  |  |  125|    580|    CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (102:13): [True: 580, False: 0]
  ------------------
  103|    580|            buf = rbuf;
  104|    580|            buf_size = printed_len + 1;
  105|    580|            buf[printed_len] = '\0';
  106|    580|        }
  107|       |
  108|    580|        if (buf != NULL)
  ------------------
  |  Branch (108:13): [True: 580, False: 0]
  ------------------
  109|    580|            flags = ERR_TXT_MALLOCED | ERR_TXT_STRING;
  ------------------
  |  |   50|    580|#define ERR_TXT_MALLOCED 0x01
  ------------------
                          flags = ERR_TXT_MALLOCED | ERR_TXT_STRING;
  ------------------
  |  |   51|    580|#define ERR_TXT_STRING 0x02
  ------------------
  110|    580|    }
  111|       |
  112|    580|    err_clear_data(es, es->top, 0);
  113|    580|    err_set_error(es, es->top, lib, reason);
  114|    580|    if (fmt != NULL)
  ------------------
  |  Branch (114:9): [True: 580, False: 0]
  ------------------
  115|    580|        err_set_data(es, es->top, buf, buf_size, flags);
  116|    580|}

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

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());
  ------------------
  |  |  982|      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());
  ------------------
  |  |  986|      1|#define EVP_des_ede_cfb EVP_des_ede_cfb64
  ------------------
   25|      1|    EVP_add_cipher(EVP_des_ede3_cfb());
  ------------------
  |  |  988|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1015|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1169|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1177|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1025|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1032|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1039|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1054|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1070|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1085|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1106|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1116|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1126|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1138|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1146|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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());
  ------------------
  |  | 1154|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  682|      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");
  ------------------
  |  |  684|      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");
  ------------------
  |  |  684|      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);
  ------------------
  |  |  684|      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");
  ------------------
  |  |  684|      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");
  ------------------
  |  |  684|      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.85k|{
   30|  9.85k|    if (ctx->algctx != NULL) {
  ------------------
  |  Branch (30:9): [True: 9.85k, False: 0]
  ------------------
   31|  9.85k|        if (ctx->digest != NULL && ctx->digest->freectx != NULL)
  ------------------
  |  Branch (31:13): [True: 9.85k, False: 0]
  |  Branch (31:36): [True: 9.85k, False: 0]
  ------------------
   32|  9.85k|            ctx->digest->freectx(ctx->algctx);
   33|  9.85k|        ctx->algctx = NULL;
   34|  9.85k|        EVP_MD_CTX_set_flags(ctx, EVP_MD_CTX_FLAG_CLEANED);
  ------------------
  |  |  249|  9.85k|#define EVP_MD_CTX_FLAG_CLEANED 0x0002 /* context has already been \
  ------------------
   35|  9.85k|    }
   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.85k|    if (force)
  ------------------
  |  Branch (43:9): [True: 0, False: 9.85k]
  ------------------
   44|      0|        ctx->digest = NULL;
   45|       |
   46|       |    /* Non legacy code, this has to be later than the ctx->digest cleaning */
   47|  9.85k|    if (!keep_fetched) {
  ------------------
  |  Branch (47:9): [True: 9.85k, False: 0]
  ------------------
   48|  9.85k|        EVP_MD_free(ctx->fetched_digest);
   49|  9.85k|        ctx->fetched_digest = NULL;
   50|       |        ctx->reqdigest = NULL;
   51|  9.85k|    }
   52|  9.85k|}
EVP_MD_CTX_reset:
   77|  9.85k|{
   78|  9.85k|    return evp_md_ctx_reset_ex(ctx, 0);
   79|  9.85k|}
EVP_MD_CTX_new:
  108|  9.85k|{
  109|  9.85k|    return OPENSSL_zalloc(sizeof(EVP_MD_CTX));
  ------------------
  |  |  113|  9.85k|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  110|  9.85k|}
EVP_MD_CTX_free:
  113|  9.85k|{
  114|  9.85k|    if (ctx == NULL)
  ------------------
  |  Branch (114:9): [True: 0, False: 9.85k]
  ------------------
  115|      0|        return;
  116|       |
  117|  9.85k|    EVP_MD_CTX_reset(ctx);
  118|  9.85k|    OPENSSL_free(ctx);
  ------------------
  |  |  136|  9.85k|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  119|  9.85k|}
evp_md_ctx_free_algctx:
  122|  9.85k|{
  123|  9.85k|    if (ctx->algctx != NULL) {
  ------------------
  |  Branch (123:9): [True: 0, False: 9.85k]
  ------------------
  124|      0|        if (!ossl_assert(ctx->digest != NULL)) {
  ------------------
  |  |   45|      0|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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.85k|    return 1;
  133|  9.85k|}
EVP_DigestInit_ex2:
  228|      3|{
  229|      3|    return evp_md_init_internal(ctx, type, params);
  230|      3|}
EVP_DigestInit_ex:
  239|  19.7k|{
  240|  19.7k|    if (!ossl_assert(impl == NULL))
  ------------------
  |  |   45|  19.7k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|  19.7k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (240:9): [True: 0, False: 19.7k]
  ------------------
  241|      0|        return 0;
  242|  19.7k|    return evp_md_init_internal(ctx, type, NULL);
  243|  19.7k|}
EVP_DigestUpdate:
  246|  19.7k|{
  247|  19.7k|    if (ossl_unlikely(count == 0))
  ------------------
  |  |   24|  19.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 19.7k]
  |  |  ------------------
  ------------------
  248|      0|        return 1;
  249|       |
  250|  19.7k|    if (ossl_unlikely((ctx->flags & EVP_MD_CTX_FLAG_FINALISED) != 0)) {
  ------------------
  |  |   24|  19.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 19.7k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  252|      0|        return 0;
  253|      0|    }
  254|       |
  255|  19.7k|    if (ossl_unlikely(ctx->pctx != NULL)
  ------------------
  |  |   24|  39.4k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 19.7k]
  |  |  ------------------
  ------------------
  256|      0|        && EVP_PKEY_CTX_IS_SIGNATURE_OP(ctx->pctx)
  ------------------
  |  |  474|  19.7k|    (((ctx)->operation & EVP_PKEY_OP_TYPE_SIG) != 0)
  |  |  ------------------
  |  |  |  | 1628|      0|    (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1612|      0|#define EVP_PKEY_OP_SIGN (1 << 4)
  |  |  |  |  ------------------
  |  |  |  |                   (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1622|      0|#define EVP_PKEY_OP_SIGNMSG (1 << 14)
  |  |  |  |  ------------------
  |  |  |  | 1629|      0|        | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1613|      0|#define EVP_PKEY_OP_VERIFY (1 << 5)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1623|      0|#define EVP_PKEY_OP_VERIFYMSG (1 << 15)
  |  |  |  |  ------------------
  |  |  |  | 1630|      0|        | EVP_PKEY_OP_VERIFYRECOVER                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1614|      0|#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6)
  |  |  |  |  ------------------
  |  |  |  | 1631|      0|        | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1615|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1616|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (474: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)
  ------------------
  |  | 1615|      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)
  ------------------
  |  | 1616|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  273|      0|        return 0;
  274|      0|    }
  275|       |
  276|  19.7k|    if (ctx->digest == NULL || ctx->digest->prov == NULL) {
  ------------------
  |  Branch (276:9): [True: 0, False: 19.7k]
  |  Branch (276:32): [True: 0, False: 19.7k]
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  278|      0|        return 0;
  279|      0|    }
  280|       |
  281|  19.7k|    if (ossl_unlikely(ctx->digest->dupdate == NULL)) {
  ------------------
  |  |   24|  19.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 19.7k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  283|      0|        return 0;
  284|      0|    }
  285|  19.7k|    return ctx->digest->dupdate(ctx->algctx, data, count);
  286|  19.7k|}
EVP_DigestFinal_ex:
  299|  9.85k|{
  300|  9.85k|    int ret, sz;
  301|  9.85k|    size_t size = 0;
  302|  9.85k|    size_t mdsize = 0;
  303|       |
  304|  9.85k|    if (ossl_unlikely(ctx->digest == NULL))
  ------------------
  |  |   24|  9.85k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.85k]
  |  |  ------------------
  ------------------
  305|      0|        return 0;
  306|       |
  307|  9.85k|    sz = EVP_MD_CTX_get_size(ctx);
  ------------------
  |  |  560|  9.85k|#define EVP_MD_CTX_get_size(e) EVP_MD_CTX_get_size_ex(e)
  ------------------
  308|  9.85k|    if (ossl_unlikely(sz < 0))
  ------------------
  |  |   24|  9.85k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.85k]
  |  |  ------------------
  ------------------
  309|      0|        return 0;
  310|  9.85k|    mdsize = sz;
  311|  9.85k|    if (ossl_unlikely(ctx->digest->prov == NULL)) {
  ------------------
  |  |   24|  9.85k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.85k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  313|      0|        return 0;
  314|      0|    }
  315|       |
  316|  9.85k|    if (ossl_unlikely(ctx->digest->dfinal == NULL)) {
  ------------------
  |  |   24|  9.85k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.85k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  318|      0|        return 0;
  319|      0|    }
  320|       |
  321|  9.85k|    if (ossl_unlikely((ctx->flags & EVP_MD_CTX_FLAG_FINALISED) != 0)) {
  ------------------
  |  |   24|  9.85k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.85k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  323|      0|        return 0;
  324|      0|    }
  325|       |
  326|  9.85k|    ret = ctx->digest->dfinal(ctx->algctx, md, &size, mdsize);
  327|       |
  328|  9.85k|    ctx->flags |= EVP_MD_CTX_FLAG_FINALISED;
  ------------------
  |  |   33|  9.85k|#define EVP_MD_CTX_FLAG_FINALISED 0x0800
  ------------------
  329|       |
  330|  9.85k|    if (isize != NULL) {
  ------------------
  |  Branch (330:9): [True: 9.85k, False: 0]
  ------------------
  331|  9.85k|        if (ossl_likely(size <= UINT_MAX)) {
  ------------------
  |  |   23|  9.85k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 9.85k, False: 0]
  |  |  ------------------
  ------------------
  332|  9.85k|            *isize = (unsigned int)size;
  333|  9.85k|        } 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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  335|      0|            ret = 0;
  336|      0|        }
  337|  9.85k|    }
  338|       |
  339|  9.85k|    return ret;
  340|  9.85k|}
EVP_MD_CTX_get_params:
  657|    151|{
  658|    151|    EVP_PKEY_CTX *pctx = ctx->pctx;
  659|       |
  660|       |    /* If we have a pctx then we should try that first */
  661|    151|    if (pctx != NULL
  ------------------
  |  Branch (661:9): [True: 0, False: 151]
  ------------------
  662|      0|        && (pctx->operation == EVP_PKEY_OP_VERIFYCTX
  ------------------
  |  | 1616|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  ------------------
  |  Branch (662:13): [True: 0, False: 0]
  ------------------
  663|      0|            || pctx->operation == EVP_PKEY_OP_SIGNCTX)
  ------------------
  |  | 1615|      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|    151|    if (ctx->digest != NULL && ctx->digest->get_ctx_params != NULL)
  ------------------
  |  Branch (669:9): [True: 151, False: 0]
  |  Branch (669:32): [True: 151, False: 0]
  ------------------
  670|    151|        return ctx->digest->get_ctx_params(ctx->algctx, params);
  671|       |
  672|      0|    return 0;
  673|    151|}
EVP_MD_CTX_gettable_params:
  687|  9.86k|{
  688|  9.86k|    EVP_PKEY_CTX *pctx;
  689|  9.86k|    void *provctx;
  690|       |
  691|  9.86k|    if (ossl_unlikely(ctx == NULL))
  ------------------
  |  |   24|  9.86k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.86k]
  |  |  ------------------
  ------------------
  692|      0|        return NULL;
  693|       |
  694|       |    /* If we have a pctx then we should try that first */
  695|  9.86k|    pctx = ctx->pctx;
  696|  9.86k|    if (ossl_unlikely(pctx != NULL)
  ------------------
  |  |   24|  19.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.86k]
  |  |  ------------------
  ------------------
  697|      0|        && (pctx->operation == EVP_PKEY_OP_VERIFYCTX
  ------------------
  |  | 1616|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  ------------------
  |  Branch (697:13): [True: 0, False: 0]
  ------------------
  698|      0|            || pctx->operation == EVP_PKEY_OP_SIGNCTX)
  ------------------
  |  | 1615|      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.86k|    if (ossl_unlikely(ctx->digest != NULL
  ------------------
  |  |   24|  19.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 151, False: 9.71k]
  |  |  |  Branch (24:46): [True: 9.86k, False: 0]
  |  |  |  Branch (24:46): [True: 151, False: 9.71k]
  |  |  ------------------
  ------------------
  706|  9.86k|            && ctx->digest->gettable_ctx_params != NULL)) {
  707|    151|        provctx = ossl_provider_ctx(EVP_MD_get0_provider(ctx->digest));
  708|    151|        return ctx->digest->gettable_ctx_params(ctx->algctx, provctx);
  709|    151|    }
  710|  9.71k|    return NULL;
  711|  9.86k|}
evp_md_new:
  760|     34|{
  761|     34|    EVP_MD *md = OPENSSL_zalloc(sizeof(*md));
  ------------------
  |  |  113|     34|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  765|      0|        return NULL;
  766|      0|    }
  767|     34|    return md;
  768|     34|}
EVP_MD_fetch:
 1008|   830k|{
 1009|   830k|    EVP_MD *md = evp_generic_fetch(ctx, OSSL_OP_DIGEST, algorithm, properties,
  ------------------
  |  |  283|   830k|#define OSSL_OP_DIGEST 1
  ------------------
 1010|   830k|        evp_md_from_algorithm, evp_md_up_ref, evp_md_free);
 1011|       |
 1012|   830k|    return md;
 1013|   830k|}
EVP_MD_up_ref:
 1016|  9.85k|{
 1017|       |#ifdef OPENSSL_NO_CACHED_FETCH
 1018|       |    return evp_md_up_ref(md);
 1019|       |#else
 1020|  9.85k|    if (md->flags & EVP_MD_FLAG_NO_STORE)
  ------------------
  |  |  230|  9.85k|#define EVP_MD_FLAG_NO_STORE 0x0800
  ------------------
  |  Branch (1020:9): [True: 0, False: 9.85k]
  ------------------
 1021|      0|        return evp_md_up_ref(md);
 1022|  9.85k|    return 1;
 1023|  9.85k|#endif
 1024|  9.85k|}
EVP_MD_free:
 1027|   849k|{
 1028|       |#ifdef OPENSSL_NO_CACHED_FETCH
 1029|       |    evp_md_free(md);
 1030|       |#else
 1031|   849k|    if (md != NULL && (md->flags & EVP_MD_FLAG_NO_STORE))
  ------------------
  |  |  230|   839k|#define EVP_MD_FLAG_NO_STORE 0x0800
  ------------------
  |  Branch (1031:9): [True: 839k, False: 9.85k]
  |  Branch (1031:23): [True: 0, False: 839k]
  ------------------
 1032|      0|        evp_md_free(md);
 1033|   849k|    return;
 1034|   849k|#endif
 1035|   849k|}
digest.c:evp_md_ctx_reset_ex:
   55|  9.85k|{
   56|  9.85k|    if (ctx == NULL)
  ------------------
  |  Branch (56:9): [True: 0, False: 9.85k]
  ------------------
   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.85k|    if (!EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_KEEP_PKEY_CTX)) {
  ------------------
  |  |   32|  9.85k|#define EVP_MD_CTX_FLAG_KEEP_PKEY_CTX 0x0400
  ------------------
  |  Branch (63:9): [True: 9.85k, False: 0]
  ------------------
   64|  9.85k|        EVP_PKEY_CTX_free(ctx->pctx);
   65|  9.85k|        ctx->pctx = NULL;
   66|  9.85k|    }
   67|       |
   68|  9.85k|    evp_md_ctx_clear_digest(ctx, 0, keep_fetched);
   69|  9.85k|    if (!keep_fetched)
  ------------------
  |  Branch (69:9): [True: 9.85k, False: 0]
  ------------------
   70|  9.85k|        OPENSSL_cleanse(ctx, sizeof(*ctx));
   71|       |
   72|  9.85k|    return 1;
   73|  9.85k|}
digest.c:evp_md_init_internal:
  137|  19.7k|{
  138|  19.7k|#if !defined(FIPS_MODULE)
  139|  19.7k|    if (ctx->pctx != NULL
  ------------------
  |  Branch (139:9): [True: 0, False: 19.7k]
  ------------------
  140|      0|        && EVP_PKEY_CTX_IS_SIGNATURE_OP(ctx->pctx)
  ------------------
  |  |  474|  19.7k|    (((ctx)->operation & EVP_PKEY_OP_TYPE_SIG) != 0)
  |  |  ------------------
  |  |  |  | 1628|      0|    (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1612|      0|#define EVP_PKEY_OP_SIGN (1 << 4)
  |  |  |  |  ------------------
  |  |  |  |                   (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_SIGNMSG          \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1622|      0|#define EVP_PKEY_OP_SIGNMSG (1 << 14)
  |  |  |  |  ------------------
  |  |  |  | 1629|      0|        | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1613|      0|#define EVP_PKEY_OP_VERIFY (1 << 5)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYMSG \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1623|      0|#define EVP_PKEY_OP_VERIFYMSG (1 << 15)
  |  |  |  |  ------------------
  |  |  |  | 1630|      0|        | EVP_PKEY_OP_VERIFYRECOVER                  \
  |  |  |  |  ------------------
  |  |  |  |  |  | 1614|      0|#define EVP_PKEY_OP_VERIFYRECOVER (1 << 6)
  |  |  |  |  ------------------
  |  |  |  | 1631|      0|        | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1615|      0|#define EVP_PKEY_OP_SIGNCTX (1 << 7)
  |  |  |  |  ------------------
  |  |  |  |                       | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
  |  |  |  |  ------------------
  |  |  |  |  |  | 1616|      0|#define EVP_PKEY_OP_VERIFYCTX (1 << 8)
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (474: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)
  ------------------
  |  | 1615|      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)
  ------------------
  |  | 1616|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  153|      0|        return 0;
  154|      0|    }
  155|  19.7k|#endif
  156|       |
  157|  19.7k|    EVP_MD_CTX_clear_flags(ctx, EVP_MD_CTX_FLAG_CLEANED | EVP_MD_CTX_FLAG_FINALISED);
  ------------------
  |  |  249|  19.7k|#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.7k|#define EVP_MD_CTX_FLAG_FINALISED 0x0800
  ------------------
  158|       |
  159|  19.7k|    if (type != NULL) {
  ------------------
  |  Branch (159:9): [True: 19.7k, False: 0]
  ------------------
  160|  19.7k|        ctx->reqdigest = type;
  161|  19.7k|    } else {
  162|      0|        if (ossl_unlikely(ctx->digest == NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24: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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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.7k|    if (ossl_likely(ctx->digest == type)) {
  ------------------
  |  |   23|  19.7k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 9.85k, False: 9.85k]
  |  |  ------------------
  ------------------
  170|  9.85k|        if (ossl_unlikely(!ossl_assert(type->prov != NULL))) {
  ------------------
  |  |   24|  9.85k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.85k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  172|      0|            return 0;
  173|      0|        }
  174|  9.85k|    } else {
  175|  9.85k|        if (!evp_md_ctx_free_algctx(ctx))
  ------------------
  |  Branch (175:13): [True: 0, False: 9.85k]
  ------------------
  176|      0|            return 0;
  177|  9.85k|    }
  178|       |
  179|  19.7k|    if (ossl_unlikely(type->prov == NULL)) {
  ------------------
  |  |   24|  19.7k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 19.7k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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.7k|    if (ossl_unlikely(type->prov != NULL && ctx->fetched_digest != type)) {
  ------------------
  |  |   24|  39.4k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 9.85k, False: 9.85k]
  |  |  |  Branch (24:46): [True: 19.7k, False: 0]
  |  |  |  Branch (24:46): [True: 9.85k, False: 9.85k]
  |  |  ------------------
  ------------------
  202|  9.85k|        if (ossl_unlikely(!EVP_MD_up_ref((EVP_MD *)type))) {
  ------------------
  |  |   24|  9.85k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 9.85k]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  204|      0|            return 0;
  205|      0|        }
  206|  9.85k|        EVP_MD_free(ctx->fetched_digest);
  207|  9.85k|        ctx->fetched_digest = (EVP_MD *)type;
  208|  9.85k|    }
  209|  19.7k|    ctx->digest = type;
  210|  19.7k|    if (ctx->algctx == NULL) {
  ------------------
  |  Branch (210:9): [True: 9.85k, False: 9.85k]
  ------------------
  211|  9.85k|        ctx->algctx = ctx->digest->newctx(ossl_provider_ctx(type->prov));
  212|  9.85k|        if (ctx->algctx == NULL) {
  ------------------
  |  Branch (212:13): [True: 0, False: 9.85k]
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  214|      0|            return 0;
  215|      0|        }
  216|  9.85k|    }
  217|       |
  218|  19.7k|    if (ctx->digest->dinit == NULL) {
  ------------------
  |  Branch (218:9): [True: 0, False: 19.7k]
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  220|      0|        return 0;
  221|      0|    }
  222|       |
  223|  19.7k|    return ctx->digest->dinit(ctx->algctx, params);
  224|  19.7k|}
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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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;
  ------------------
  |  |  230|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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);
  ------------------
  |  |  531|     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);
  ------------------
  |  |  235|     34|# define OSSL_DIGEST_PARAM_SIZE "size"
  ------------------
  815|     34|    params[2] = OSSL_PARAM_construct_int(OSSL_DIGEST_PARAM_XOF, &xof);
  ------------------
  |  |  237|     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;
  ------------------
  |  |  209|      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;
  ------------------
  |  |  221|     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|        return CRYPTO_UP_REF(&md->refcnt, &ref);
  985|      0|    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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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:
  498|   830k|{
  499|   830k|    struct evp_method_data_st methdata;
  500|   830k|    void *method;
  501|       |
  502|   830k|    methdata.libctx = libctx;
  503|   830k|    methdata.tmp_store = NULL;
  504|       |    method = inner_evp_generic_fetch(&methdata, NULL, operation_id,
  505|   830k|        name, properties,
  506|   830k|        new_method, up_ref_method, free_method);
  507|   830k|    dealloc_tmp_evp_method_store(methdata.tmp_store);
  508|   830k|    return method;
  509|   830k|}
evp_method_store_cache_flush:
  538|      4|{
  539|      4|    OSSL_METHOD_STORE *store = get_evp_method_store(libctx);
  540|       |
  541|      4|    if (store != NULL)
  ------------------
  |  Branch (541:9): [True: 4, False: 0]
  ------------------
  542|      4|        return ossl_method_store_cache_flush_all(store);
  543|      0|    return 1;
  544|      4|}
evp_set_default_properties_int:
  613|      1|{
  614|      1|    OSSL_PROPERTY_LIST *pl = NULL;
  615|       |
  616|      1|    if (propq != NULL && (pl = ossl_parse_query(libctx, propq, 1)) == NULL) {
  ------------------
  |  Branch (616:9): [True: 1, False: 0]
  |  Branch (616:26): [True: 0, False: 1]
  ------------------
  617|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  618|      0|        return 0;
  619|      0|    }
  620|      1|    if (!evp_set_parsed_default_properties(libctx, pl, loadconfig, mirrored)) {
  ------------------
  |  Branch (620:9): [True: 0, False: 1]
  ------------------
  621|      0|        ossl_property_free(pl);
  622|      0|        return 0;
  623|      0|    }
  624|      1|    return 1;
  625|      1|}
evp_get_global_properties_str:
  686|      1|{
  687|      1|    OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx, loadconfig);
  688|      1|    char *propstr = NULL;
  689|      1|    size_t sz;
  690|       |
  691|      1|    if (plp == NULL)
  ------------------
  |  Branch (691:9): [True: 0, False: 1]
  ------------------
  692|      0|        return OPENSSL_strdup("");
  ------------------
  |  |  140|      0|    CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  693|       |
  694|      1|    sz = ossl_property_list_to_string(libctx, *plp, NULL, 0);
  695|      1|    if (sz == 0) {
  ------------------
  |  Branch (695:9): [True: 0, False: 1]
  ------------------
  696|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  697|      0|        return NULL;
  698|      0|    }
  699|       |
  700|      1|    propstr = OPENSSL_malloc(sz);
  ------------------
  |  |  111|      1|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  701|      1|    if (propstr == NULL)
  ------------------
  |  Branch (701:9): [True: 0, False: 1]
  ------------------
  702|      0|        return NULL;
  703|      1|    if (ossl_property_list_to_string(libctx, *plp, propstr, sz) == 0) {
  ------------------
  |  Branch (703:9): [True: 0, False: 1]
  ------------------
  704|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  705|      0|        OPENSSL_free(propstr);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  706|      0|        return NULL;
  707|      0|    }
  708|      1|    return propstr;
  709|      1|}
evp_names_do_all:
  775|     34|{
  776|     34|    OSSL_LIB_CTX *libctx = ossl_provider_libctx(prov);
  777|     34|    OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
  778|       |
  779|     34|    return ossl_namemap_doall_names(namemap, number, fn, data);
  780|     34|}
evp_fetch.c:inner_evp_generic_fetch:
  260|   830k|{
  261|   830k|    OSSL_METHOD_STORE *store = get_evp_method_store(methdata->libctx);
  262|   830k|    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|   830k|    const char *const propq = properties != NULL ? properties : "";
  ------------------
  |  Branch (272:31): [True: 0, False: 830k]
  ------------------
  273|   830k|#endif /* FIPS_MODULE */
  274|   830k|    uint32_t meth_id = 0;
  275|   830k|    void *method = NULL;
  276|   830k|    int unsupported, name_id;
  277|   830k|    int set_in_cache = 1;
  278|   830k|    void *tmp_method;
  279|   830k|    const OSSL_PROVIDER *tmp_prov = prov;
  280|       |
  281|   830k|    if (store == NULL || namemap == NULL) {
  ------------------
  |  Branch (281:9): [True: 0, False: 830k]
  |  Branch (281:26): [True: 0, False: 830k]
  ------------------
  282|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  283|      0|        return NULL;
  284|      0|    }
  285|       |
  286|       |    /*
  287|       |     * If there's ever an operation_id == 0 passed, we have an internal
  288|       |     * programming error.
  289|       |     */
  290|   830k|    if (!ossl_assert(operation_id > 0)) {
  ------------------
  |  |   45|   830k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|   830k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (290:9): [True: 0, False: 830k]
  ------------------
  291|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  292|      0|        return NULL;
  293|      0|    }
  294|       |
  295|       |    /* If we haven't received a name id yet, try to get one for the name */
  296|   830k|    name_id = ossl_namemap_name2num(namemap, name);
  297|       |
  298|       |    /*
  299|       |     * If we have a name id, calculate a method id with evp_method_id().
  300|       |     *
  301|       |     * evp_method_id returns 0 if we have too many operations (more than
  302|       |     * about 2^8) or too many names (more than about 2^24).  In that case,
  303|       |     * we can't create any new method.
  304|       |     * For all intents and purposes, this is an internal error.
  305|       |     */
  306|   830k|    if (name_id != 0 && (meth_id = evp_method_id(name_id, operation_id)) == 0) {
  ------------------
  |  Branch (306:9): [True: 829k, False: 435]
  |  Branch (306:25): [True: 0, False: 829k]
  ------------------
  307|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  308|      0|        return NULL;
  309|      0|    }
  310|       |
  311|       |    /*
  312|       |     * If we haven't found the name yet, chances are that the algorithm to
  313|       |     * be fetched is unsupported.
  314|       |     */
  315|   830k|    unsupported = name_id == 0;
  316|       |
  317|   830k|    if (meth_id == 0
  ------------------
  |  Branch (317:9): [True: 435, False: 829k]
  ------------------
  318|   829k|        || !ossl_method_store_cache_get(store, prov, meth_id, propq, &method)) {
  ------------------
  |  Branch (318:12): [True: 32, False: 829k]
  ------------------
  319|    467|        OSSL_METHOD_CONSTRUCT_METHOD mcm = {
  320|    467|            get_tmp_evp_method_store,
  321|    467|            reserve_evp_method_store,
  322|    467|            unreserve_evp_method_store,
  323|    467|            get_evp_method_from_store,
  324|    467|            put_evp_method_in_store,
  325|    467|            construct_evp_method,
  326|    467|            destruct_evp_method
  327|    467|        };
  328|       |
  329|    467|        methdata->operation_id = operation_id;
  330|    467|        methdata->name_id = name_id;
  331|    467|        methdata->names = name;
  332|    467|        methdata->propquery = propq;
  333|    467|        methdata->method_from_algorithm = new_method;
  334|    467|        methdata->refcnt_up_method = up_ref_method;
  335|    467|        methdata->destruct_method = free_method;
  336|    467|        methdata->flag_construct_error_occurred = 0;
  337|    467|        if ((method = ossl_method_construct(methdata->libctx, operation_id,
  ------------------
  |  Branch (337:13): [True: 163, False: 304]
  ------------------
  338|    467|                 &prov, 0 /* !force_cache */,
  339|    467|                 &mcm, methdata))
  340|    467|            != NULL) {
  341|       |            /*
  342|       |             * If construction did create a method for us, we know that
  343|       |             * there is a correct name_id and meth_id, since those have
  344|       |             * already been calculated in get_evp_method_from_store() and
  345|       |             * put_evp_method_in_store() above.
  346|       |             * Note that there is a corner case here, in which, if a user
  347|       |             * passes a name of the form name1:name2:..., then the construction
  348|       |             * will create a method against all names, but the lookup will fail
  349|       |             * as ossl_namemap_name2num treats the name string as a single name
  350|       |             * rather than introducing new features where in the EVP_<obj>_fetch
  351|       |             * parses the string and queries for each, return an error.
  352|       |             */
  353|    163|            if (name_id == 0)
  ------------------
  |  Branch (353:17): [True: 138, False: 25]
  ------------------
  354|    138|                name_id = ossl_namemap_name2num(namemap, name);
  355|    163|            if (name_id == 0) {
  ------------------
  |  Branch (355:17): [True: 138, False: 25]
  ------------------
  356|    138|                ERR_raise_data(ERR_LIB_EVP, ERR_R_FETCH_FAILED,
  ------------------
  |  |  359|    138|    (ERR_new(),                                                  \
  |  |  360|    138|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|    138|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|    138|        ERR_set_error)
  ------------------
                              ERR_raise_data(ERR_LIB_EVP, ERR_R_FETCH_FAILED,
  ------------------
  |  |   59|    138|#define ERR_LIB_EVP 6
  ------------------
                              ERR_raise_data(ERR_LIB_EVP, ERR_R_FETCH_FAILED,
  ------------------
  |  |  318|    138|#define ERR_R_FETCH_FAILED (269 | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |  220|    138|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  211|    138|#define ERR_RFLAGS_OFFSET 18L
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  357|    138|                    "Algorithm %s cannot be found", name != NULL ? name : "<null>");
  ------------------
  |  Branch (357:53): [True: 138, False: 0]
  ------------------
  358|       |#ifdef OPENSSL_NO_CACHED_FETCH
  359|       |                free_method(method);
  360|       |#endif
  361|    138|                method = NULL;
  362|    138|            } else {
  363|     25|                meth_id = evp_method_id(name_id, operation_id);
  364|       |                /*
  365|       |                 * do not insert method to method store cache when provider
  366|       |                 * did ask for not caching it. methods which are not to be
  367|       |                 * cached end up in ->tmp_store when provider asks not
  368|       |                 * to cache the result (see ossl_method_construct_reserve_store())
  369|       |                 */
  370|     25|                if (meth_id != 0) {
  ------------------
  |  Branch (370:21): [True: 25, False: 0]
  ------------------
  371|       |                    /*
  372|       |                     * If the method doesn't exist in the tmp_store, either the tmp_store doesn't exist
  373|       |                     * or the algorithm doesn't exist there, in either case, this is a cacheable entry
  374|       |                     */
  375|     25|                    if (!ossl_method_store_fetch(methdata->tmp_store, meth_id, propq, &tmp_prov, &tmp_method)) {
  ------------------
  |  Branch (375:25): [True: 25, False: 0]
  ------------------
  376|     25|                        set_in_cache = 1;
  377|     25|                    } else {
  378|       |                        /*
  379|       |                         * We found a matching method in the temp store, don't cache this entry
  380|       |                         */
  381|      0|                        if (tmp_method == method) {
  ------------------
  |  Branch (381:29): [True: 0, False: 0]
  ------------------
  382|      0|                            set_in_cache = 0;
  383|      0|                        } else {
  384|      0|                            set_in_cache = 1;
  385|      0|                        }
  386|       |
  387|       |#ifdef OPENSSL_NO_CACHED_FETCH
  388|       |                        /*
  389|       |                         * ossl_method_store_fetch takes a reference on the fetched method
  390|       |                         * when using NO_CACHED_FETCH, so we need to free it here
  391|       |                         */
  392|       |                        free_method(tmp_method);
  393|       |#endif
  394|      0|                    }
  395|     25|                }
  396|       |
  397|     25|                if (set_in_cache == 1) {
  ------------------
  |  Branch (397:21): [True: 25, False: 0]
  ------------------
  398|     25|                    ossl_method_store_cache_set(store, prov, meth_id, propq,
  399|     25|                        method, up_ref_method, free_method);
  400|     25|                } else {
  401|      0|#ifndef OPENSSL_NO_CACHED_FETCH
  402|       |                    /*
  403|       |                     * There is a corner case we need to handle here.  IF:
  404|       |                     * 1) we are fetching an algorithm and plan to return it to the caller
  405|       |                     * 2) The provider we fetched from requested no_cache
  406|       |                     * Then we are in a situation in which this method that was constructed
  407|       |                     * only lives in the tmp_store, and has a reference count of 1.
  408|       |                     * On return from this function, that tmp_store is going to be deallocated,
  409|       |                     * Which will drop the methods ref count to 0 and free it, after which the
  410|       |                     * method will be returned to the called, as an already freed object.
  411|       |                     *
  412|       |                     * That's bad.  We need to grab an extra ref count on the method before returning
  413|       |                     * so that the requestor via EVP_*_fetch has ownership.
  414|       |                     *
  415|       |                     * BUT we only want to do this in the event that the algorithm is uncached.
  416|       |                     * Unfortunately, we don't know that here, because it was the provider that
  417|       |                     * made that request.  However, each algorithm type does store that information
  418|       |                     * so we have a path forward.  Based on the operation id, call the appropriate
  419|       |                     * up_ref method.  That implementation knows how to query its algorithm type and
  420|       |                     * decide if a reference needs to be taken here
  421|       |                     */
  422|      0|                    switch (operation_id) {
  423|      0|                    case OSSL_OP_DIGEST:
  ------------------
  |  |  283|      0|#define OSSL_OP_DIGEST 1
  ------------------
  |  Branch (423:21): [True: 0, False: 0]
  ------------------
  424|      0|                        EVP_MD_up_ref((EVP_MD *)method);
  425|      0|                        break;
  426|      0|                    case OSSL_OP_CIPHER:
  ------------------
  |  |  284|      0|#define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
  ------------------
  |  Branch (426:21): [True: 0, False: 0]
  ------------------
  427|      0|                        EVP_CIPHER_up_ref((EVP_CIPHER *)method);
  428|      0|                        break;
  429|      0|                    case OSSL_OP_MAC:
  ------------------
  |  |  285|      0|#define OSSL_OP_MAC 3
  ------------------
  |  Branch (429:21): [True: 0, False: 0]
  ------------------
  430|      0|                        EVP_MAC_up_ref((EVP_MAC *)method);
  431|      0|                        break;
  432|      0|                    case OSSL_OP_KDF:
  ------------------
  |  |  286|      0|#define OSSL_OP_KDF 4
  ------------------
  |  Branch (432:21): [True: 0, False: 0]
  ------------------
  433|      0|                        EVP_KDF_up_ref((EVP_KDF *)method);
  434|      0|                        break;
  435|      0|                    case OSSL_OP_RAND:
  ------------------
  |  |  287|      0|#define OSSL_OP_RAND 5
  ------------------
  |  Branch (435:21): [True: 0, False: 0]
  ------------------
  436|      0|                        EVP_RAND_up_ref((EVP_RAND *)method);
  437|      0|                        break;
  438|      0|                    case OSSL_OP_KEYMGMT:
  ------------------
  |  |  288|      0|#define OSSL_OP_KEYMGMT 10
  ------------------
  |  Branch (438:21): [True: 0, False: 0]
  ------------------
  439|      0|                        EVP_KEYMGMT_up_ref((EVP_KEYMGMT *)method);
  440|      0|                        break;
  441|      0|                    case OSSL_OP_KEYEXCH:
  ------------------
  |  |  289|      0|#define OSSL_OP_KEYEXCH 11
  ------------------
  |  Branch (441:21): [True: 0, False: 0]
  ------------------
  442|      0|                        EVP_KEYEXCH_up_ref((EVP_KEYEXCH *)method);
  443|      0|                        break;
  444|      0|                    case OSSL_OP_SIGNATURE:
  ------------------
  |  |  290|      0|#define OSSL_OP_SIGNATURE 12
  ------------------
  |  Branch (444:21): [True: 0, False: 0]
  ------------------
  445|      0|                        EVP_SIGNATURE_up_ref((EVP_SIGNATURE *)method);
  446|      0|                        break;
  447|      0|                    case OSSL_OP_ASYM_CIPHER:
  ------------------
  |  |  291|      0|#define OSSL_OP_ASYM_CIPHER 13
  ------------------
  |  Branch (447:21): [True: 0, False: 0]
  ------------------
  448|      0|                        EVP_ASYM_CIPHER_up_ref((EVP_ASYM_CIPHER *)method);
  449|      0|                        break;
  450|      0|                    case OSSL_OP_KEM:
  ------------------
  |  |  292|      0|#define OSSL_OP_KEM 14
  ------------------
  |  Branch (450:21): [True: 0, False: 0]
  ------------------
  451|      0|                        EVP_KEM_up_ref((EVP_KEM *)method);
  452|      0|                        break;
  453|      0|                    case OSSL_OP_SKEYMGMT:
  ------------------
  |  |  293|      0|#define OSSL_OP_SKEYMGMT 15
  ------------------
  |  Branch (453:21): [True: 0, False: 0]
  ------------------
  454|      0|                        EVP_SKEYMGMT_up_ref((EVP_SKEYMGMT *)method);
  455|      0|                        break;
  456|      0|                    default:
  ------------------
  |  Branch (456:21): [True: 0, False: 0]
  ------------------
  457|      0|                        break;
  458|      0|                    }
  459|      0|#endif
  460|      0|                }
  461|     25|            }
  462|    163|        }
  463|       |
  464|       |        /*
  465|       |         * If we never were in the constructor, the algorithm to be fetched
  466|       |         * is unsupported.
  467|       |         */
  468|    467|        unsupported = !methdata->flag_construct_error_occurred;
  469|    467|    }
  470|       |
  471|   830k|    if ((name_id != 0 || name != NULL) && method == NULL) {
  ------------------
  |  Branch (471:10): [True: 829k, False: 435]
  |  Branch (471:26): [True: 435, False: 0]
  |  Branch (471:43): [True: 442, False: 829k]
  ------------------
  472|    442|        int code = unsupported ? ERR_R_UNSUPPORTED : ERR_R_FETCH_FAILED;
  ------------------
  |  |  317|    442|#define ERR_R_UNSUPPORTED (268 | ERR_RFLAG_COMMON)
  |  |  ------------------
  |  |  |  |  220|    442|#define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET)
  |  |  |  |  ------------------
  |  |  |  |  |  |  211|    442|#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 (472:20): [True: 442, False: 0]
  ------------------
  473|       |
  474|    442|        if (name == NULL)
  ------------------
  |  Branch (474:13): [True: 0, False: 442]
  ------------------
  475|      0|            name = ossl_namemap_num2name(namemap, name_id, 0);
  476|    442|        ERR_raise_data(ERR_LIB_EVP, code,
  ------------------
  |  |  359|    442|    (ERR_new(),                                                  \
  |  |  360|    442|        ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|    442|#define OPENSSL_FUNC __func__
  |  |  ------------------
  |  |  361|    442|        ERR_set_error)
  ------------------
                      ERR_raise_data(ERR_LIB_EVP, code,
  ------------------
  |  |   59|    442|#define ERR_LIB_EVP 6
  ------------------
  477|    442|            "%s, Algorithm (%s : %d), Properties (%s)",
  478|    442|            ossl_lib_ctx_get_descriptor(methdata->libctx),
  479|    442|            name == NULL ? "<null>" : name, name_id,
  ------------------
  |  Branch (479:13): [True: 0, False: 442]
  ------------------
  480|    442|            properties == NULL ? "<null>" : properties);
  ------------------
  |  Branch (480:13): [True: 442, False: 0]
  ------------------
  481|   829k|    } else {
  482|   829k|        OSSL_TRACE4(QUERY, "%s, Algorithm (%s : %d), Properties (%s)\n",
  ------------------
  |  |  297|   829k|    OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4))
  |  |  ------------------
  |  |  |  |  283|   829k|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
  483|   829k|            ossl_lib_ctx_get_descriptor(methdata->libctx),
  484|   829k|            name == NULL ? "<null>" : name, name_id,
  485|   829k|            properties == NULL ? "<null>" : properties);
  486|   829k|    }
  487|       |
  488|   830k|    return method;
  489|   830k|}
evp_fetch.c:evp_method_id:
  118|   829k|{
  119|   829k|    if (!ossl_assert(name_id > 0 && name_id <= METHOD_ID_NAME_MAX)
  ------------------
  |  |   45|   829k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|  1.65M|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (23:44): [True: 829k, False: 0]
  |  |  |  |  |  Branch (23:44): [True: 829k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (119:9): [True: 0, False: 829k]
  ------------------
  120|   829k|        || !ossl_assert(operation_id > 0
  ------------------
  |  |   45|   829k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|  1.65M|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (23:44): [True: 829k, False: 0]
  |  |  |  |  |  Branch (23:44): [True: 829k, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (120:12): [True: 0, False: 829k]
  ------------------
  121|   829k|            && operation_id <= METHOD_ID_OPERATION_MAX))
  122|      0|        return 0;
  123|   829k|    return (((name_id << METHOD_ID_NAME_OFFSET) & METHOD_ID_NAME_MASK)
  ------------------
  |  |  115|   829k|#define METHOD_ID_NAME_OFFSET 8
  ------------------
                  return (((name_id << METHOD_ID_NAME_OFFSET) & METHOD_ID_NAME_MASK)
  ------------------
  |  |  114|   829k|#define METHOD_ID_NAME_MASK 0x7FFFFF00
  ------------------
  124|   829k|        | (operation_id & METHOD_ID_OPERATION_MASK));
  ------------------
  |  |  112|   829k|#define METHOD_ID_OPERATION_MASK 0x000000FF
  ------------------
  125|   829k|}
evp_fetch.c:reserve_evp_method_store:
   74|    934|{
   75|    934|    struct evp_method_data_st *methdata = data;
   76|       |
   77|    934|    if (store == NULL
  ------------------
  |  Branch (77:9): [True: 934, False: 0]
  ------------------
   78|    934|        && (store = get_evp_method_store(methdata->libctx)) == NULL)
  ------------------
  |  Branch (78:12): [True: 0, False: 934]
  ------------------
   79|      0|        return 0;
   80|       |
   81|    934|    return ossl_method_lock_store(store);
   82|    934|}
evp_fetch.c:unreserve_evp_method_store:
   85|    934|{
   86|    934|    struct evp_method_data_st *methdata = data;
   87|       |
   88|    934|    if (store == NULL
  ------------------
  |  Branch (88:9): [True: 934, False: 0]
  ------------------
   89|    934|        && (store = get_evp_method_store(methdata->libctx)) == NULL)
  ------------------
  |  Branch (89:12): [True: 0, False: 934]
  ------------------
   90|      0|        return 0;
   91|       |
   92|    934|    return ossl_method_unlock_store(store);
   93|    934|}
evp_fetch.c:get_evp_method_from_store:
  129|    467|{
  130|    467|    struct evp_method_data_st *methdata = data;
  131|    467|    void *method = NULL;
  132|    467|    int name_id;
  133|    467|    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|    467|    if ((name_id = methdata->name_id) == 0 && methdata->names != NULL) {
  ------------------
  |  Branch (140:9): [True: 435, False: 32]
  |  Branch (140:47): [True: 435, False: 0]
  ------------------
  141|    435|        OSSL_NAMEMAP *namemap = ossl_namemap_stored(methdata->libctx);
  142|    435|        const char *names = methdata->names;
  143|    435|        const char *q = strchr(names, NAME_SEPARATOR);
  ------------------
  |  |   25|    435|#define NAME_SEPARATOR ':'
  ------------------
  144|    435|        size_t l = (q == NULL ? strlen(names) : (size_t)(q - names));
  ------------------
  |  Branch (144:21): [True: 278, False: 157]
  ------------------
  145|       |
  146|    435|        if (namemap == 0)
  ------------------
  |  Branch (146:13): [True: 0, False: 435]
  ------------------
  147|      0|            return NULL;
  148|    435|        name_id = ossl_namemap_name2num_n(namemap, names, l);
  149|    435|    }
  150|       |
  151|    467|    if (name_id == 0
  ------------------
  |  Branch (151:9): [True: 296, False: 171]
  ------------------
  152|    171|        || (meth_id = evp_method_id(name_id, methdata->operation_id)) == 0)
  ------------------
  |  Branch (152:12): [True: 0, False: 171]
  ------------------
  153|    296|        return NULL;
  154|       |
  155|    171|    if (store == NULL
  ------------------
  |  Branch (155:9): [True: 171, False: 0]
  ------------------
  156|    171|        && (store = get_evp_method_store(methdata->libctx)) == NULL)
  ------------------
  |  Branch (156:12): [True: 0, False: 171]
  ------------------
  157|      0|        return NULL;
  158|       |
  159|    171|    if (!ossl_method_store_fetch(store, meth_id, methdata->propquery, prov,
  ------------------
  |  Branch (159:9): [True: 8, False: 163]
  ------------------
  160|    171|            &method))
  161|      8|        return NULL;
  162|    163|    return method;
  163|    171|}
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|   830k|{
   63|   830k|    OSSL_TRACE1(QUERY, "Deallocating the tmp_store %p\n", store);
  ------------------
  |  |  291|   830k|    OSSL_TRACEV(category, (trc_out, format, arg1))
  |  |  ------------------
  |  |  |  |  283|   830k|#define OSSL_TRACEV(category, args) ((void)0)
  |  |  ------------------
  ------------------
   64|   830k|    if (store != NULL)
  ------------------
  |  Branch (64:9): [True: 0, False: 830k]
  ------------------
   65|      0|        ossl_method_store_free(store);
   66|   830k|}
evp_fetch.c:get_evp_method_store:
   69|   832k|{
   70|   832k|    return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX);
  ------------------
  |  |   96|   832k|#define OSSL_LIB_CTX_EVP_METHOD_STORE_INDEX 0
  ------------------
   71|   832k|}
evp_fetch.c:evp_set_parsed_default_properties:
  560|      1|{
  561|      1|    OSSL_METHOD_STORE *store = get_evp_method_store(libctx);
  562|      1|    OSSL_PROPERTY_LIST **plp = ossl_ctx_global_properties(libctx, loadconfig);
  563|       |
  564|      1|    if (plp != NULL && store != NULL) {
  ------------------
  |  Branch (564:9): [True: 1, False: 0]
  |  Branch (564:24): [True: 1, False: 0]
  ------------------
  565|      1|        int ret;
  566|      1|#ifndef FIPS_MODULE
  567|      1|        char *propstr = NULL;
  568|      1|        size_t strsz;
  569|       |
  570|      1|        if (mirrored) {
  ------------------
  |  Branch (570:13): [True: 1, False: 0]
  ------------------
  571|      1|            if (ossl_global_properties_no_mirrored(libctx))
  ------------------
  |  Branch (571:17): [True: 0, False: 1]
  ------------------
  572|      0|                return 0;
  573|      1|        } else {
  574|       |            /*
  575|       |             * These properties have been explicitly set on this libctx, so
  576|       |             * don't allow any mirroring from a parent libctx.
  577|       |             */
  578|      0|            ossl_global_properties_stop_mirroring(libctx);
  579|      0|        }
  580|       |
  581|      1|        strsz = ossl_property_list_to_string(libctx, def_prop, NULL, 0);
  582|      1|        if (strsz > 0)
  ------------------
  |  Branch (582:13): [True: 1, False: 0]
  ------------------
  583|      1|            propstr = OPENSSL_malloc(strsz);
  ------------------
  |  |  111|      1|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  584|      1|        if (propstr == NULL) {
  ------------------
  |  Branch (584:13): [True: 0, False: 1]
  ------------------
  585|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  586|      0|            return 0;
  587|      0|        }
  588|      1|        if (ossl_property_list_to_string(libctx, def_prop, propstr,
  ------------------
  |  Branch (588:13): [True: 0, False: 1]
  ------------------
  589|      1|                strsz)
  590|      1|            == 0) {
  591|      0|            OPENSSL_free(propstr);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  592|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  593|      0|            return 0;
  594|      0|        }
  595|      1|        ossl_provider_default_props_update(libctx, propstr);
  596|      1|        OPENSSL_free(propstr);
  ------------------
  |  |  136|      1|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  597|      1|#endif
  598|      1|        ossl_property_free(*plp);
  599|      1|        *plp = def_prop;
  600|       |
  601|      1|        ret = ossl_method_store_cache_flush_all(store);
  602|      1|#ifndef FIPS_MODULE
  603|      1|        ossl_decoder_cache_flush(libctx);
  604|      1|#endif
  605|      1|        return ret;
  606|      1|    }
  607|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  608|      0|    return 0;
  609|      1|}

EVP_CIPHER_get_type:
  243|    174|{
  244|    174|    int nid;
  245|    174|    nid = EVP_CIPHER_get_nid(cipher);
  246|       |
  247|    174|    switch (nid) {
  248|       |
  249|      3|    case NID_rc2_cbc:
  ------------------
  |  | 1308|      3|#define NID_rc2_cbc             37
  ------------------
  |  Branch (249:5): [True: 3, False: 171]
  ------------------
  250|      5|    case NID_rc2_64_cbc:
  ------------------
  |  | 1329|      5|#define NID_rc2_64_cbc          166
  ------------------
  |  Branch (250:5): [True: 2, False: 172]
  ------------------
  251|      7|    case NID_rc2_40_cbc:
  ------------------
  |  | 1325|      7|#define NID_rc2_40_cbc          98
  ------------------
  |  Branch (251:5): [True: 2, False: 172]
  ------------------
  252|       |
  253|      7|        return NID_rc2_cbc;
  ------------------
  |  | 1308|      7|#define NID_rc2_cbc             37
  ------------------
  254|       |
  255|      1|    case NID_rc4:
  ------------------
  |  | 1333|      1|#define NID_rc4         5
  ------------------
  |  Branch (255:5): [True: 1, False: 173]
  ------------------
  256|      2|    case NID_rc4_40:
  ------------------
  |  | 1338|      2|#define NID_rc4_40              97
  ------------------
  |  Branch (256:5): [True: 1, False: 173]
  ------------------
  257|       |
  258|      2|        return NID_rc4;
  ------------------
  |  | 1333|      2|#define NID_rc4         5
  ------------------
  259|       |
  260|      1|    case NID_aes_128_cfb128:
  ------------------
  |  | 3129|      1|#define NID_aes_128_cfb128              421
  ------------------
  |  Branch (260:5): [True: 1, False: 173]
  ------------------
  261|      2|    case NID_aes_128_cfb8:
  ------------------
  |  | 3250|      2|#define NID_aes_128_cfb8                653
  ------------------
  |  Branch (261:5): [True: 1, False: 173]
  ------------------
  262|      3|    case NID_aes_128_cfb1:
  ------------------
  |  | 3238|      3|#define NID_aes_128_cfb1                650
  ------------------
  |  Branch (262:5): [True: 1, False: 173]
  ------------------
  263|       |
  264|      3|        return NID_aes_128_cfb128;
  ------------------
  |  | 3129|      3|#define NID_aes_128_cfb128              421
  ------------------
  265|       |
  266|      1|    case NID_aes_192_cfb128:
  ------------------
  |  | 3167|      1|#define NID_aes_192_cfb128              425
  ------------------
  |  Branch (266:5): [True: 1, False: 173]
  ------------------
  267|      2|    case NID_aes_192_cfb8:
  ------------------
  |  | 3254|      2|#define NID_aes_192_cfb8                654
  ------------------
  |  Branch (267:5): [True: 1, False: 173]
  ------------------
  268|      3|    case NID_aes_192_cfb1:
  ------------------
  |  | 3242|      3|#define NID_aes_192_cfb1                651
  ------------------
  |  Branch (268:5): [True: 1, False: 173]
  ------------------
  269|       |
  270|      3|        return NID_aes_192_cfb128;
  ------------------
  |  | 3167|      3|#define NID_aes_192_cfb128              425
  ------------------
  271|       |
  272|      1|    case NID_aes_256_cfb128:
  ------------------
  |  | 3205|      1|#define NID_aes_256_cfb128              429
  ------------------
  |  Branch (272:5): [True: 1, False: 173]
  ------------------
  273|      2|    case NID_aes_256_cfb8:
  ------------------
  |  | 3258|      2|#define NID_aes_256_cfb8                655
  ------------------
  |  Branch (273:5): [True: 1, False: 173]
  ------------------
  274|      3|    case NID_aes_256_cfb1:
  ------------------
  |  | 3246|      3|#define NID_aes_256_cfb1                652
  ------------------
  |  Branch (274:5): [True: 1, False: 173]
  ------------------
  275|       |
  276|      3|        return NID_aes_256_cfb128;
  ------------------
  |  | 3205|      3|#define NID_aes_256_cfb128              429
  ------------------
  277|       |
  278|      1|    case NID_des_cfb64:
  ------------------
  |  | 2295|      1|#define NID_des_cfb64           30
  ------------------
  |  Branch (278:5): [True: 1, False: 173]
  ------------------
  279|      2|    case NID_des_cfb8:
  ------------------
  |  | 3290|      2|#define NID_des_cfb8            657
  ------------------
  |  Branch (279:5): [True: 1, False: 173]
  ------------------
  280|      3|    case NID_des_cfb1:
  ------------------
  |  | 3286|      3|#define NID_des_cfb1            656
  ------------------
  |  Branch (280:5): [True: 1, False: 173]
  ------------------
  281|       |
  282|      3|        return NID_des_cfb64;
  ------------------
  |  | 2295|      3|#define NID_des_cfb64           30
  ------------------
  283|       |
  284|      1|    case NID_des_ede3_cfb64:
  ------------------
  |  | 2336|      1|#define NID_des_ede3_cfb64              61
  ------------------
  |  Branch (284:5): [True: 1, False: 173]
  ------------------
  285|      2|    case NID_des_ede3_cfb8:
  ------------------
  |  | 3298|      2|#define NID_des_ede3_cfb8               659
  ------------------
  |  Branch (285:5): [True: 1, False: 173]
  ------------------
  286|      3|    case NID_des_ede3_cfb1:
  ------------------
  |  | 3294|      3|#define NID_des_ede3_cfb1               658
  ------------------
  |  Branch (286:5): [True: 1, False: 173]
  ------------------
  287|       |
  288|      3|        return NID_des_ede3_cfb64;
  ------------------
  |  | 2336|      3|#define NID_des_ede3_cfb64              61
  ------------------
  289|       |
  290|    150|    default:
  ------------------
  |  Branch (290:5): [True: 150, False: 24]
  ------------------
  291|       |#ifdef FIPS_MODULE
  292|       |        return NID_undef;
  293|       |#else
  294|    150|    {
  295|       |        /* Check it has an OID and it is valid */
  296|    150|        ASN1_OBJECT *otmp = OBJ_nid2obj(nid);
  297|       |
  298|    150|        if (OBJ_get0_data(otmp) == NULL)
  ------------------
  |  Branch (298:13): [True: 41, False: 109]
  ------------------
  299|     41|            nid = NID_undef;
  ------------------
  |  |   19|     41|#define NID_undef                       0
  ------------------
  300|    150|        ASN1_OBJECT_free(otmp);
  301|    150|        return nid;
  302|      2|    }
  303|    174|#endif
  304|    174|    }
  305|    174|}
EVP_CIPHER_get_nid:
  659|    174|{
  660|    174|    return (cipher == NULL) ? NID_undef : cipher->nid;
  ------------------
  |  |   19|      0|#define NID_undef                       0
  ------------------
  |  Branch (660:12): [True: 0, False: 174]
  ------------------
  661|    174|}
EVP_MD_get0_provider:
  773|    151|{
  774|    151|    return md->prov;
  775|    151|}
EVP_MD_get_type:
  778|     88|{
  779|     88|    return md->type;
  780|     88|}
EVP_MD_get_size:
  797|   839k|{
  798|   839k|    if (md == NULL) {
  ------------------
  |  Branch (798:9): [True: 0, False: 839k]
  ------------------
  799|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  800|      0|        return -1;
  801|      0|    }
  802|   839k|    return md->md_size;
  803|   839k|}
EVP_MD_CTX_get0_md:
  825|  9.71k|{
  826|  9.71k|    if (ctx == NULL)
  ------------------
  |  Branch (826:9): [True: 0, False: 9.71k]
  ------------------
  827|      0|        return NULL;
  828|  9.71k|    return ctx->reqdigest;
  829|  9.71k|}
EVP_MD_CTX_get_size_ex:
  844|  9.86k|{
  845|  9.86k|    EVP_MD_CTX *c = (EVP_MD_CTX *)ctx;
  846|  9.86k|    const OSSL_PARAM *gettables;
  847|       |
  848|  9.86k|    gettables = EVP_MD_CTX_gettable_params(c);
  849|  9.86k|    if (gettables != NULL
  ------------------
  |  Branch (849:9): [True: 151, False: 9.71k]
  ------------------
  850|    151|        && OSSL_PARAM_locate_const(gettables,
  ------------------
  |  Branch (850:12): [True: 151, False: 0]
  ------------------
  851|    151|               OSSL_DIGEST_PARAM_SIZE)
  ------------------
  |  |  235|    151|# define OSSL_DIGEST_PARAM_SIZE "size"
  ------------------
  852|    151|            != NULL) {
  853|    151|        OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
  ------------------
  |  |   25|    151|    { NULL, 0, NULL, 0, 0 }
  ------------------
                      OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
  ------------------
  |  |   25|    151|    { NULL, 0, NULL, 0, 0 }
  ------------------
  854|    151|        size_t sz = 0;
  855|       |
  856|       |        /*
  857|       |         * For XOF's EVP_MD_get_size() returns 0
  858|       |         * So try to get the xoflen instead. This will return -1 if the
  859|       |         * xof length has not been set.
  860|       |         */
  861|    151|        params[0] = OSSL_PARAM_construct_size_t(OSSL_DIGEST_PARAM_SIZE, &sz);
  ------------------
  |  |  235|    151|# define OSSL_DIGEST_PARAM_SIZE "size"
  ------------------
  862|    151|        if (EVP_MD_CTX_get_params(c, params) != 1
  ------------------
  |  Branch (862:13): [True: 0, False: 151]
  ------------------
  863|    151|            || sz > INT_MAX
  ------------------
  |  Branch (863:16): [True: 0, False: 151]
  ------------------
  864|    151|            || sz == 0)
  ------------------
  |  Branch (864:16): [True: 0, False: 151]
  ------------------
  865|      0|            return -1;
  866|    151|        return (int)sz;
  867|    151|    }
  868|       |    /* Normal digests have a constant fixed size output */
  869|  9.71k|    return EVP_MD_get_size(EVP_MD_CTX_get0_md(ctx));
  870|  9.86k|}
EVP_MD_CTX_set_flags:
  906|  9.85k|{
  907|  9.85k|    ctx->flags |= flags;
  908|  9.85k|}
EVP_MD_CTX_clear_flags:
  911|  19.7k|{
  912|  19.7k|    ctx->flags &= ~flags;
  913|  19.7k|}
EVP_MD_CTX_test_flags:
  916|  9.85k|{
  917|  9.85k|    return (ctx->flags & flags);
  918|  9.85k|}

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,                     \
  ------------------
  |  | 3334|      1|#define NID_sha3_224            1096
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3456|      1|#define NID_RSA_SHA3_224                1116
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  221|      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,                     \
  ------------------
  |  | 3339|      1|#define NID_sha3_256            1097
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3461|      1|#define NID_RSA_SHA3_256                1117
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  221|      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,                     \
  ------------------
  |  | 3344|      1|#define NID_sha3_384            1098
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3466|      1|#define NID_RSA_SHA3_384                1118
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  221|      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,                     \
  ------------------
  |  | 3349|      1|#define NID_sha3_512            1099
  ------------------
  123|      1|            NID_RSA_SHA3_##bitlen,                 \
  ------------------
  |  | 3471|      1|#define NID_RSA_SHA3_512                1119
  ------------------
  124|      1|            bitlen / 8,                            \
  125|      1|            EVP_MD_FLAG_DIGALGID_ABSENT,           \
  ------------------
  |  |  221|      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,                             \
  ------------------
  |  | 3354|      1|#define NID_shake128            1100
  ------------------
  136|      1|            0,                                             \
  137|      1|            bitlen / 8,                                    \
  138|      1|            EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  209|      1|#define EVP_MD_FLAG_XOF 0x0002
  ------------------
                          EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  221|      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,                             \
  ------------------
  |  | 3359|      1|#define NID_shake256            1101
  ------------------
  136|      1|            0,                                             \
  137|      1|            bitlen / 8,                                    \
  138|      1|            EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  209|      1|#define EVP_MD_FLAG_XOF 0x0002
  ------------------
                          EVP_MD_FLAG_XOF | EVP_MD_FLAG_DIGALGID_ABSENT, \
  ------------------
  |  |  221|      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.85k|{
  238|  9.85k|    if (ctx == NULL)
  ------------------
  |  Branch (238:9): [True: 9.85k, False: 0]
  ------------------
  239|  9.85k|        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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|   831k|{
   15|   831k|    uint64_t hash = 0xcbf29ce484222325ULL;
   16|   831k|    size_t i;
   17|       |
   18|  5.86M|    for (i = 0; i < len; i++) {
  ------------------
  |  Branch (18:17): [True: 5.03M, False: 831k]
  ------------------
   19|  5.03M|        hash ^= key[i];
   20|  5.03M|        hash *= 0x00000100000001B3ULL;
   21|  5.03M|    }
   22|   831k|    return hash;
   23|   831k|}

ossl_ht_new:
  185|      3|{
  186|      3|    HT *new = OPENSSL_zalloc(sizeof(*new));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  245|      0|    OPENSSL_free(new->md);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  246|      0|    OPENSSL_free(new);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|   831k|{
  761|   831k|    struct ht_mutable_data_st *md;
  762|   831k|    uint64_t hash;
  763|   831k|    uint64_t neigh_idx_start;
  764|   831k|    uint64_t neigh_idx;
  765|   831k|    struct ht_internal_value_st *ival = NULL;
  766|   831k|    size_t j;
  767|   831k|    uint64_t ehash;
  768|   831k|    int lockless_reads = h->config.lockless_reads;
  769|       |
  770|   831k|    if (key->cached_hash)
  ------------------
  |  Branch (770:9): [True: 0, False: 831k]
  ------------------
  771|      0|        hash = key->cached_hash;
  772|   831k|    else
  773|   831k|        hash = key->cached_hash = h->config.ht_hash_fn(key);
  774|       |
  775|   831k|    if (!h->config.no_rcu)
  ------------------
  |  Branch (775:9): [True: 831k, False: 0]
  ------------------
  776|   831k|        md = ossl_rcu_deref(&h->md);
  ------------------
  |  |   35|   831k|#define ossl_rcu_deref(p) ossl_rcu_uptr_deref((void **)p)
  ------------------
  777|      0|    else
  778|      0|        md = h->md;
  779|   831k|    neigh_idx = neigh_idx_start = hash & md->neighborhood_mask;
  780|   831k|    do {
  781|   831k|        PREFETCH_NEIGHBORHOOD(md->neighborhoods[neigh_idx]);
  ------------------
  |  |   82|   831k|#define PREFETCH_NEIGHBORHOOD(x) __builtin_prefetch(x.entries)
  ------------------
  782|  1.92M|        for (j = 0; j < NEIGHBORHOOD_LEN; j++) {
  ------------------
  |  |  104|  1.92M|#define NEIGHBORHOOD_LEN (CACHE_LINE_BYTES / sizeof(struct ht_neighborhood_entry_st))
  |  |  ------------------
  |  |  |  |  101|  1.92M|#define CACHE_LINE_BYTES 64
  |  |  ------------------
  ------------------
  |  Branch (782:21): [True: 1.92M, False: 0]
  ------------------
  783|  1.92M|            if (!h->config.no_rcu)
  ------------------
  |  Branch (783:17): [True: 1.92M, False: 0]
  ------------------
  784|  1.92M|                ival = ossl_rcu_deref(&md->neighborhoods[neigh_idx].entries[j].value);
  ------------------
  |  |   35|  1.92M|#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.92M|            if (ival == NULL) {
  ------------------
  |  Branch (787:17): [True: 1.20k, False: 1.92M]
  ------------------
  788|  1.20k|                if (lockless_reads)
  ------------------
  |  Branch (788:21): [True: 1.20k, False: 0]
  ------------------
  789|       |                    /* lockless_reads implies no deletion, we can break out */
  790|  1.20k|                    return NULL;
  791|      0|                continue;
  792|  1.20k|            }
  793|  1.92M|            if (!h->config.no_rcu) {
  ------------------
  |  Branch (793:17): [True: 1.92M, False: 0]
  ------------------
  794|  1.92M|                if (!CRYPTO_atomic_load(&md->neighborhoods[neigh_idx].entries[j].hash,
  ------------------
  |  Branch (794:21): [True: 0, False: 1.92M]
  ------------------
  795|  1.92M|                        &ehash, h->atomic_lock))
  796|      0|                    return NULL;
  797|  1.92M|            } else {
  798|      0|                ehash = md->neighborhoods[neigh_idx].entries[j].hash;
  799|      0|            }
  800|  1.92M|            if (compare_hash(hash, ehash) && match_key(&ival->value.key, key))
  ------------------
  |  Branch (800:17): [True: 830k, False: 1.09M]
  |  Branch (800:46): [True: 830k, False: 0]
  ------------------
  801|   830k|                return (HT_VALUE *)ival;
  802|  1.92M|        }
  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|   831k|}
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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc_array(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|   831k|{
  181|   831k|    return ossl_fnv1a_hash(key->keybuf, key->keysize);
  182|   831k|}
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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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.92M|{
  460|  1.92M|    return (hash1 == hash2);
  461|  1.92M|}
hashtable.c:match_key:
  586|   830k|{
  587|       |    /*
  588|       |     * keys match if they are both present, the same size
  589|       |     * and compare equal in memory
  590|       |     */
  591|   830k|    PREFETCH(a->keybuf);
  ------------------
  |  |   83|   830k|#define PREFETCH(x) __builtin_prefetch(x)
  ------------------
  592|   830k|    PREFETCH(b->keybuf);
  ------------------
  |  |   83|   830k|#define PREFETCH(x) __builtin_prefetch(x)
  ------------------
  593|   830k|    if (a->keybuf != NULL && b->keybuf != NULL && a->keysize == b->keysize)
  ------------------
  |  Branch (593:9): [True: 830k, False: 0]
  |  Branch (593:30): [True: 830k, False: 0]
  |  Branch (593:51): [True: 830k, False: 0]
  ------------------
  594|   830k|        return !memcmp(a->keybuf, b->keybuf, a->keysize);
  595|       |
  596|      0|    return 1;
  597|   830k|}

ossl_err_load_HTTP_strings:
   80|      1|{
   81|      1|#ifndef OPENSSL_NO_ERR
   82|      1|    if (ERR_reason_error_string(HTTP_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (82:9): [True: 1, False: 0]
  ------------------
   83|      1|        ERR_load_strings_const(HTTP_str_reasons);
   84|      1|#endif
   85|      1|    return 1;
   86|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   25|      3|    return cb;
   26|      3|}

OPENSSL_init_crypto:
  349|  1.74k|{
  350|  1.74k|    uint64_t tmp;
  351|  1.74k|    uint64_t optsdone_bits = opts;
  352|  1.74k|    int aloaddone = 0;
  353|       |
  354|       |    /* Applications depend on 0 being returned when cleanup was already done */
  355|  1.74k|    if (ossl_unlikely(stopped)) {
  ------------------
  |  |   24|  1.74k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 1.74k]
  |  |  ------------------
  ------------------
  356|      0|        if (!(opts & OPENSSL_INIT_BASE_ONLY))
  ------------------
  |  |   31|      0|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (356:13): [True: 0, False: 0]
  ------------------
  357|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  358|      0|        return 0;
  359|      0|    }
  360|       |
  361|       |    /*
  362|       |     * We ignore failures from this function. It is probably because we are
  363|       |     * on a platform that doesn't support lockless atomic loads (we may not
  364|       |     * have created optsdone_lock yet so we can't use it). This is just an
  365|       |     * optimisation to skip the full checks in this function if we don't need
  366|       |     * to, so we carry on regardless in the event of failure.
  367|       |     *
  368|       |     * There could be a race here with other threads, so that optsdone has not
  369|       |     * been updated yet, even though the options have in fact been initialised.
  370|       |     * This doesn't matter - it just means we will run the full function
  371|       |     * unnecessarily - but all the critical code is contained in RUN_ONCE
  372|       |     * functions anyway so we are safe.
  373|       |     */
  374|  1.74k|    if (ossl_likely(CRYPTO_atomic_load(&optsdone, &tmp, NULL))) {
  ------------------
  |  |   23|  1.74k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 1.74k, False: 0]
  |  |  ------------------
  ------------------
  375|  1.74k|        if ((tmp & opts) == opts)
  ------------------
  |  Branch (375:13): [True: 0, False: 1.74k]
  ------------------
  376|      0|            return 1;
  377|  1.74k|        aloaddone = 1;
  378|  1.74k|    }
  379|       |
  380|       |    /*
  381|       |     * At some point we should look at this function with a view to moving
  382|       |     * most/all of this into OSSL_LIB_CTX.
  383|       |     *
  384|       |     * When the caller specifies OPENSSL_INIT_BASE_ONLY, that should be the
  385|       |     * *only* option specified.  With that option we return immediately after
  386|       |     * doing the requested limited initialization.
  387|       |     *
  388|       |     * If we remain the only caller of err_shelve_state() the recursion should
  389|       |     * perhaps be removed, but if in doubt, it can be left in place.
  390|       |     */
  391|  1.74k|    if (ossl_unlikely(!RUN_ONCE(&base, ossl_init_base)))
  ------------------
  |  |   24|  3.49k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 1.74k]
  |  |  |  Branch (24:46): [True: 1.74k, False: 0]
  |  |  ------------------
  ------------------
  392|      0|        return 0;
  393|       |
  394|  1.74k|    if (opts & OPENSSL_INIT_BASE_ONLY)
  ------------------
  |  |   31|  1.74k|#define OPENSSL_INIT_BASE_ONLY 0x00040000L
  ------------------
  |  Branch (394:9): [True: 1.74k, False: 2]
  ------------------
  395|  1.74k|        return 1;
  396|       |
  397|       |    /*
  398|       |     * optsdone_lock should definitely be set up now, so we can now repeat the
  399|       |     * same check from above but be sure that it will work even on platforms
  400|       |     * without lockless CRYPTO_atomic_load
  401|       |     */
  402|      2|    if (!aloaddone) {
  ------------------
  |  Branch (402:9): [True: 0, False: 2]
  ------------------
  403|      0|        if (!CRYPTO_atomic_load(&optsdone, &tmp, optsdone_lock))
  ------------------
  |  Branch (403:13): [True: 0, False: 0]
  ------------------
  404|      0|            return 0;
  405|      0|        if ((tmp & opts) == opts)
  ------------------
  |  Branch (405:13): [True: 0, False: 0]
  ------------------
  406|      0|            return 1;
  407|      0|    }
  408|       |
  409|      2|    if ((opts & OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS)
  ------------------
  |  |  547|      2|#define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L
  ------------------
  |  Branch (409:9): [True: 0, False: 2]
  ------------------
  410|      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 (410:12): [True: 0, False: 0]
  ------------------
  411|      2|            ossl_init_no_load_crypto_strings,
  412|      2|            ossl_init_load_crypto_strings))
  413|      0|        return 0;
  414|       |
  415|      2|    if ((opts & OPENSSL_INIT_LOAD_CRYPTO_STRINGS)
  ------------------
  |  |  548|      2|#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L
  ------------------
  |  Branch (415:9): [True: 1, False: 1]
  ------------------
  416|      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 (416:12): [True: 0, False: 1]
  ------------------
  417|      0|        return 0;
  418|       |
  419|      2|    if ((opts & OPENSSL_INIT_NO_LOAD_SSL_STRINGS)
  ------------------
  |  | 2914|      2|#define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L
  ------------------
  |  Branch (419:9): [True: 0, False: 2]
  ------------------
  420|      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 (420:12): [True: 0, False: 0]
  ------------------
  421|      2|            ossl_init_load_ssl_strings))
  422|      0|        return 0;
  423|       |
  424|      2|    if ((opts & OPENSSL_INIT_LOAD_SSL_STRINGS)
  ------------------
  |  | 2915|      2|#define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L
  ------------------
  |  Branch (424:9): [True: 0, False: 2]
  ------------------
  425|      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 (425:12): [True: 0, False: 0]
  ------------------
  426|      0|        return 0;
  427|       |
  428|      2|    if ((opts & OPENSSL_INIT_NO_ADD_ALL_CIPHERS)
  ------------------
  |  |  551|      2|#define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L
  ------------------
  |  Branch (428:9): [True: 0, False: 2]
  ------------------
  429|      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 (429:12): [True: 0, False: 0]
  ------------------
  430|      2|            ossl_init_add_all_ciphers))
  431|      0|        return 0;
  432|       |
  433|      2|    if ((opts & OPENSSL_INIT_ADD_ALL_CIPHERS)
  ------------------
  |  |  549|      2|#define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L
  ------------------
  |  Branch (433:9): [True: 1, False: 1]
  ------------------
  434|      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 (434:12): [True: 0, False: 1]
  ------------------
  435|      0|        return 0;
  436|       |
  437|      2|    if ((opts & OPENSSL_INIT_NO_ADD_ALL_DIGESTS)
  ------------------
  |  |  552|      2|#define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L
  ------------------
  |  Branch (437:9): [True: 0, False: 2]
  ------------------
  438|      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 (438:12): [True: 0, False: 0]
  ------------------
  439|      2|            ossl_init_add_all_digests))
  440|      0|        return 0;
  441|       |
  442|      2|    if ((opts & OPENSSL_INIT_ADD_ALL_DIGESTS)
  ------------------
  |  |  550|      2|#define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L
  ------------------
  |  Branch (442:9): [True: 1, False: 1]
  ------------------
  443|      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 (443:12): [True: 0, False: 1]
  ------------------
  444|      0|        return 0;
  445|       |
  446|      2|    if ((opts & OPENSSL_INIT_ATFORK)
  ------------------
  |  |  557|      2|#define OPENSSL_INIT_ATFORK 0x00020000L
  ------------------
  |  Branch (446:9): [True: 0, False: 2]
  ------------------
  447|      0|        && !openssl_init_fork_handlers())
  ------------------
  |  Branch (447:12): [True: 0, False: 0]
  ------------------
  448|      0|        return 0;
  449|       |
  450|      2|    if ((opts & OPENSSL_INIT_NO_LOAD_CONFIG)
  ------------------
  |  |  554|      2|#define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L
  ------------------
  |  Branch (450:9): [True: 0, False: 2]
  ------------------
  451|      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 (451:12): [True: 0, False: 0]
  ------------------
  452|      0|        return 0;
  453|       |
  454|      2|    if (opts & OPENSSL_INIT_LOAD_CONFIG) {
  ------------------
  |  |  553|      2|#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
  ------------------
  |  Branch (454:9): [True: 0, False: 2]
  ------------------
  455|      0|        int loading = CRYPTO_THREAD_get_local(&in_init_config_local) != NULL;
  456|       |
  457|       |        /* If called recursively from OBJ_ calls during config loading,
  458|       |         * we have to mask OPENSSL_INIT_LOAD_CONFIG in optsdone to not
  459|       |         * advertise that config loading is complete, otherwise other
  460|       |         * threads may proceed, e.g., to fetching from a provider that
  461|       |         * is not yet loaded.
  462|       |         */
  463|      0|        if (loading) {
  ------------------
  |  Branch (463:13): [True: 0, False: 0]
  ------------------
  464|      0|            optsdone_bits &= ~(uint64_t)OPENSSL_INIT_LOAD_CONFIG;
  ------------------
  |  |  553|      0|#define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
  ------------------
  465|      0|        } else {
  466|      0|            int ret;
  467|       |
  468|      0|            if (!CRYPTO_THREAD_set_local(&in_init_config_local, (void *)-1))
  ------------------
  |  Branch (468:17): [True: 0, False: 0]
  ------------------
  469|      0|                return 0;
  470|      0|            if (settings == NULL) {
  ------------------
  |  Branch (470:17): [True: 0, False: 0]
  ------------------
  471|      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]
  |  |  ------------------
  ------------------
  472|      0|            } else {
  473|      0|                if (!CRYPTO_THREAD_write_lock(init_lock))
  ------------------
  |  Branch (473:21): [True: 0, False: 0]
  ------------------
  474|      0|                    return 0;
  475|      0|                conf_settings = settings;
  476|      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]
  |  |  ------------------
  ------------------
  477|      0|                    ossl_init_config);
  478|      0|                conf_settings = NULL;
  479|      0|                CRYPTO_THREAD_unlock(init_lock);
  480|      0|            }
  481|       |
  482|      0|            if (ret <= 0)
  ------------------
  |  Branch (482:17): [True: 0, False: 0]
  ------------------
  483|      0|                return 0;
  484|      0|        }
  485|      0|    }
  486|       |
  487|      2|    if ((opts & OPENSSL_INIT_ASYNC)
  ------------------
  |  |  555|      2|#define OPENSSL_INIT_ASYNC 0x00000100L
  ------------------
  |  Branch (487:9): [True: 0, False: 2]
  ------------------
  488|      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 (488:12): [True: 0, False: 0]
  ------------------
  489|      0|        return 0;
  490|       |
  491|      2|    if (!CRYPTO_atomic_or(&optsdone, optsdone_bits, &tmp, optsdone_lock))
  ------------------
  |  Branch (491:9): [True: 0, False: 2]
  ------------------
  492|      0|        return 0;
  493|       |
  494|      2|    return 1;
  495|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   82|      0|    OPENSSL_free(ret);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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: 867, False: 3.88k]
  |  Branch (124:76): [True: 0, False: 867]
  ------------------
  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.79k, False: 2.96k]
  ------------------
  130|  1.79k|        if ((nn = OPENSSL_malloc(sizeof(*nn))) == NULL) {
  ------------------
  |  |  111|  1.79k|    CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (130:13): [True: 0, False: 1.79k]
  ------------------
  131|      0|            lh->error++;
  132|      0|            return NULL;
  133|      0|        }
  134|  1.79k|        nn->data = data;
  135|  1.79k|        nn->next = NULL;
  136|  1.79k|        nn->hash = hash;
  137|  1.79k|        *rn = nn;
  138|  1.79k|        ret = NULL;
  139|  1.79k|        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|    867|{
  244|    867|    OPENSSL_LH_NODE **n, **n1, **n2, *np;
  245|    867|    unsigned int p, pmax, nni, j;
  246|    867|    unsigned long hash;
  247|       |
  248|    867|    nni = lh->num_alloc_nodes;
  249|    867|    p = lh->p;
  250|    867|    pmax = lh->pmax;
  251|    867|    if (p + 1 >= pmax) {
  ------------------
  |  Branch (251:9): [True: 9, False: 858]
  ------------------
  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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|    858|    } else {
  264|    858|        lh->p++;
  265|    858|    }
  266|       |
  267|    867|    lh->num_nodes++;
  268|    867|    n1 = &(lh->b[p]);
  269|    867|    n2 = &(lh->b[p + pmax]);
  270|    867|    *n2 = NULL;
  271|       |
  272|  3.95k|    for (np = *n1; np != NULL;) {
  ------------------
  |  Branch (272:20): [True: 3.08k, False: 867]
  ------------------
  273|  3.08k|        hash = np->hash;
  274|  3.08k|        if ((hash % nni) != p) { /* move it */
  ------------------
  |  Branch (274:13): [True: 543, False: 2.54k]
  ------------------
  275|    543|            *n1 = (*n1)->next;
  276|    543|            np->next = *n2;
  277|    543|            *n2 = np;
  278|    543|        } else
  279|  2.54k|            n1 = &((*n1)->next);
  280|  3.08k|        np = *n1;
  281|  3.08k|    }
  282|       |
  283|    867|    return 1;
  284|    867|}
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.59k, False: 2.71k]
  ------------------
  333|  2.59k|        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.95k, False: 3.48k]
  ------------------
  338|  7.95k|            ret = &(n1->next);
  339|  7.95k|            continue;
  340|  7.95k|        }
  341|       |
  342|  3.48k|        if (lh->compw != NULL) {
  ------------------
  |  Branch (342:13): [True: 3.48k, False: 0]
  ------------------
  343|  3.48k|            if (lh->compw(n1->data, data, lh->comp) == 0)
  ------------------
  |  Branch (343:17): [True: 3.33k, False: 156]
  ------------------
  344|  3.33k|                break;
  345|  3.48k|        } 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|    118|{
   31|    118|    memset(c, 0, sizeof(*c));
   32|    118|    c->A = INIT_DATA_A;
  ------------------
  |  |   24|    118|#define INIT_DATA_A (unsigned long)0x67452301L
  ------------------
   33|    118|    c->B = INIT_DATA_B;
  ------------------
  |  |   25|    118|#define INIT_DATA_B (unsigned long)0xefcdab89L
  ------------------
   34|    118|    c->C = INIT_DATA_C;
  ------------------
  |  |   26|    118|#define INIT_DATA_C (unsigned long)0x98badcfeL
  ------------------
   35|    118|    c->D = INIT_DATA_D;
  ------------------
  |  |   27|    118|#define INIT_DATA_D (unsigned long)0x10325476L
  ------------------
   36|    118|    return 1;
   37|    118|}
md4_block_data_order:
   44|    195|{
   45|    195|    const unsigned char *data = data_;
   46|    195|    register unsigned MD32_REG_T A, B, C, D, l;
   47|    195|#ifndef MD32_XARRAY
   48|       |    /* See comment in crypto/sha/sha_local.h for details. */
   49|    195|    unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
   50|    195|        XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
   51|    195|#define X(i) XX##i
   52|       |#else
   53|       |    MD4_LONG XX[MD4_LBLOCK];
   54|       |#define X(i) XX[i]
   55|       |#endif
   56|       |
   57|    195|    A = c->A;
   58|    195|    B = c->B;
   59|    195|    C = c->C;
   60|    195|    D = c->D;
   61|       |
   62|  1.70M|    for (; num--;) {
  ------------------
  |  Branch (62:12): [True: 1.70M, False: 195]
  ------------------
   63|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   64|  1.70M|        X(0) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   65|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   66|  1.70M|        X(1) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   67|       |        /* Round 0 */
   68|  1.70M|        R0(A, B, C, D, X(0), 3, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   69|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   70|  1.70M|        X(2) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   71|  1.70M|        R0(D, A, B, C, X(1), 7, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   72|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   73|  1.70M|        X(3) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   74|  1.70M|        R0(C, D, A, B, X(2), 11, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   75|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   76|  1.70M|        X(4) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   77|  1.70M|        R0(B, C, D, A, X(3), 19, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   78|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   79|  1.70M|        X(5) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   80|  1.70M|        R0(A, B, C, D, X(4), 3, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   81|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   82|  1.70M|        X(6) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   83|  1.70M|        R0(D, A, B, C, X(5), 7, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   84|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   85|  1.70M|        X(7) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   86|  1.70M|        R0(C, D, A, B, X(6), 11, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   87|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   88|  1.70M|        X(8) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   89|  1.70M|        R0(B, C, D, A, X(7), 19, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   90|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   91|  1.70M|        X(9) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   92|  1.70M|        R0(A, B, C, D, X(8), 3, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   93|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   94|  1.70M|        X(10) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   95|  1.70M|        R0(D, A, B, C, X(9), 7, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   96|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   97|  1.70M|        X(11) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
   98|  1.70M|        R0(C, D, A, B, X(10), 11, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
   99|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  100|  1.70M|        X(12) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
  101|  1.70M|        R0(B, C, D, A, X(11), 19, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
  102|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  103|  1.70M|        X(13) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
  104|  1.70M|        R0(A, B, C, D, X(12), 3, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
  105|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  106|  1.70M|        X(14) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
  107|  1.70M|        R0(D, A, B, C, X(13), 7, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
  108|  1.70M|        (void)HOST_c2l(data, l);
  ------------------
  |  |  146|  1.70M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
  |  |  147|  1.70M|    l |= (((unsigned long)(*((c)++))) << 8),               \
  |  |  148|  1.70M|    l |= (((unsigned long)(*((c)++))) << 16),              \
  |  |  149|  1.70M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
  109|  1.70M|        X(15) = l;
  ------------------
  |  |   51|  1.70M|#define X(i) XX##i
  ------------------
  110|  1.70M|        R0(C, D, A, B, X(14), 11, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
  111|  1.70M|        R0(B, C, D, A, X(15), 19, 0);
  ------------------
  |  |   61|  1.70M|    {                                        \
  |  |   62|  1.70M|        a += ((k) + (t) + F((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   56|  1.70M|#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
  |  |  ------------------
  |  |   63|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   64|  1.70M|    };
  ------------------
  112|       |        /* Round 1 */
  113|  1.70M|        R1(A, B, C, D, X(0), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  114|  1.70M|        R1(D, A, B, C, X(4), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  115|  1.70M|        R1(C, D, A, B, X(8), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  116|  1.70M|        R1(B, C, D, A, X(12), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  117|  1.70M|        R1(A, B, C, D, X(1), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  118|  1.70M|        R1(D, A, B, C, X(5), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  119|  1.70M|        R1(C, D, A, B, X(9), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  120|  1.70M|        R1(B, C, D, A, X(13), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  121|  1.70M|        R1(A, B, C, D, X(2), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  122|  1.70M|        R1(D, A, B, C, X(6), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  123|  1.70M|        R1(C, D, A, B, X(10), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  124|  1.70M|        R1(B, C, D, A, X(14), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  125|  1.70M|        R1(A, B, C, D, X(3), 3, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  126|  1.70M|        R1(D, A, B, C, X(7), 5, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  127|  1.70M|        R1(C, D, A, B, X(11), 9, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  128|  1.70M|        R1(B, C, D, A, X(15), 13, 0x5A827999L);
  ------------------
  |  |   67|  1.70M|    {                                        \
  |  |   68|  1.70M|        a += ((k) + (t) + G((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   57|  1.70M|#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
  |  |  ------------------
  |  |   69|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   70|  1.70M|    };
  ------------------
  129|       |        /* Round 2 */
  130|  1.70M|        R2(A, B, C, D, X(0), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  131|  1.70M|        R2(D, A, B, C, X(8), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  132|  1.70M|        R2(C, D, A, B, X(4), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  133|  1.70M|        R2(B, C, D, A, X(12), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  134|  1.70M|        R2(A, B, C, D, X(2), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  135|  1.70M|        R2(D, A, B, C, X(10), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  136|  1.70M|        R2(C, D, A, B, X(6), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  137|  1.70M|        R2(B, C, D, A, X(14), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  138|  1.70M|        R2(A, B, C, D, X(1), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  139|  1.70M|        R2(D, A, B, C, X(9), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  140|  1.70M|        R2(C, D, A, B, X(5), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  141|  1.70M|        R2(B, C, D, A, X(13), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  142|  1.70M|        R2(A, B, C, D, X(3), 3, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  143|  1.70M|        R2(D, A, B, C, X(11), 9, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  144|  1.70M|        R2(C, D, A, B, X(7), 11, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  145|  1.70M|        R2(B, C, D, A, X(15), 15, 0x6ED9EBA1L);
  ------------------
  |  |   73|  1.70M|    {                                        \
  |  |   74|  1.70M|        a += ((k) + (t) + H((b), (c), (d))); \
  |  |  ------------------
  |  |  |  |   58|  1.70M|#define H(b, c, d) ((b) ^ (c) ^ (d))
  |  |  ------------------
  |  |   75|  1.70M|        a = ROTATE(a, s);                    \
  |  |  ------------------
  |  |  |  |  104|  1.70M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  |  |   76|  1.70M|    };
  ------------------
  146|       |
  147|  1.70M|        A = c->A += A;
  148|  1.70M|        B = c->B += B;
  149|  1.70M|        C = c->C += C;
  150|  1.70M|        D = c->D += D;
  151|  1.70M|    }
  152|    195|}

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

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

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: 27, False: 35]
  ------------------
   60|     27|        memcpy(&(c->data[0]), &(in[i]), j);
   61|     27|        c->num = (int)j;
   62|     27|    }
   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: 27, False: 4]
  |  Branch (112:20): [True: 0, False: 4]
  ------------------
  113|     27|        if (j == 2)
  ------------------
  |  Branch (113:13): [True: 0, False: 27]
  ------------------
  114|      0|            c->data[i++] = 0x80;
  115|     27|        memset(&(c->data[i]), 0, MDC2_BLOCK - i);
  ------------------
  |  |   32|     27|#define MDC2_BLOCK 8
  ------------------
  116|     27|        mdc2_body(c, c->data, MDC2_BLOCK);
  ------------------
  |  |   32|     27|#define MDC2_BLOCK 8
  ------------------
  117|     27|    }
  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|     89|{
   68|     89|    register DES_LONG tin0, tin1;
   69|     89|    register DES_LONG ttin0, ttin1;
   70|     89|    DES_LONG d[2], dd[2];
   71|     89|    DES_key_schedule k;
   72|     89|    unsigned char *p;
   73|     89|    size_t i;
   74|       |
   75|  5.97M|    for (i = 0; i < len; i += 8) {
  ------------------
  |  Branch (75:17): [True: 5.97M, False: 89]
  ------------------
   76|  5.97M|        c2l(in, tin0);
  ------------------
  |  |  115|  5.97M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  116|  5.97M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  117|  5.97M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  118|  5.97M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   77|  5.97M|        d[0] = dd[0] = tin0;
   78|  5.97M|        c2l(in, tin1);
  ------------------
  |  |  115|  5.97M|#define c2l(c, l) (l = ((unsigned long)(*((c)++))), \
  |  |  116|  5.97M|    l |= (((unsigned long)(*((c)++))) << 8),        \
  |  |  117|  5.97M|    l |= (((unsigned long)(*((c)++))) << 16),       \
  |  |  118|  5.97M|    l |= (((unsigned long)(*((c)++))) << 24))
  ------------------
   79|  5.97M|        d[1] = dd[1] = tin1;
   80|  5.97M|        c->h[0] = (c->h[0] & 0x9f) | 0x40;
   81|  5.97M|        c->hh[0] = (c->hh[0] & 0x9f) | 0x20;
   82|       |
   83|  5.97M|        DES_set_odd_parity(&c->h);
   84|  5.97M|        DES_set_key_unchecked(&c->h, &k);
   85|  5.97M|        DES_encrypt1(d, &k, 1);
   86|       |
   87|  5.97M|        DES_set_odd_parity(&c->hh);
   88|  5.97M|        DES_set_key_unchecked(&c->hh, &k);
   89|  5.97M|        DES_encrypt1(dd, &k, 1);
   90|       |
   91|  5.97M|        ttin0 = tin0 ^ dd[0];
   92|  5.97M|        ttin1 = tin1 ^ dd[1];
   93|  5.97M|        tin0 ^= d[0];
   94|  5.97M|        tin1 ^= d[1];
   95|       |
   96|  5.97M|        p = c->h;
   97|  5.97M|        l2c(tin0, p);
  ------------------
  |  |  151|  5.97M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  152|  5.97M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  153|  5.97M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  154|  5.97M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
   98|  5.97M|        l2c(ttin1, p);
  ------------------
  |  |  151|  5.97M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  152|  5.97M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  153|  5.97M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  154|  5.97M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
   99|  5.97M|        p = c->hh;
  100|  5.97M|        l2c(ttin0, p);
  ------------------
  |  |  151|  5.97M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  152|  5.97M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  153|  5.97M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  154|  5.97M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
  101|  5.97M|        l2c(tin1, p);
  ------------------
  |  |  151|  5.97M|#define l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  152|  5.97M|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),           \
  |  |  153|  5.97M|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),          \
  |  |  154|  5.97M|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff))
  ------------------
  102|  5.97M|    }
  103|     89|}

CRYPTO_malloc:
  207|  26.0k|{
  208|  26.0k|    void *ptr;
  209|       |
  210|  26.0k|    INCREMENT(malloc_count);
  211|  26.0k|    FAILTEST();
  212|  26.0k|    if (malloc_impl != CRYPTO_malloc) {
  ------------------
  |  Branch (212:9): [True: 0, False: 26.0k]
  ------------------
  213|      0|        ptr = malloc_impl(num, file, line);
  214|      0|        if (ptr != NULL || num == 0)
  ------------------
  |  Branch (214:13): [True: 0, False: 0]
  |  Branch (214:28): [True: 0, False: 0]
  ------------------
  215|      0|            return ptr;
  216|      0|        goto err;
  217|      0|    }
  218|       |
  219|  26.0k|    if (ossl_unlikely(num == 0))
  ------------------
  |  |   24|  26.0k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 26.0k]
  |  |  ------------------
  ------------------
  220|      0|        return NULL;
  221|       |
  222|  26.0k|    if (allow_customize) {
  ------------------
  |  Branch (222:9): [True: 1, False: 26.0k]
  ------------------
  223|      1|        TSAN_BENIGN(&allow_customize,
  224|      1|            "allow_customize is intentionally racy");
  225|       |        /*
  226|       |         * Disallow customization after the first allocation. We only set this
  227|       |         * if necessary to avoid a store to the same cache line on every
  228|       |         * allocation.
  229|       |         */
  230|      1|        allow_customize = 0;
  231|      1|    }
  232|       |
  233|  26.0k|    ptr = malloc(num);
  234|  26.0k|    if (ossl_likely(ptr != NULL))
  ------------------
  |  |   23|  26.0k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 26.0k, False: 0]
  |  |  ------------------
  ------------------
  235|  26.0k|        return ptr;
  236|      0|err:
  237|      0|    ossl_report_alloc_err(file, line);
  238|       |    return NULL;
  239|  26.0k|}
CRYPTO_zalloc:
  242|  21.7k|{
  243|  21.7k|    void *ret;
  244|       |
  245|  21.7k|    ret = CRYPTO_malloc(num, file, line);
  246|  21.7k|    if (ret != NULL)
  ------------------
  |  Branch (246:9): [True: 21.7k, False: 0]
  ------------------
  247|  21.7k|        memset(ret, 0, num);
  248|       |
  249|  21.7k|    return ret;
  250|  21.7k|}
CRYPTO_aligned_alloc:
  254|      3|{
  255|      3|    *freeptr = NULL;
  256|       |
  257|       |    /* Ensure that alignment is a power of two no larger than 65536 */
  258|      3|    if (alignment == 0 || (alignment & (alignment - 1)) != 0
  ------------------
  |  Branch (258:9): [True: 0, False: 3]
  |  Branch (258:27): [True: 0, False: 3]
  ------------------
  259|      3|        || alignment > 65536) {
  ------------------
  |  Branch (259:12): [True: 0, False: 3]
  ------------------
  260|      0|        ossl_report_alloc_err_inv(file, line);
  261|      0|        return NULL;
  262|      0|    }
  263|       |
  264|       |    /* Allow non-malloc() allocations as long as no malloc_impl is provided. */
  265|      3|    if (malloc_impl == CRYPTO_malloc) {
  ------------------
  |  Branch (265:9): [True: 3, False: 0]
  ------------------
  266|      3|#if defined(_BSD_SOURCE) || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L)
  267|      3|        void *ret;
  268|       |
  269|       |        /* posix_memalign() requires alignment to be at least sizeof(void *) */
  270|      3|        if (alignment < sizeof(void *))
  ------------------
  |  Branch (270:13): [True: 0, False: 3]
  ------------------
  271|      0|            alignment = sizeof(void *);
  272|       |
  273|      3|        if (posix_memalign(&ret, alignment, num) == 0) {
  ------------------
  |  Branch (273:13): [True: 3, False: 0]
  ------------------
  274|      3|            *freeptr = ret;
  275|      3|            return ret;
  276|      3|        }
  277|      3|#endif
  278|      3|    }
  279|       |
  280|      0|    return ossl_malloc_align(num, alignment, freeptr, file, line);
  281|      3|}
CRYPTO_realloc:
  284|  1.18k|{
  285|  1.18k|    void *ret;
  286|       |
  287|  1.18k|    INCREMENT(realloc_count);
  288|  1.18k|    FAILTEST();
  289|  1.18k|    if (realloc_impl != CRYPTO_realloc) {
  ------------------
  |  Branch (289:9): [True: 0, False: 1.18k]
  ------------------
  290|      0|        ret = realloc_impl(str, num, file, line);
  291|       |
  292|      0|        if (num == 0 || ret != NULL)
  ------------------
  |  Branch (292:13): [True: 0, False: 0]
  |  Branch (292:25): [True: 0, False: 0]
  ------------------
  293|      0|            return ret;
  294|       |
  295|      0|        goto err;
  296|      0|    }
  297|       |
  298|  1.18k|    if (str == NULL)
  ------------------
  |  Branch (298:9): [True: 18, False: 1.16k]
  ------------------
  299|     18|        return CRYPTO_malloc(num, file, line);
  300|       |
  301|  1.16k|    if (num == 0) {
  ------------------
  |  Branch (301:9): [True: 0, False: 1.16k]
  ------------------
  302|      0|        CRYPTO_free(str, file, line);
  303|      0|        return NULL;
  304|      0|    }
  305|       |
  306|  1.16k|    ret = realloc(str, num);
  307|       |
  308|  1.16k|err:
  309|  1.16k|    if (num != 0 && ret == NULL)
  ------------------
  |  Branch (309:9): [True: 1.16k, False: 0]
  |  Branch (309:21): [True: 0, False: 1.16k]
  ------------------
  310|      0|        ossl_report_alloc_err(file, line);
  311|       |
  312|  1.16k|    return ret;
  313|  1.16k|}
CRYPTO_free:
  343|  23.9k|{
  344|  23.9k|    INCREMENT(free_count);
  345|  23.9k|    if (free_impl != CRYPTO_free) {
  ------------------
  |  Branch (345:9): [True: 0, False: 23.9k]
  ------------------
  346|      0|        free_impl(str, file, line);
  347|      0|        return;
  348|      0|    }
  349|       |
  350|  23.9k|    free(str);
  351|  23.9k|}
CRYPTO_clear_free:
  354|  9.85k|{
  355|  9.85k|    if (str == NULL)
  ------------------
  |  Branch (355:9): [True: 0, False: 9.85k]
  ------------------
  356|      0|        return;
  357|  9.85k|    if (num)
  ------------------
  |  Branch (357:9): [True: 9.85k, False: 0]
  ------------------
  358|  9.85k|        OPENSSL_cleanse(str, num);
  359|  9.85k|    CRYPTO_free(str, file, line);
  360|  9.85k|}

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

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:
  472|    511|{
  473|    511|    int t;
  474|       |
  475|  5.79k|    while ((t = ossl_tolower(*s1) - ossl_tolower(*s2++)) == 0)
  ------------------
  |  Branch (475:12): [True: 5.79k, False: 0]
  ------------------
  476|  5.79k|        if (*s1++ == '\0')
  ------------------
  |  Branch (476:13): [True: 511, False: 5.28k]
  ------------------
  477|    511|            return 0;
  478|      0|    return t;
  479|    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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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))
  ------------------
  |  | 1372|  2.26k|#define NUM_NID 1505
  ------------------
                      || (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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  510|  1.35k|        } else {
  511|  1.35k|            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|    151|{
   56|    151|    if (ossl_likely(p != NULL && key != NULL))
  ------------------
  |  |   23|    302|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 151, False: 0]
  |  |  |  Branch (23:44): [True: 151, False: 0]
  |  |  |  Branch (23:44): [True: 151, False: 0]
  |  |  ------------------
  ------------------
   57|    160|        for (; p->key != NULL; p++)
  ------------------
  |  Branch (57:16): [True: 160, False: 0]
  ------------------
   58|    160|            if (strcmp(key, p->key) == 0)
  ------------------
  |  Branch (58:17): [True: 151, False: 9]
  ------------------
   59|    151|                return p;
   60|      0|    return NULL;
   61|    151|}
OSSL_PARAM_locate_const:
   64|    151|{
   65|    151|    return OSSL_PARAM_locate((OSSL_PARAM *)p, key);
   66|    151|}
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|    142|{
  313|    142|#ifndef OPENSSL_SMALL_FOOTPRINT
  314|    142|    switch (sizeof(unsigned int)) {
  ------------------
  |  Branch (314:13): [True: 142, Folded]
  ------------------
  315|    142|    case sizeof(uint32_t):
  ------------------
  |  Branch (315:5): [True: 142, False: 0]
  ------------------
  316|    142|        return OSSL_PARAM_set_uint32(p, (uint32_t)val);
  317|      0|    case sizeof(uint64_t):
  ------------------
  |  Branch (317:5): [True: 0, False: 142]
  ------------------
  318|      0|        return OSSL_PARAM_set_uint64(p, (uint64_t)val);
  319|    142|    }
  320|      0|#endif
  321|      0|    return general_set_uint(p, &val, sizeof(val));
  322|    142|}
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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  538|      0|    return 0;
  539|     68|}
OSSL_PARAM_set_uint32:
  629|    142|{
  630|    142|    if (p == NULL) {
  ------------------
  |  Branch (630:9): [True: 0, False: 142]
  ------------------
  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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  632|      0|        return 0;
  633|      0|    }
  634|    142|    p->return_size = 0;
  635|       |
  636|    142|    if (p->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
  ------------------
  |  |  107|    142|#define OSSL_PARAM_UNSIGNED_INTEGER 2
  ------------------
  |  Branch (636:9): [True: 142, False: 0]
  ------------------
  637|    142|#ifndef OPENSSL_SMALL_FOOTPRINT
  638|    142|        p->return_size = sizeof(uint32_t); /* Minimum expected size */
  639|    142|        if (p->data == NULL)
  ------------------
  |  Branch (639:13): [True: 0, False: 142]
  ------------------
  640|      0|            return 1;
  641|    142|        switch (p->data_size) {
  ------------------
  |  Branch (641:17): [True: 142, False: 0]
  ------------------
  642|      0|        case sizeof(uint32_t):
  ------------------
  |  Branch (642:9): [True: 0, False: 142]
  ------------------
  643|      0|            *(uint32_t *)p->data = val;
  644|      0|            return 1;
  645|    142|        case sizeof(uint64_t):
  ------------------
  |  Branch (645:9): [True: 142, False: 0]
  ------------------
  646|    142|            p->return_size = sizeof(uint64_t);
  647|    142|            *(uint64_t *)p->data = val;
  648|    142|            return 1;
  649|    142|        }
  650|      0|#endif
  651|      0|        return general_set_uint(p, &val, sizeof(val));
  652|    142|    } 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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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|    142|    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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  361|      0|        ERR_set_error)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  696|      0|    return 0;
  697|    142|}
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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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)) {
  ------------------
  |  |   23|      3|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23: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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  380|      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|    222|{
 1048|    222|    return ossl_param_construct(key, OSSL_PARAM_UNSIGNED_INTEGER, buf,
  ------------------
  |  |  107|    222|#define OSSL_PARAM_UNSIGNED_INTEGER 2
  ------------------
 1049|    222|        sizeof(size_t));
 1050|    222|}
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|    290|{
   71|    290|    OSSL_PARAM res;
   72|       |
   73|    290|    res.key = key;
   74|    290|    res.data_type = data_type;
   75|    290|    res.data = data;
   76|    290|    res.data_size = data_size;
   77|    290|    res.return_size = OSSL_PARAM_UNMODIFIED;
  ------------------
  |  |   22|    290|#define OSSL_PARAM_UNMODIFIED ((size_t)-1)
  ------------------
   78|    290|    return res;
   79|    290|}

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

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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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);
  ------------------
  |  |   99|     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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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);
  ------------------
  |  |  116|      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);
  ------------------
  |  |  116|      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);
  ------------------
  |  |  116|      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:
   32|      3|{
   33|      3|    PROVIDER_CONF_GLOBAL *pcgbl = OPENSSL_zalloc(sizeof(*pcgbl));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   34|       |
   35|      3|    if (pcgbl == NULL)
  ------------------
  |  Branch (35:9): [True: 0, False: 3]
  ------------------
   36|      0|        return NULL;
   37|       |
   38|      3|    pcgbl->lock = CRYPTO_THREAD_lock_new();
   39|      3|    if (pcgbl->lock == NULL) {
  ------------------
  |  Branch (39:9): [True: 0, False: 3]
  ------------------
   40|      0|        OPENSSL_free(pcgbl);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   41|      0|        return NULL;
   42|      0|    }
   43|       |
   44|      3|    return pcgbl;
   45|      3|}

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

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

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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   39|      3|    return stcb;
   40|      3|}

SHA3_absorb:
 1097|    236|{
 1098|    236|    uint64_t *A_flat = (uint64_t *)A;
 1099|    236|    size_t i, w = r / 8;
 1100|       |
 1101|    236|    assert(r < (25 * sizeof(A[0][0])) && (r % 8) == 0);
 1102|       |
 1103|   910k|    while (len >= r) {
  ------------------
  |  Branch (1103:12): [True: 909k, False: 236]
  ------------------
 1104|  15.2M|        for (i = 0; i < w; i++) {
  ------------------
  |  Branch (1104:21): [True: 14.3M, False: 909k]
  ------------------
 1105|  14.3M|            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|  14.3M|            inp += 8;
 1107|       |
 1108|  14.3M|            A_flat[i] ^= BitInterleave(Ai);
 1109|  14.3M|        }
 1110|   909k|        KeccakF1600(A);
 1111|   909k|        len -= r;
 1112|   909k|    }
 1113|       |
 1114|    236|    return len;
 1115|    236|}
SHA3_squeeze:
 1128|     59|{
 1129|     59|    uint64_t *A_flat = (uint64_t *)A;
 1130|     59|    size_t i, w = r / 8;
 1131|       |
 1132|     59|    assert(r < (25 * sizeof(A[0][0])) && (r % 8) == 0);
 1133|       |
 1134|     82|    while (len != 0) {
  ------------------
  |  Branch (1134:12): [True: 59, False: 23]
  ------------------
 1135|     59|        if (next)
  ------------------
  |  Branch (1135:13): [True: 0, False: 59]
  ------------------
 1136|      0|            KeccakF1600(A);
 1137|     59|        next = 1;
 1138|    311|        for (i = 0; i < w && len != 0; i++) {
  ------------------
  |  Branch (1138:21): [True: 311, False: 0]
  |  Branch (1138:30): [True: 288, False: 23]
  ------------------
 1139|    288|            uint64_t Ai = BitDeinterleave(A_flat[i]);
 1140|       |
 1141|    288|            if (len < 8) {
  ------------------
  |  Branch (1141:17): [True: 36, False: 252]
  ------------------
 1142|    180|                for (i = 0; i < len; i++) {
  ------------------
  |  Branch (1142:29): [True: 144, False: 36]
  ------------------
 1143|    144|                    *out++ = (unsigned char)Ai;
 1144|    144|                    Ai >>= 8;
 1145|    144|                }
 1146|     36|                return;
 1147|     36|            }
 1148|       |
 1149|    252|            out[0] = (unsigned char)(Ai);
 1150|    252|            out[1] = (unsigned char)(Ai >> 8);
 1151|    252|            out[2] = (unsigned char)(Ai >> 16);
 1152|    252|            out[3] = (unsigned char)(Ai >> 24);
 1153|    252|            out[4] = (unsigned char)(Ai >> 32);
 1154|    252|            out[5] = (unsigned char)(Ai >> 40);
 1155|    252|            out[6] = (unsigned char)(Ai >> 48);
 1156|    252|            out[7] = (unsigned char)(Ai >> 56);
 1157|    252|            out += 8;
 1158|    252|            len -= 8;
 1159|    252|        }
 1160|     59|    }
 1161|     59|}
keccak1600.c:BitInterleave:
  982|  14.3M|{
  983|  14.3M|    if (BIT_INTERLEAVE) {
  ------------------
  |  |   43|  14.3M|#define BIT_INTERLEAVE (0)
  |  |  ------------------
  |  |  |  Branch (43:24): [Folded, False: 14.3M]
  |  |  ------------------
  ------------------
  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|  14.3M|    return Ai;
 1031|  14.3M|}
keccak1600.c:KeccakF1600:
  651|   909k|{
  652|   909k|    uint64_t T[5][5];
  653|   909k|    size_t i;
  654|       |
  655|   909k|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  656|   909k|    A[0][1] = ~A[0][1];
  657|   909k|    A[0][2] = ~A[0][2];
  658|   909k|    A[1][3] = ~A[1][3];
  659|   909k|    A[2][2] = ~A[2][2];
  660|   909k|    A[3][2] = ~A[3][2];
  661|   909k|    A[4][0] = ~A[4][0];
  662|   909k|#endif
  663|       |
  664|  11.8M|    for (i = 0; i < 24; i += 2) {
  ------------------
  |  Branch (664:17): [True: 10.9M, False: 909k]
  ------------------
  665|  10.9M|        Round(T, A, i);
  666|  10.9M|        Round(A, T, i + 1);
  667|  10.9M|    }
  668|       |
  669|   909k|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  670|   909k|    A[0][1] = ~A[0][1];
  671|   909k|    A[0][2] = ~A[0][2];
  672|   909k|    A[1][3] = ~A[1][3];
  673|   909k|    A[2][2] = ~A[2][2];
  674|   909k|    A[3][2] = ~A[3][2];
  675|   909k|    A[4][0] = ~A[4][0];
  676|   909k|#endif
  677|   909k|}
keccak1600.c:Round:
  532|  21.8M|{
  533|  21.8M|    uint64_t C[5], D[5];
  534|       |
  535|  21.8M|    assert(i < OSSL_NELEM(iotas));
  536|       |
  537|  21.8M|    C[0] = A[0][0] ^ A[1][0] ^ A[2][0] ^ A[3][0] ^ A[4][0];
  538|  21.8M|    C[1] = A[0][1] ^ A[1][1] ^ A[2][1] ^ A[3][1] ^ A[4][1];
  539|  21.8M|    C[2] = A[0][2] ^ A[1][2] ^ A[2][2] ^ A[3][2] ^ A[4][2];
  540|  21.8M|    C[3] = A[0][3] ^ A[1][3] ^ A[2][3] ^ A[3][3] ^ A[4][3];
  541|  21.8M|    C[4] = A[0][4] ^ A[1][4] ^ A[2][4] ^ A[3][4] ^ A[4][4];
  542|       |
  543|  21.8M|    D[0] = ROL64(C[1], 1) ^ C[4];
  544|  21.8M|    D[1] = ROL64(C[2], 1) ^ C[0];
  545|  21.8M|    D[2] = ROL64(C[3], 1) ^ C[1];
  546|  21.8M|    D[3] = ROL64(C[4], 1) ^ C[2];
  547|  21.8M|    D[4] = ROL64(C[0], 1) ^ C[3];
  548|       |
  549|  21.8M|    C[0] = A[0][0] ^ D[0]; /* rotate by 0 */
  550|  21.8M|    C[1] = ROL64(A[1][1] ^ D[1], rhotates[1][1]);
  551|  21.8M|    C[2] = ROL64(A[2][2] ^ D[2], rhotates[2][2]);
  552|  21.8M|    C[3] = ROL64(A[3][3] ^ D[3], rhotates[3][3]);
  553|  21.8M|    C[4] = ROL64(A[4][4] ^ D[4], rhotates[4][4]);
  554|       |
  555|  21.8M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  556|  21.8M|    R[0][0] = C[0] ^ (C[1] | C[2]) ^ iotas[i];
  557|  21.8M|    R[0][1] = C[1] ^ (~C[2] | C[3]);
  558|  21.8M|    R[0][2] = C[2] ^ (C[3] & C[4]);
  559|  21.8M|    R[0][3] = C[3] ^ (C[4] | C[0]);
  560|  21.8M|    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|  21.8M|    C[0] = ROL64(A[0][3] ^ D[3], rhotates[0][3]);
  570|  21.8M|    C[1] = ROL64(A[1][4] ^ D[4], rhotates[1][4]);
  571|  21.8M|    C[2] = ROL64(A[2][0] ^ D[0], rhotates[2][0]);
  572|  21.8M|    C[3] = ROL64(A[3][1] ^ D[1], rhotates[3][1]);
  573|  21.8M|    C[4] = ROL64(A[4][2] ^ D[2], rhotates[4][2]);
  574|       |
  575|  21.8M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  576|  21.8M|    R[1][0] = C[0] ^ (C[1] | C[2]);
  577|  21.8M|    R[1][1] = C[1] ^ (C[2] & C[3]);
  578|  21.8M|    R[1][2] = C[2] ^ (C[3] | ~C[4]);
  579|  21.8M|    R[1][3] = C[3] ^ (C[4] | C[0]);
  580|  21.8M|    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|  21.8M|    C[0] = ROL64(A[0][1] ^ D[1], rhotates[0][1]);
  590|  21.8M|    C[1] = ROL64(A[1][2] ^ D[2], rhotates[1][2]);
  591|  21.8M|    C[2] = ROL64(A[2][3] ^ D[3], rhotates[2][3]);
  592|  21.8M|    C[3] = ROL64(A[3][4] ^ D[4], rhotates[3][4]);
  593|  21.8M|    C[4] = ROL64(A[4][0] ^ D[0], rhotates[4][0]);
  594|       |
  595|  21.8M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  596|  21.8M|    R[2][0] = C[0] ^ (C[1] | C[2]);
  597|  21.8M|    R[2][1] = C[1] ^ (C[2] & C[3]);
  598|  21.8M|    R[2][2] = C[2] ^ (~C[3] & C[4]);
  599|  21.8M|    R[2][3] = ~C[3] ^ (C[4] | C[0]);
  600|  21.8M|    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|  21.8M|    C[0] = ROL64(A[0][4] ^ D[4], rhotates[0][4]);
  610|  21.8M|    C[1] = ROL64(A[1][0] ^ D[0], rhotates[1][0]);
  611|  21.8M|    C[2] = ROL64(A[2][1] ^ D[1], rhotates[2][1]);
  612|  21.8M|    C[3] = ROL64(A[3][2] ^ D[2], rhotates[3][2]);
  613|  21.8M|    C[4] = ROL64(A[4][3] ^ D[3], rhotates[4][3]);
  614|       |
  615|  21.8M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  616|  21.8M|    R[3][0] = C[0] ^ (C[1] & C[2]);
  617|  21.8M|    R[3][1] = C[1] ^ (C[2] | C[3]);
  618|  21.8M|    R[3][2] = C[2] ^ (~C[3] | C[4]);
  619|  21.8M|    R[3][3] = ~C[3] ^ (C[4] & C[0]);
  620|  21.8M|    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|  21.8M|    C[0] = ROL64(A[0][2] ^ D[2], rhotates[0][2]);
  630|  21.8M|    C[1] = ROL64(A[1][3] ^ D[3], rhotates[1][3]);
  631|  21.8M|    C[2] = ROL64(A[2][4] ^ D[4], rhotates[2][4]);
  632|  21.8M|    C[3] = ROL64(A[3][0] ^ D[0], rhotates[3][0]);
  633|  21.8M|    C[4] = ROL64(A[4][1] ^ D[1], rhotates[4][1]);
  634|       |
  635|  21.8M|#ifdef KECCAK_COMPLEMENTING_TRANSFORM
  636|  21.8M|    R[4][0] = C[0] ^ (~C[1] & C[2]);
  637|  21.8M|    R[4][1] = ~C[1] ^ (C[2] | C[3]);
  638|  21.8M|    R[4][2] = C[2] ^ (C[3] & C[4]);
  639|  21.8M|    R[4][3] = C[3] ^ (C[4] | C[0]);
  640|  21.8M|    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|  21.8M|}
keccak1600.c:ROL64:
   51|   633M|{
   52|   633M|    if (offset == 0) {
  ------------------
  |  Branch (52:9): [True: 0, False: 633M]
  ------------------
   53|      0|        return val;
   54|   633M|    } else if (!BIT_INTERLEAVE) {
  ------------------
  |  |   43|   633M|#define BIT_INTERLEAVE (0)
  ------------------
  |  Branch (54:16): [True: 633M, Folded]
  ------------------
   55|   633M|        return (val << offset) | (val >> (64 - offset));
   56|   633M|    } 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|   633M|}
keccak1600.c:BitDeinterleave:
 1034|    288|{
 1035|    288|    if (BIT_INTERLEAVE) {
  ------------------
  |  |   43|    288|#define BIT_INTERLEAVE (0)
  |  |  ------------------
  |  |  |  Branch (43:24): [Folded, False: 288]
  |  |  ------------------
  ------------------
 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|    288|    return Ai;
 1083|    288|}

SHA224_Init:
   28|    416|{
   29|    416|    memset(c, 0, sizeof(*c));
   30|    416|    c->h[0] = 0xc1059ed8UL;
   31|    416|    c->h[1] = 0x367cd507UL;
   32|    416|    c->h[2] = 0x3070dd17UL;
   33|    416|    c->h[3] = 0xf70e5939UL;
   34|    416|    c->h[4] = 0xffc00b31UL;
   35|    416|    c->h[5] = 0x68581511UL;
   36|    416|    c->h[6] = 0x64f98fa7UL;
   37|    416|    c->h[7] = 0xbefa4fa4UL;
   38|    416|    c->md_len = SHA224_DIGEST_LENGTH;
  ------------------
  |  |   86|    416|#define SHA224_DIGEST_LENGTH 28
  ------------------
   39|    416|    return 1;
   40|    416|}
SHA256_Init:
   43|  10.0k|{
   44|  10.0k|    memset(c, 0, sizeof(*c));
   45|  10.0k|    c->h[0] = 0x6a09e667UL;
   46|  10.0k|    c->h[1] = 0xbb67ae85UL;
   47|  10.0k|    c->h[2] = 0x3c6ef372UL;
   48|  10.0k|    c->h[3] = 0xa54ff53aUL;
   49|  10.0k|    c->h[4] = 0x510e527fUL;
   50|  10.0k|    c->h[5] = 0x9b05688cUL;
   51|  10.0k|    c->h[6] = 0x1f83d9abUL;
   52|  10.0k|    c->h[7] = 0x5be0cd19UL;
   53|  10.0k|    c->md_len = SHA256_DIGEST_LENGTH;
  ------------------
  |  |   87|  10.0k|#define SHA256_DIGEST_LENGTH 32
  ------------------
   54|  10.0k|    return 1;
   55|  10.0k|}
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|    208|{
   71|    208|    return SHA256_Final(md, c);
   72|    208|}
sha256.c:sha256_block_data_order:
  315|  15.6k|{
  316|  15.6k|    unsigned MD32_REG_T a, b, c, d, e, f, g, h, s0, s1, T1;
  317|  15.6k|    SHA_LONG X[16];
  318|  15.6k|    int i;
  319|  15.6k|    const unsigned char *data = in;
  320|  15.6k|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|  15.6k|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
  321|       |
  322|  6.43M|    while (num--) {
  ------------------
  |  Branch (322:12): [True: 6.42M, False: 15.6k]
  ------------------
  323|       |
  324|  6.42M|        a = ctx->h[0];
  325|  6.42M|        b = ctx->h[1];
  326|  6.42M|        c = ctx->h[2];
  327|  6.42M|        d = ctx->h[3];
  328|  6.42M|        e = ctx->h[4];
  329|  6.42M|        f = ctx->h[5];
  330|  6.42M|        g = ctx->h[6];
  331|  6.42M|        h = ctx->h[7];
  332|       |
  333|  6.42M|        if (!IS_LITTLE_ENDIAN && sizeof(SHA_LONG) == 4
  ------------------
  |  |   26|  12.8M|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  ------------------
  |  Branch (333:13): [Folded, False: 6.42M]
  |  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.42M|        } else {
  372|  6.42M|            SHA_LONG l;
  373|       |
  374|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  375|  6.42M|            T1 = X[0] = l;
  376|  6.42M|            ROUND_00_15(0, a, b, c, d, e, f, g, h);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  377|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  378|  6.42M|            T1 = X[1] = l;
  379|  6.42M|            ROUND_00_15(1, h, a, b, c, d, e, f, g);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  380|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  381|  6.42M|            T1 = X[2] = l;
  382|  6.42M|            ROUND_00_15(2, g, h, a, b, c, d, e, f);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  383|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  384|  6.42M|            T1 = X[3] = l;
  385|  6.42M|            ROUND_00_15(3, f, g, h, a, b, c, d, e);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  386|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  387|  6.42M|            T1 = X[4] = l;
  388|  6.42M|            ROUND_00_15(4, e, f, g, h, a, b, c, d);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  389|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  390|  6.42M|            T1 = X[5] = l;
  391|  6.42M|            ROUND_00_15(5, d, e, f, g, h, a, b, c);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  392|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  393|  6.42M|            T1 = X[6] = l;
  394|  6.42M|            ROUND_00_15(6, c, d, e, f, g, h, a, b);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  395|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  396|  6.42M|            T1 = X[7] = l;
  397|  6.42M|            ROUND_00_15(7, b, c, d, e, f, g, h, a);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  398|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  399|  6.42M|            T1 = X[8] = l;
  400|  6.42M|            ROUND_00_15(8, a, b, c, d, e, f, g, h);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  401|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  402|  6.42M|            T1 = X[9] = l;
  403|  6.42M|            ROUND_00_15(9, h, a, b, c, d, e, f, g);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  404|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  405|  6.42M|            T1 = X[10] = l;
  406|  6.42M|            ROUND_00_15(10, g, h, a, b, c, d, e, f);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  407|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  408|  6.42M|            T1 = X[11] = l;
  409|  6.42M|            ROUND_00_15(11, f, g, h, a, b, c, d, e);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  410|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  411|  6.42M|            T1 = X[12] = l;
  412|  6.42M|            ROUND_00_15(12, e, f, g, h, a, b, c, d);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  413|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  414|  6.42M|            T1 = X[13] = l;
  415|  6.42M|            ROUND_00_15(13, d, e, f, g, h, a, b, c);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  416|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  417|  6.42M|            T1 = X[14] = l;
  418|  6.42M|            ROUND_00_15(14, c, d, e, f, g, h, a, b);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  419|  6.42M|            (void)HOST_c2l(data, l);
  ------------------
  |  |  134|  6.42M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  6.42M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  6.42M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  6.42M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
  420|  6.42M|            T1 = X[15] = l;
  421|  6.42M|            ROUND_00_15(15, b, c, d, e, f, g, h, a);
  ------------------
  |  |  292|  6.42M|    do {                                             \
  |  |  293|  6.42M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  208|  6.42M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  ------------------
  |  |  |  |  217|  6.42M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  294|  6.42M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  205|  6.42M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  6.42M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  220|  6.42M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  295|  6.42M|        d += T1;                                     \
  |  |  296|  6.42M|        h += T1;                                     \
  |  |  297|  6.42M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (297:14): [Folded, False: 6.42M]
  |  |  ------------------
  ------------------
  422|  6.42M|        }
  423|       |
  424|  44.9M|        for (i = 16; i < 64; i += 8) {
  ------------------
  |  Branch (424:22): [True: 38.5M, False: 6.42M]
  ------------------
  425|  38.5M|            ROUND_16_63(i + 0, a, b, c, d, e, f, g, h, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  426|  38.5M|            ROUND_16_63(i + 1, h, a, b, c, d, e, f, g, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  427|  38.5M|            ROUND_16_63(i + 2, g, h, a, b, c, d, e, f, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  428|  38.5M|            ROUND_16_63(i + 3, f, g, h, a, b, c, d, e, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  429|  38.5M|            ROUND_16_63(i + 4, e, f, g, h, a, b, c, d, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  430|  38.5M|            ROUND_16_63(i + 5, d, e, f, g, h, a, b, c, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  431|  38.5M|            ROUND_16_63(i + 6, c, d, e, f, g, h, a, b, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  432|  38.5M|            ROUND_16_63(i + 7, b, c, d, e, f, g, h, a, X);
  ------------------
  |  |  300|  38.5M|    do {                                                   \
  |  |  301|  38.5M|        s0 = X[(i + 1) & 0x0f];                            \
  |  |  302|  38.5M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  211|  38.5M|#define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  303|  38.5M|        s1 = X[(i + 14) & 0x0f];                           \
  |  |  304|  38.5M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  214|  38.5M|#define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  305|  38.5M|        T1 = X[(i) & 0x0f] += s0 + s1 + X[(i + 9) & 0x0f]; \
  |  |  306|  38.5M|        ROUND_00_15(i, a, b, c, d, e, f, g, h);            \
  |  |  ------------------
  |  |  |  |  292|  38.5M|    do {                                             \
  |  |  |  |  293|  38.5M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  208|  38.5M|#define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K256[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  217|  38.5M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  294|  38.5M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  205|  38.5M|#define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  38.5M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  220|  38.5M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  295|  38.5M|        d += T1;                                     \
  |  |  |  |  296|  38.5M|        h += T1;                                     \
  |  |  |  |  297|  38.5M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (297:14): [Folded, False: 38.5M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  307|  38.5M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (307:14): [Folded, False: 38.5M]
  |  |  ------------------
  ------------------
  433|  38.5M|        }
  434|       |
  435|  6.42M|        ctx->h[0] += a;
  436|  6.42M|        ctx->h[1] += b;
  437|  6.42M|        ctx->h[2] += c;
  438|  6.42M|        ctx->h[3] += d;
  439|  6.42M|        ctx->h[4] += e;
  440|  6.42M|        ctx->h[5] += f;
  441|  6.42M|        ctx->h[6] += g;
  442|  6.42M|        ctx->h[7] += h;
  443|  6.42M|    }
  444|  15.6k|}

ossl_sha3_reset:
   30|    174|{
   31|       |#if defined(__s390x__) && defined(OPENSSL_CPUID_OBJ)
   32|       |    if (!(OPENSSL_s390xcap_P.stfle[1] & S390X_CAPBIT(S390X_MSA12)))
   33|       |#endif
   34|    174|        memset(ctx->A, 0, sizeof(ctx->A));
   35|    174|    ctx->bufsz = 0;
   36|    174|    ctx->xof_state = XOF_STATE_INIT;
  ------------------
  |  |   35|    174|#define XOF_STATE_INIT 0
  ------------------
   37|    174|}
ossl_sha3_init:
   40|     59|{
   41|     59|    size_t bsz = SHA3_BLOCKSIZE(bitlen);
  ------------------
  |  |   21|     59|#define SHA3_BLOCKSIZE(bitlen) (KECCAK1600_WIDTH - bitlen * 2) / 8
  |  |  ------------------
  |  |  |  |   18|     59|#define KECCAK1600_WIDTH 1600
  |  |  ------------------
  ------------------
   42|       |
   43|     59|    if (bsz <= sizeof(ctx->buf)) {
  ------------------
  |  Branch (43:9): [True: 59, False: 0]
  ------------------
   44|     59|        ossl_sha3_reset(ctx);
   45|     59|        ctx->block_size = bsz;
   46|     59|        ctx->md_size = bitlen / 8;
   47|     59|        ctx->pad = pad;
   48|     59|        return 1;
   49|     59|    }
   50|       |
   51|      0|    return 0;
   52|     59|}
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|    118|{
   69|    118|    const size_t bsz = ctx->block_size;
   70|    118|    size_t num, rem;
   71|       |
   72|    118|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   24|    118|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 118]
  |  |  ------------------
  ------------------
   73|      0|        return 1;
   74|       |
   75|    118|    if (!(ctx->xof_state == XOF_STATE_INIT || ctx->xof_state == XOF_STATE_ABSORB))
  ------------------
  |  |   35|    236|#define XOF_STATE_INIT 0
  ------------------
                  if (!(ctx->xof_state == XOF_STATE_INIT || ctx->xof_state == XOF_STATE_ABSORB))
  ------------------
  |  |   36|     59|#define XOF_STATE_ABSORB 1
  ------------------
  |  Branch (75:11): [True: 59, False: 59]
  |  Branch (75:47): [True: 59, False: 0]
  ------------------
   76|      0|        return 0;
   77|       |
   78|       |    /* Is there anything in the buffer already ? */
   79|    118|    if ((num = ctx->bufsz) != 0) {
  ------------------
  |  Branch (79:9): [True: 59, False: 59]
  ------------------
   80|       |        /* Calculate how much space is left in the buffer */
   81|     59|        rem = bsz - num;
   82|       |        /* If the new input does not fill the buffer then just add it */
   83|     59|        if (len < rem) {
  ------------------
  |  Branch (83:13): [True: 0, False: 59]
  ------------------
   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|     59|        memcpy(ctx->buf + num, inp, rem);
   90|       |        /* Update the input pointer */
   91|     59|        inp += rem;
   92|     59|        len -= rem;
   93|     59|        ctx->meth.absorb(ctx, ctx->buf, bsz);
   94|     59|        ctx->bufsz = 0;
   95|     59|        ctx->xof_state = XOF_STATE_ABSORB;
  ------------------
  |  |   36|     59|#define XOF_STATE_ABSORB 1
  ------------------
   96|     59|    }
   97|       |    /* Absorb the input - rem = leftover part of the input < blocksize) */
   98|    118|    rem = ctx->meth.absorb(ctx, inp, len);
   99|    118|    if (len >= bsz)
  ------------------
  |  Branch (99:9): [True: 118, False: 0]
  ------------------
  100|    118|        ctx->xof_state = XOF_STATE_ABSORB;
  ------------------
  |  |   36|    118|#define XOF_STATE_ABSORB 1
  ------------------
  101|       |    /* Copy the leftover bit of the input into the buffer */
  102|    118|    if (ossl_likely(rem > 0)) {
  ------------------
  |  |   23|    118|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 113, False: 5]
  |  |  ------------------
  ------------------
  103|    113|        memcpy(ctx->buf, inp + len - rem, rem);
  104|    113|        ctx->bufsz = rem;
  105|    113|    }
  106|    118|    return 1;
  107|    118|}
ossl_sha3_final:
  115|     59|{
  116|     59|    int ret;
  117|       |
  118|     59|    if (ctx->xof_state == XOF_STATE_SQUEEZE
  ------------------
  |  |   38|    118|#define XOF_STATE_SQUEEZE 3
  ------------------
  |  Branch (118:9): [True: 0, False: 59]
  ------------------
  119|     59|        || ctx->xof_state == XOF_STATE_FINAL)
  ------------------
  |  |   37|     59|#define XOF_STATE_FINAL 2
  ------------------
  |  Branch (119:12): [True: 0, False: 59]
  ------------------
  120|      0|        return 0;
  121|     59|    if (outlen == 0)
  ------------------
  |  Branch (121:9): [True: 0, False: 59]
  ------------------
  122|      0|        return 1;
  123|       |
  124|     59|    ret = ctx->meth.final(ctx, out, outlen);
  125|     59|    ctx->xof_state = XOF_STATE_FINAL;
  ------------------
  |  |   37|     59|#define XOF_STATE_FINAL 2
  ------------------
  126|     59|    return ret;
  127|     59|}
ossl_sha3_absorb_default:
  143|    177|{
  144|    177|    return SHA3_absorb(ctx->A, inp, len, ctx->block_size);
  145|    177|}
ossl_sha3_final_default:
  152|     59|{
  153|     59|    size_t bsz = ctx->block_size;
  154|     59|    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|     59|    memset(ctx->buf + num, 0, bsz - num);
  162|     59|    ctx->buf[num] = ctx->pad;
  163|     59|    ctx->buf[bsz - 1] |= 0x80;
  164|       |
  165|     59|    (void)SHA3_absorb(ctx->A, ctx->buf, bsz, bsz);
  166|       |
  167|     59|    SHA3_squeeze(ctx->A, out, outlen, bsz, 0);
  168|     59|    return 1;
  169|     59|}

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|     28|{
  115|     28|    c->h[0] = U64(0xcbbb9d5dc1059ed8);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  116|     28|    c->h[1] = U64(0x629a292a367cd507);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  117|     28|    c->h[2] = U64(0x9159015a3070dd17);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  118|     28|    c->h[3] = U64(0x152fecd8f70e5939);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  119|     28|    c->h[4] = U64(0x67332667ffc00b31);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  120|     28|    c->h[5] = U64(0x8eb44a8768581511);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  121|     28|    c->h[6] = U64(0xdb0c2e0d64f98fa7);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  122|     28|    c->h[7] = U64(0x47b5481dbefa4fa4);
  ------------------
  |  |   72|     28|#define U64(C) C##ULL
  ------------------
  123|       |
  124|     28|    c->Nl = 0;
  125|     28|    c->Nh = 0;
  126|     28|    c->num = 0;
  127|     28|    c->md_len = SHA384_DIGEST_LENGTH;
  ------------------
  |  |   88|     28|#define SHA384_DIGEST_LENGTH 48
  ------------------
  128|     28|    return 1;
  129|     28|}
SHA512_Init:
  132|  7.97k|{
  133|  7.97k|    c->h[0] = U64(0x6a09e667f3bcc908);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  134|  7.97k|    c->h[1] = U64(0xbb67ae8584caa73b);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  135|  7.97k|    c->h[2] = U64(0x3c6ef372fe94f82b);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  136|  7.97k|    c->h[3] = U64(0xa54ff53a5f1d36f1);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  137|  7.97k|    c->h[4] = U64(0x510e527fade682d1);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  138|  7.97k|    c->h[5] = U64(0x9b05688c2b3e6c1f);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  139|  7.97k|    c->h[6] = U64(0x1f83d9abfb41bd6b);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  140|  7.97k|    c->h[7] = U64(0x5be0cd19137e2179);
  ------------------
  |  |   72|  7.97k|#define U64(C) C##ULL
  ------------------
  141|       |
  142|  7.97k|    c->Nl = 0;
  143|  7.97k|    c->Nh = 0;
  144|  7.97k|    c->num = 0;
  145|  7.97k|    c->md_len = SHA512_DIGEST_LENGTH;
  ------------------
  |  |   89|  7.97k|#define SHA512_DIGEST_LENGTH 64
  ------------------
  146|  7.97k|    return 1;
  147|  7.97k|}
SHA512_Final:
  163|  4.00k|{
  164|  4.00k|    unsigned char *p = (unsigned char *)c->u.p;
  165|  4.00k|    size_t n = c->num;
  166|       |
  167|  4.00k|    p[n] = 0x80; /* There always is a room for one */
  168|  4.00k|    n++;
  169|  4.00k|    if (n > (sizeof(c->u) - 16)) {
  ------------------
  |  Branch (169:9): [True: 39, False: 3.96k]
  ------------------
  170|     39|        memset(p + n, 0, sizeof(c->u) - n);
  171|     39|        n = 0;
  172|     39|        sha512_block_data_order(c, p, 1);
  173|     39|    }
  174|       |
  175|  4.00k|    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|  4.00k|    uint8_t *cu = p + sizeof(c->u) - 16;
  181|       |
  182|  4.00k|    cu = OPENSSL_store_u64_be(cu, (uint64_t)c->Nh);
  183|  4.00k|    cu = OPENSSL_store_u64_be(cu, (uint64_t)c->Nl);
  184|  4.00k|#endif
  185|       |
  186|  4.00k|    sha512_block_data_order(c, p, 1);
  187|       |
  188|  4.00k|    if (out == NULL)
  ------------------
  |  Branch (188:9): [True: 0, False: 4.00k]
  ------------------
  189|      0|        return 0;
  190|       |
  191|       |    /* Let compiler decide if it's appropriate to unroll... */
  192|  4.00k|    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: 4.00k]
  ------------------
  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: 4.00k]
  ------------------
  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|     14|    case SHA384_DIGEST_LENGTH:
  ------------------
  |  |   88|     14|#define SHA384_DIGEST_LENGTH 48
  ------------------
  |  Branch (199:5): [True: 14, False: 3.98k]
  ------------------
  200|     14|        OUTPUT_RESULT(out, SHA384_DIGEST_LENGTH);
  ------------------
  |  |  159|     98|    for (n = 0; n < (len / 8); n++) \
  |  |  ------------------
  |  |  |  Branch (159:17): [True: 84, False: 14]
  |  |  ------------------
  |  |  160|     84|    md = OPENSSL_store_u64_be(md, (uint64_t)c->h[n])
  ------------------
  201|     14|        break;
  202|  3.98k|    case SHA512_DIGEST_LENGTH:
  ------------------
  |  |   89|  3.98k|#define SHA512_DIGEST_LENGTH 64
  ------------------
  |  Branch (202:5): [True: 3.98k, False: 16]
  ------------------
  203|  3.98k|        OUTPUT_RESULT(out, SHA512_DIGEST_LENGTH);
  ------------------
  |  |  159|  35.8k|    for (n = 0; n < (len / 8); n++) \
  |  |  ------------------
  |  |  |  Branch (159:17): [True: 31.8k, False: 3.98k]
  |  |  ------------------
  |  |  160|  31.8k|    md = OPENSSL_store_u64_be(md, (uint64_t)c->h[n])
  ------------------
  204|  3.98k|        break;
  205|      1|    case SHA224_DIGEST_LENGTH: {
  ------------------
  |  |   86|      1|#define SHA224_DIGEST_LENGTH 28
  ------------------
  |  Branch (205:5): [True: 1, False: 4.00k]
  ------------------
  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: 4.00k]
  ------------------
  223|      0|        return 0;
  224|  4.00k|    }
  225|       |
  226|  4.00k|    return 1;
  227|  4.00k|}
SHA384_Final:
  230|     14|{
  231|     14|    return SHA512_Final(md, c);
  232|     14|}
SHA512_Update_thunk:
  235|  8.00k|{
  236|  8.00k|    SHA512_CTX *c = (SHA512_CTX *)cp;
  237|  8.00k|    SHA_LONG64 l;
  238|  8.00k|    unsigned char *p = c->u.p;
  239|       |
  240|  8.00k|    if (len == 0)
  ------------------
  |  Branch (240:9): [True: 0, False: 8.00k]
  ------------------
  241|      0|        return 1;
  242|       |
  243|  8.00k|    l = (c->Nl + (((SHA_LONG64)len) << 3)) & U64(0xffffffffffffffff);
  ------------------
  |  |   72|  8.00k|#define U64(C) C##ULL
  ------------------
  244|  8.00k|    if (l < c->Nl)
  ------------------
  |  Branch (244:9): [True: 0, False: 8.00k]
  ------------------
  245|      0|        c->Nh++;
  246|  8.00k|    if (sizeof(len) >= 8)
  ------------------
  |  Branch (246:9): [True: 8.00k, Folded]
  ------------------
  247|  8.00k|        c->Nh += (((SHA_LONG64)len) >> 61);
  248|  8.00k|    c->Nl = l;
  249|       |
  250|  8.00k|    if (c->num != 0) {
  ------------------
  |  Branch (250:9): [True: 0, False: 8.00k]
  ------------------
  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|  8.00k|    if (len >= sizeof(c->u)) {
  ------------------
  |  Branch (263:9): [True: 8.00k, 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|  8.00k|            sha512_block_data_order(c, data, len / sizeof(c->u)),
  273|  8.00k|                data += len, len %= sizeof(c->u), data -= len;
  274|  8.00k|    }
  275|       |
  276|  8.00k|    if (len != 0)
  ------------------
  |  Branch (276:9): [True: 95, False: 7.90k]
  ------------------
  277|     95|        memcpy(p, data, len), c->num = (int)len;
  278|       |
  279|  8.00k|    return 1;
  280|  8.00k|}
sha512.c:sha512_block_data_order:
  707|  12.0k|{
  708|  12.0k|    const SHA_LONG64 *W = in;
  709|  12.0k|    SHA_LONG64 a, b, c, d, e, f, g, h, s0, s1, T1;
  710|  12.0k|    SHA_LONG64 X[16];
  711|  12.0k|    int i;
  712|       |
  713|  3.86M|    while (num--) {
  ------------------
  |  Branch (713:12): [True: 3.85M, False: 12.0k]
  ------------------
  714|       |
  715|  3.85M|        a = ctx->h[0];
  716|  3.85M|        b = ctx->h[1];
  717|  3.85M|        c = ctx->h[2];
  718|  3.85M|        d = ctx->h[3];
  719|  3.85M|        e = ctx->h[4];
  720|  3.85M|        f = ctx->h[5];
  721|  3.85M|        g = ctx->h[6];
  722|  3.85M|        h = ctx->h[7];
  723|       |
  724|       |#ifdef B_ENDIAN
  725|       |        T1 = X[0] = W[0];
  726|       |        ROUND_00_15(0, a, b, c, d, e, f, g, h);
  727|       |        T1 = X[1] = W[1];
  728|       |        ROUND_00_15(1, h, a, b, c, d, e, f, g);
  729|       |        T1 = X[2] = W[2];
  730|       |        ROUND_00_15(2, g, h, a, b, c, d, e, f);
  731|       |        T1 = X[3] = W[3];
  732|       |        ROUND_00_15(3, f, g, h, a, b, c, d, e);
  733|       |        T1 = X[4] = W[4];
  734|       |        ROUND_00_15(4, e, f, g, h, a, b, c, d);
  735|       |        T1 = X[5] = W[5];
  736|       |        ROUND_00_15(5, d, e, f, g, h, a, b, c);
  737|       |        T1 = X[6] = W[6];
  738|       |        ROUND_00_15(6, c, d, e, f, g, h, a, b);
  739|       |        T1 = X[7] = W[7];
  740|       |        ROUND_00_15(7, b, c, d, e, f, g, h, a);
  741|       |        T1 = X[8] = W[8];
  742|       |        ROUND_00_15(8, a, b, c, d, e, f, g, h);
  743|       |        T1 = X[9] = W[9];
  744|       |        ROUND_00_15(9, h, a, b, c, d, e, f, g);
  745|       |        T1 = X[10] = W[10];
  746|       |        ROUND_00_15(10, g, h, a, b, c, d, e, f);
  747|       |        T1 = X[11] = W[11];
  748|       |        ROUND_00_15(11, f, g, h, a, b, c, d, e);
  749|       |        T1 = X[12] = W[12];
  750|       |        ROUND_00_15(12, e, f, g, h, a, b, c, d);
  751|       |        T1 = X[13] = W[13];
  752|       |        ROUND_00_15(13, d, e, f, g, h, a, b, c);
  753|       |        T1 = X[14] = W[14];
  754|       |        ROUND_00_15(14, c, d, e, f, g, h, a, b);
  755|       |        T1 = X[15] = W[15];
  756|       |        ROUND_00_15(15, b, c, d, e, f, g, h, a);
  757|       |#else
  758|  3.85M|        T1 = X[0] = PULL64(W[0]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  759|  3.85M|        ROUND_00_15(0, a, b, c, d, e, f, g, h);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  760|  3.85M|        T1 = X[1] = PULL64(W[1]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  761|  3.85M|        ROUND_00_15(1, h, a, b, c, d, e, f, g);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  762|  3.85M|        T1 = X[2] = PULL64(W[2]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  763|  3.85M|        ROUND_00_15(2, g, h, a, b, c, d, e, f);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  764|  3.85M|        T1 = X[3] = PULL64(W[3]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  765|  3.85M|        ROUND_00_15(3, f, g, h, a, b, c, d, e);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  766|  3.85M|        T1 = X[4] = PULL64(W[4]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  767|  3.85M|        ROUND_00_15(4, e, f, g, h, a, b, c, d);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  768|  3.85M|        T1 = X[5] = PULL64(W[5]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  769|  3.85M|        ROUND_00_15(5, d, e, f, g, h, a, b, c);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  770|  3.85M|        T1 = X[6] = PULL64(W[6]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  771|  3.85M|        ROUND_00_15(6, c, d, e, f, g, h, a, b);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  772|  3.85M|        T1 = X[7] = PULL64(W[7]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  773|  3.85M|        ROUND_00_15(7, b, c, d, e, f, g, h, a);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  774|  3.85M|        T1 = X[8] = PULL64(W[8]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  775|  3.85M|        ROUND_00_15(8, a, b, c, d, e, f, g, h);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  776|  3.85M|        T1 = X[9] = PULL64(W[9]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  777|  3.85M|        ROUND_00_15(9, h, a, b, c, d, e, f, g);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  778|  3.85M|        T1 = X[10] = PULL64(W[10]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  779|  3.85M|        ROUND_00_15(10, g, h, a, b, c, d, e, f);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  780|  3.85M|        T1 = X[11] = PULL64(W[11]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  781|  3.85M|        ROUND_00_15(11, f, g, h, a, b, c, d, e);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  782|  3.85M|        T1 = X[12] = PULL64(W[12]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  783|  3.85M|        ROUND_00_15(12, e, f, g, h, a, b, c, d);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  784|  3.85M|        T1 = X[13] = PULL64(W[13]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  785|  3.85M|        ROUND_00_15(13, d, e, f, g, h, a, b, c);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  786|  3.85M|        T1 = X[14] = PULL64(W[14]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  787|  3.85M|        ROUND_00_15(14, c, d, e, f, g, h, a, b);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  788|  3.85M|        T1 = X[15] = PULL64(W[15]);
  ------------------
  |  |  521|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#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))
  |  |  ------------------
  |  |  |  |  520|  3.85M|#define B(x, j) (((SHA_LONG64)(*(((const unsigned char *)(&x)) + j))) << ((7 - j) * 8))
  |  |  ------------------
  ------------------
  789|  3.85M|        ROUND_00_15(15, b, c, d, e, f, g, h, a);
  ------------------
  |  |  684|  3.85M|    do {                                             \
  |  |  685|  3.85M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  530|  3.85M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  ------------------
  |  |  |  |  539|  3.85M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  ------------------
  |  |  686|  3.85M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  527|  3.85M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  3.85M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  ------------------
  |  |  |  |  542|  3.85M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  ------------------
  |  |  687|  3.85M|        d += T1;                                     \
  |  |  688|  3.85M|        h += T1;                                     \
  |  |  689|  3.85M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (689:14): [Folded, False: 3.85M]
  |  |  ------------------
  ------------------
  790|  3.85M|#endif
  791|       |
  792|  19.2M|        for (i = 16; i < 80; i += 16) {
  ------------------
  |  Branch (792:22): [True: 15.4M, False: 3.85M]
  ------------------
  793|  15.4M|            ROUND_16_80(i, 0, a, b, c, d, e, f, g, h, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  794|  15.4M|            ROUND_16_80(i, 1, h, a, b, c, d, e, f, g, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  795|  15.4M|            ROUND_16_80(i, 2, g, h, a, b, c, d, e, f, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  796|  15.4M|            ROUND_16_80(i, 3, f, g, h, a, b, c, d, e, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  797|  15.4M|            ROUND_16_80(i, 4, e, f, g, h, a, b, c, d, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  798|  15.4M|            ROUND_16_80(i, 5, d, e, f, g, h, a, b, c, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  799|  15.4M|            ROUND_16_80(i, 6, c, d, e, f, g, h, a, b, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  800|  15.4M|            ROUND_16_80(i, 7, b, c, d, e, f, g, h, a, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  801|  15.4M|            ROUND_16_80(i, 8, a, b, c, d, e, f, g, h, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  802|  15.4M|            ROUND_16_80(i, 9, h, a, b, c, d, e, f, g, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  803|  15.4M|            ROUND_16_80(i, 10, g, h, a, b, c, d, e, f, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  804|  15.4M|            ROUND_16_80(i, 11, f, g, h, a, b, c, d, e, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  805|  15.4M|            ROUND_16_80(i, 12, e, f, g, h, a, b, c, d, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  806|  15.4M|            ROUND_16_80(i, 13, d, e, f, g, h, a, b, c, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  807|  15.4M|            ROUND_16_80(i, 14, c, d, e, f, g, h, a, b, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  808|  15.4M|            ROUND_16_80(i, 15, b, c, d, e, f, g, h, a, X);
  ------------------
  |  |  692|  15.4M|    do {                                                   \
  |  |  693|  15.4M|        s0 = X[(j + 1) & 0x0f];                            \
  |  |  694|  15.4M|        s0 = sigma0(s0);                                   \
  |  |  ------------------
  |  |  |  |  533|  15.4M|#define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  695|  15.4M|        s1 = X[(j + 14) & 0x0f];                           \
  |  |  696|  15.4M|        s1 = sigma1(s1);                                   \
  |  |  ------------------
  |  |  |  |  536|  15.4M|#define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  |  |               #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
  |  |  |  |  ------------------
  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  697|  15.4M|        T1 = X[(j) & 0x0f] += s0 + s1 + X[(j + 9) & 0x0f]; \
  |  |  698|  15.4M|        ROUND_00_15(i + j, a, b, c, d, e, f, g, h);        \
  |  |  ------------------
  |  |  |  |  684|  15.4M|    do {                                             \
  |  |  |  |  685|  15.4M|        T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  530|  15.4M|#define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       T1 += h + Sigma1(e) + Ch(e, f, g) + K512[i]; \
  |  |  |  |  ------------------
  |  |  |  |  |  |  539|  15.4M|#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  686|  15.4M|        h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  527|  15.4M|#define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  524|  15.4M|#define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |                       h = Sigma0(a) + Maj(a, b, c);                \
  |  |  |  |  ------------------
  |  |  |  |  |  |  542|  15.4M|#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
  |  |  |  |  ------------------
  |  |  |  |  687|  15.4M|        d += T1;                                     \
  |  |  |  |  688|  15.4M|        h += T1;                                     \
  |  |  |  |  689|  15.4M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (689:14): [Folded, False: 15.4M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  699|  15.4M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (699:14): [Folded, False: 15.4M]
  |  |  ------------------
  ------------------
  809|  15.4M|        }
  810|       |
  811|  3.85M|        ctx->h[0] += a;
  812|  3.85M|        ctx->h[1] += b;
  813|  3.85M|        ctx->h[2] += c;
  814|  3.85M|        ctx->h[3] += d;
  815|  3.85M|        ctx->h[4] += e;
  816|  3.85M|        ctx->h[5] += f;
  817|  3.85M|        ctx->h[6] += g;
  818|  3.85M|        ctx->h[7] += h;
  819|       |
  820|  3.85M|        W += SHA_LBLOCK;
  ------------------
  |  |   36|  3.85M|#define SHA_LBLOCK 16
  ------------------
  821|  3.85M|    }
  822|  12.0k|}

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

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|    176|{
   17|    176|    memset(c, 0, sizeof(*c));
   18|    176|    c->A = SM3_A;
  ------------------
  |  |  129|    176|#define SM3_A 0x7380166fUL
  ------------------
   19|    176|    c->B = SM3_B;
  ------------------
  |  |  130|    176|#define SM3_B 0x4914b2b9UL
  ------------------
   20|    176|    c->C = SM3_C;
  ------------------
  |  |  131|    176|#define SM3_C 0x172442d7UL
  ------------------
   21|    176|    c->D = SM3_D;
  ------------------
  |  |  132|    176|#define SM3_D 0xda8a0600UL
  ------------------
   22|    176|    c->E = SM3_E;
  ------------------
  |  |  133|    176|#define SM3_E 0xa96f30bcUL
  ------------------
   23|    176|    c->F = SM3_F;
  ------------------
  |  |  134|    176|#define SM3_F 0x163138aaUL
  ------------------
   24|    176|    c->G = SM3_G;
  ------------------
  |  |  135|    176|#define SM3_G 0xe38dee4dUL
  ------------------
   25|    176|    c->H = SM3_H;
  ------------------
  |  |  136|    176|#define SM3_H 0xb0fb0e4eUL
  ------------------
   26|    176|    return 1;
   27|    176|}
ossl_sm3_block_data_order:
   30|    312|{
   31|    312|    const unsigned char *data = p;
   32|    312|    register unsigned MD32_REG_T A, B, C, D, E, F, G, H;
   33|       |
   34|    312|    unsigned MD32_REG_T W00, W01, W02, W03, W04, W05, W06, W07,
   35|    312|        W08, W09, W10, W11, W12, W13, W14, W15;
   36|       |
   37|  3.91M|    for (; num--;) {
  ------------------
  |  Branch (37:12): [True: 3.91M, False: 312]
  ------------------
   38|       |
   39|  3.91M|        A = ctx->A;
   40|  3.91M|        B = ctx->B;
   41|  3.91M|        C = ctx->C;
   42|  3.91M|        D = ctx->D;
   43|  3.91M|        E = ctx->E;
   44|  3.91M|        F = ctx->F;
   45|  3.91M|        G = ctx->G;
   46|  3.91M|        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.91M|        (void)HOST_c2l(data, W00);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   53|  3.91M|        (void)HOST_c2l(data, W01);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   54|  3.91M|        (void)HOST_c2l(data, W02);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   55|  3.91M|        (void)HOST_c2l(data, W03);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   56|  3.91M|        (void)HOST_c2l(data, W04);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   57|  3.91M|        (void)HOST_c2l(data, W05);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   58|  3.91M|        (void)HOST_c2l(data, W06);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   59|  3.91M|        (void)HOST_c2l(data, W07);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   60|  3.91M|        (void)HOST_c2l(data, W08);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   61|  3.91M|        (void)HOST_c2l(data, W09);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   62|  3.91M|        (void)HOST_c2l(data, W10);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   63|  3.91M|        (void)HOST_c2l(data, W11);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   64|  3.91M|        (void)HOST_c2l(data, W12);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   65|  3.91M|        (void)HOST_c2l(data, W13);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   66|  3.91M|        (void)HOST_c2l(data, W14);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   67|  3.91M|        (void)HOST_c2l(data, W15);
  ------------------
  |  |  134|  3.91M|#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
  |  |  135|  3.91M|    l |= (((unsigned long)(*((c)++))) << 16),                    \
  |  |  136|  3.91M|    l |= (((unsigned long)(*((c)++))) << 8),                     \
  |  |  137|  3.91M|    l |= (((unsigned long)(*((c)++)))))
  ------------------
   68|       |
   69|  3.91M|        R1(A, B, C, D, E, F, G, H, 0x79CC4519, W00, W00 ^ W04);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|  3.91M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   71|  3.91M|        R1(D, A, B, C, H, E, F, G, 0xF3988A32, W01, W01 ^ W05);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|  3.91M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   73|  3.91M|        R1(C, D, A, B, G, H, E, F, 0xE7311465, W02, W02 ^ W06);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   74|  3.91M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   75|  3.91M|        R1(B, C, D, A, F, G, H, E, 0xCE6228CB, W03, W03 ^ W07);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|  3.91M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   77|  3.91M|        R1(A, B, C, D, E, F, G, H, 0x9CC45197, W04, W04 ^ W08);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   78|  3.91M|        W04 = EXPAND(W04, W11, W01, W07, W14);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   79|  3.91M|        R1(D, A, B, C, H, E, F, G, 0x3988A32F, W05, W05 ^ W09);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|  3.91M|        W05 = EXPAND(W05, W12, W02, W08, W15);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   81|  3.91M|        R1(C, D, A, B, G, H, E, F, 0x7311465E, W06, W06 ^ W10);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|  3.91M|        W06 = EXPAND(W06, W13, W03, W09, W00);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   83|  3.91M|        R1(B, C, D, A, F, G, H, E, 0xE6228CBC, W07, W07 ^ W11);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|  3.91M|        W07 = EXPAND(W07, W14, W04, W10, W01);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   85|  3.91M|        R1(A, B, C, D, E, F, G, H, 0xCC451979, W08, W08 ^ W12);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   86|  3.91M|        W08 = EXPAND(W08, W15, W05, W11, W02);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   87|  3.91M|        R1(D, A, B, C, H, E, F, G, 0x988A32F3, W09, W09 ^ W13);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|  3.91M|        W09 = EXPAND(W09, W00, W06, W12, W03);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   89|  3.91M|        R1(C, D, A, B, G, H, E, F, 0x311465E7, W10, W10 ^ W14);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|  3.91M|        W10 = EXPAND(W10, W01, W07, W13, W04);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   91|  3.91M|        R1(B, C, D, A, F, G, H, E, 0x6228CBCE, W11, W11 ^ W15);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|  3.91M|        W11 = EXPAND(W11, W02, W08, W14, W05);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   93|  3.91M|        R1(A, B, C, D, E, F, G, H, 0xC451979C, W12, W12 ^ W00);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|  3.91M|        W12 = EXPAND(W12, W03, W09, W15, W06);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   95|  3.91M|        R1(D, A, B, C, H, E, F, G, 0x88A32F39, W13, W13 ^ W01);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|  3.91M|        W13 = EXPAND(W13, W04, W10, W00, W07);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   97|  3.91M|        R1(C, D, A, B, G, H, E, F, 0x11465E73, W14, W14 ^ W02);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|  3.91M|        W14 = EXPAND(W14, W05, W11, W01, W08);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
   99|  3.91M|        R1(B, C, D, A, F, G, H, E, 0x228CBCE6, W15, W15 ^ W03);
  ------------------
  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  101|  3.91M|#define FF0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  124|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF0, GG0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  102|  3.91M|#define GG0(X, Y, Z) (X ^ Y ^ Z)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  100|  3.91M|        W15 = EXPAND(W15, W06, W12, W02, W09);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  101|  3.91M|        R2(A, B, C, D, E, F, G, H, 0x9D8A7A87, W00, W00 ^ W04);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  102|  3.91M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  103|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x3B14F50F, W01, W01 ^ W05);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|  3.91M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  105|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x7629EA1E, W02, W02 ^ W06);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|  3.91M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  107|  3.91M|        R2(B, C, D, A, F, G, H, E, 0xEC53D43C, W03, W03 ^ W07);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|  3.91M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  109|  3.91M|        R2(A, B, C, D, E, F, G, H, 0xD8A7A879, W04, W04 ^ W08);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|  3.91M|        W04 = EXPAND(W04, W11, W01, W07, W14);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  111|  3.91M|        R2(D, A, B, C, H, E, F, G, 0xB14F50F3, W05, W05 ^ W09);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|  3.91M|        W05 = EXPAND(W05, W12, W02, W08, W15);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  113|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x629EA1E7, W06, W06 ^ W10);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|  3.91M|        W06 = EXPAND(W06, W13, W03, W09, W00);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  115|  3.91M|        R2(B, C, D, A, F, G, H, E, 0xC53D43CE, W07, W07 ^ W11);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|  3.91M|        W07 = EXPAND(W07, W14, W04, W10, W01);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  117|  3.91M|        R2(A, B, C, D, E, F, G, H, 0x8A7A879D, W08, W08 ^ W12);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|  3.91M|        W08 = EXPAND(W08, W15, W05, W11, W02);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  119|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x14F50F3B, W09, W09 ^ W13);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  120|  3.91M|        W09 = EXPAND(W09, W00, W06, W12, W03);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  121|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x29EA1E76, W10, W10 ^ W14);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|  3.91M|        W10 = EXPAND(W10, W01, W07, W13, W04);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  123|  3.91M|        R2(B, C, D, A, F, G, H, E, 0x53D43CEC, W11, W11 ^ W15);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|  3.91M|        W11 = EXPAND(W11, W02, W08, W14, W05);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  125|  3.91M|        R2(A, B, C, D, E, F, G, H, 0xA7A879D8, W12, W12 ^ W00);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|  3.91M|        W12 = EXPAND(W12, W03, W09, W15, W06);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  127|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x4F50F3B1, W13, W13 ^ W01);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|  3.91M|        W13 = EXPAND(W13, W04, W10, W00, W07);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  129|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x9EA1E762, W14, W14 ^ W02);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|  3.91M|        W14 = EXPAND(W14, W05, W11, W01, W08);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  131|  3.91M|        R2(B, C, D, A, F, G, H, E, 0x3D43CEC5, W15, W15 ^ W03);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|  3.91M|        W15 = EXPAND(W15, W06, W12, W02, W09);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  133|  3.91M|        R2(A, B, C, D, E, F, G, H, 0x7A879D8A, W00, W00 ^ W04);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|  3.91M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  135|  3.91M|        R2(D, A, B, C, H, E, F, G, 0xF50F3B14, W01, W01 ^ W05);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|  3.91M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  137|  3.91M|        R2(C, D, A, B, G, H, E, F, 0xEA1E7629, W02, W02 ^ W06);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|  3.91M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  139|  3.91M|        R2(B, C, D, A, F, G, H, E, 0xD43CEC53, W03, W03 ^ W07);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  140|  3.91M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  141|  3.91M|        R2(A, B, C, D, E, F, G, H, 0xA879D8A7, W04, W04 ^ W08);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  142|  3.91M|        W04 = EXPAND(W04, W11, W01, W07, W14);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  143|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x50F3B14F, W05, W05 ^ W09);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|  3.91M|        W05 = EXPAND(W05, W12, W02, W08, W15);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  145|  3.91M|        R2(C, D, A, B, G, H, E, F, 0xA1E7629E, W06, W06 ^ W10);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  146|  3.91M|        W06 = EXPAND(W06, W13, W03, W09, W00);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  147|  3.91M|        R2(B, C, D, A, F, G, H, E, 0x43CEC53D, W07, W07 ^ W11);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  148|  3.91M|        W07 = EXPAND(W07, W14, W04, W10, W01);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  149|  3.91M|        R2(A, B, C, D, E, F, G, H, 0x879D8A7A, W08, W08 ^ W12);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  150|  3.91M|        W08 = EXPAND(W08, W15, W05, W11, W02);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  151|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x0F3B14F5, W09, W09 ^ W13);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  152|  3.91M|        W09 = EXPAND(W09, W00, W06, W12, W03);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  153|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x1E7629EA, W10, W10 ^ W14);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  154|  3.91M|        W10 = EXPAND(W10, W01, W07, W13, W04);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  155|  3.91M|        R2(B, C, D, A, F, G, H, E, 0x3CEC53D4, W11, W11 ^ W15);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  156|  3.91M|        W11 = EXPAND(W11, W02, W08, W14, W05);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  157|  3.91M|        R2(A, B, C, D, E, F, G, H, 0x79D8A7A8, W12, W12 ^ W00);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  158|  3.91M|        W12 = EXPAND(W12, W03, W09, W15, W06);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  159|  3.91M|        R2(D, A, B, C, H, E, F, G, 0xF3B14F50, W13, W13 ^ W01);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  160|  3.91M|        W13 = EXPAND(W13, W04, W10, W00, W07);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  161|  3.91M|        R2(C, D, A, B, G, H, E, F, 0xE7629EA1, W14, W14 ^ W02);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  162|  3.91M|        W14 = EXPAND(W14, W05, W11, W01, W08);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  163|  3.91M|        R2(B, C, D, A, F, G, H, E, 0xCEC53D43, W15, W15 ^ W03);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  164|  3.91M|        W15 = EXPAND(W15, W06, W12, W02, W09);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  165|  3.91M|        R2(A, B, C, D, E, F, G, H, 0x9D8A7A87, W00, W00 ^ W04);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  166|  3.91M|        W00 = EXPAND(W00, W07, W13, W03, W10);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  167|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x3B14F50F, W01, W01 ^ W05);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  168|  3.91M|        W01 = EXPAND(W01, W08, W14, W04, W11);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  169|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x7629EA1E, W02, W02 ^ W06);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  170|  3.91M|        W02 = EXPAND(W02, W09, W15, W05, W12);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  171|  3.91M|        R2(B, C, D, A, F, G, H, E, 0xEC53D43C, W03, W03 ^ W07);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|  3.91M|        W03 = EXPAND(W03, W10, W00, W06, W13);
  ------------------
  |  |  108|  3.91M|    (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |   98|  3.91M|#define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |               #define P1(X) (X ^ ROTATE(X, 15) ^ ROTATE(X, 23))
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                   (P1(W0 ^ W7 ^ ROTATE(W13, 15)) ^ ROTATE(W3, 7) ^ W10)
  |  |  ------------------
  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  ------------------
  ------------------
  173|  3.91M|        R2(A, B, C, D, E, F, G, H, 0xD8A7A879, W04, W04 ^ W08);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  174|  3.91M|        R2(D, A, B, C, H, E, F, G, 0xB14F50F3, W05, W05 ^ W09);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  175|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x629EA1E7, W06, W06 ^ W10);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  176|  3.91M|        R2(B, C, D, A, F, G, H, E, 0xC53D43CE, W07, W07 ^ W11);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|  3.91M|        R2(A, B, C, D, E, F, G, H, 0x8A7A879D, W08, W08 ^ W12);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x14F50F3B, W09, W09 ^ W13);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x29EA1E76, W10, W10 ^ W14);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  180|  3.91M|        R2(B, C, D, A, F, G, H, E, 0x53D43CEC, W11, W11 ^ W15);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  181|  3.91M|        R2(A, B, C, D, E, F, G, H, 0xA7A879D8, W12, W12 ^ W00);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|  3.91M|        R2(D, A, B, C, H, E, F, G, 0x4F50F3B1, W13, W13 ^ W01);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  183|  3.91M|        R2(C, D, A, B, G, H, E, F, 0x9EA1E762, W14, W14 ^ W02);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|  3.91M|        R2(B, C, D, A, F, G, H, E, 0x3D43CEC5, W15, W15 ^ W03);
  ------------------
  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  ------------------
  |  |  |  |  111|  3.91M|    do {                                                           \
  |  |  |  |  112|  3.91M|        const SM3_WORD A12 = ROTATE(A, 12);                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  113|  3.91M|        const SM3_WORD A12_SM = A12 + E + TJ;                      \
  |  |  |  |  114|  3.91M|        const SM3_WORD SS1 = ROTATE(A12_SM, 7);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  115|  3.91M|        const SM3_WORD TT1 = FF(A, B, C) + D + (SS1 ^ A12) + (Wj); \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define FF1(X, Y, Z) ((X & Y) | ((X | Y) & Z))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  116|  3.91M|        const SM3_WORD TT2 = GG(E, F, G) + H + SS1 + Wi;           \
  |  |  |  |  ------------------
  |  |  |  |  |  |  127|  3.91M|    RND(A, B, C, D, E, F, G, H, TJ, Wi, Wj, FF1, GG1)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  105|  3.91M|#define GG1(X, Y, Z) ((Z ^ (X & (Y ^ Z))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  117|  3.91M|        B = ROTATE(B, 9);                                          \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  118|  3.91M|        D = TT1;                                                   \
  |  |  |  |  119|  3.91M|        F = ROTATE(F, 19);                                         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  ------------------
  |  |  |  |  120|  3.91M|        H = P0(TT2);                                               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|  3.91M|#define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |               #define P0(X) (X ^ ROTATE(X, 9) ^ ROTATE(X, 17))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  104|  3.91M|#define ROTATE(a, n) (((a) << (n)) | (((a) & 0xffffffff) >> (32 - (n))))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  121|  3.91M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:14): [Folded, False: 3.91M]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|       |
  186|  3.91M|        ctx->A ^= A;
  187|  3.91M|        ctx->B ^= B;
  188|  3.91M|        ctx->C ^= C;
  189|  3.91M|        ctx->D ^= D;
  190|  3.91M|        ctx->E ^= E;
  191|  3.91M|        ctx->F ^= F;
  192|  3.91M|        ctx->G ^= G;
  193|  3.91M|        ctx->H ^= H;
  194|  3.91M|    }
  195|    312|}

ossl_sa_new:
   59|     49|{
   60|     49|    OPENSSL_SA *res = OPENSSL_zalloc(sizeof(*res));
  ------------------
  |  |  113|     49|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   61|       |
   62|     49|    return res;
   63|     49|}
ossl_sa_get:
  157|  1.97k|{
  158|  1.97k|    int level;
  159|  1.97k|    void **p, *r = NULL;
  160|       |
  161|  1.97k|    if (sa == NULL || sa->nelem == 0)
  ------------------
  |  Branch (161:9): [True: 0, False: 1.97k]
  |  Branch (161:23): [True: 2, False: 1.97k]
  ------------------
  162|      2|        return NULL;
  163|       |
  164|  1.97k|    if (n <= sa->top) {
  ------------------
  |  Branch (164:9): [True: 1.95k, False: 24]
  ------------------
  165|  1.95k|        p = sa->nodes;
  166|  2.54k|        for (level = sa->levels - 1; p != NULL && level > 0; level--)
  ------------------
  |  Branch (166:38): [True: 2.49k, False: 48]
  |  Branch (166:51): [True: 591, False: 1.90k]
  ------------------
  167|    591|            p = (void **)p[(n >> (OPENSSL_SA_BLOCK_BITS * level))
  ------------------
  |  |   34|    591|#define OPENSSL_SA_BLOCK_BITS 4
  ------------------
  168|    591|                & SA_BLOCK_MASK];
  ------------------
  |  |   46|    591|#define SA_BLOCK_MASK (SA_BLOCK_MAX - 1)
  |  |  ------------------
  |  |  |  |   45|    591|#define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|    591|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|  1.95k|        r = p == NULL ? NULL : p[n & SA_BLOCK_MASK];
  ------------------
  |  |   46|  1.90k|#define SA_BLOCK_MASK (SA_BLOCK_MAX - 1)
  |  |  ------------------
  |  |  |  |   45|  1.90k|#define SA_BLOCK_MAX (1 << OPENSSL_SA_BLOCK_BITS)
  |  |  |  |  ------------------
  |  |  |  |  |  |   34|  1.90k|#define OPENSSL_SA_BLOCK_BITS 4
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (169:13): [True: 48, False: 1.90k]
  ------------------
  170|  1.95k|    }
  171|  1.97k|    return r;
  172|  1.97k|}
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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|    501|{
  122|    501|    return internal_copy(sk, NULL, NULL);
  123|    501|}
OPENSSL_sk_new_null:
  126|    680|{
  127|       |    return OPENSSL_sk_new_reserve(NULL, 0);
  128|    680|}
OPENSSL_sk_new:
  131|    172|{
  132|    172|    return OPENSSL_sk_new_reserve(c, 0);
  133|    172|}
OPENSSL_sk_new_reserve:
  227|    852|{
  228|    852|    OPENSSL_STACK *st = OPENSSL_zalloc(sizeof(OPENSSL_STACK));
  ------------------
  |  |  113|    852|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  229|       |
  230|    852|    if (st == NULL)
  ------------------
  |  Branch (230:9): [True: 0, False: 852]
  ------------------
  231|      0|        return NULL;
  232|       |
  233|    852|    st->comp = c;
  234|    852|    st->sorted = 1; /* empty or single-element stack is considered sorted */
  235|       |
  236|    852|    if (n <= 0)
  ------------------
  |  Branch (236:9): [True: 852, False: 0]
  ------------------
  237|    852|        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.01k|{
  261|  1.01k|    if (st != NULL)
  ------------------
  |  Branch (261:9): [True: 1.01k, False: 0]
  ------------------
  262|  1.01k|        st->free_thunk = f_thunk;
  263|       |
  264|  1.01k|    return st;
  265|  1.01k|}
OPENSSL_sk_set_cmp_thunks:
  268|    852|{
  269|    852|    if (st != NULL)
  ------------------
  |  Branch (269:9): [True: 852, False: 0]
  ------------------
  270|    852|        st->cmp_thunk = c_thunk;
  271|       |
  272|    852|    return st;
  273|    852|}
OPENSSL_sk_set_copy_thunks:
  276|    852|{
  277|    852|    if (st != NULL)
  ------------------
  |  Branch (277:9): [True: 852, False: 0]
  ------------------
  278|    852|        st->copy_thunk = cp_thunk;
  279|       |
  280|    852|    return st;
  281|    852|}
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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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);
  ------------------
  |  |  151|      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|    166|{
  481|    166|    int i;
  482|       |
  483|    166|    if (st == NULL)
  ------------------
  |  Branch (483:9): [True: 0, False: 166]
  ------------------
  484|      0|        return;
  485|       |
  486|    168|    for (i = 0; i < st->num; i++)
  ------------------
  |  Branch (486:17): [True: 2, False: 166]
  ------------------
  487|      2|        free_with_thunk(st, func, st->data[i]);
  488|       |
  489|    166|    OPENSSL_sk_free(st);
  490|    166|}
OPENSSL_sk_free:
  493|    667|{
  494|    667|    if (st == NULL)
  ------------------
  |  Branch (494:9): [True: 0, False: 667]
  ------------------
  495|      0|        return;
  496|    667|    OPENSSL_free(st->data);
  ------------------
  |  |  136|    667|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  497|    667|    OPENSSL_free(st);
  ------------------
  |  |  136|    667|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  498|    667|}
OPENSSL_sk_num:
  501|  1.12k|{
  502|  1.12k|    return st == NULL ? -1 : st->num;
  ------------------
  |  Branch (502:12): [True: 0, False: 1.12k]
  ------------------
  503|  1.12k|}
OPENSSL_sk_value:
  506|  3.26k|{
  507|  3.26k|    if (st == NULL || i < 0 || i >= st->num)
  ------------------
  |  Branch (507:9): [True: 0, False: 3.26k]
  |  Branch (507:23): [True: 0, False: 3.26k]
  |  Branch (507:32): [True: 0, False: 3.26k]
  ------------------
  508|      0|        return NULL;
  509|  3.26k|    return (void *)st->data[i];
  510|  3.26k|}
OPENSSL_sk_sort:
  529|    166|{
  530|    166|    if (st != NULL && !st->sorted && st->comp != NULL) {
  ------------------
  |  Branch (530:9): [True: 166, False: 0]
  |  Branch (530:23): [True: 0, False: 166]
  |  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|    166|}
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|    505|{
   65|    505|    OPENSSL_STACK *ret;
   66|    505|    int i;
   67|       |
   68|    505|    if ((ret = OPENSSL_sk_new_null()) == NULL)
  ------------------
  |  Branch (68:9): [True: 0, False: 505]
  ------------------
   69|      0|        goto err;
   70|       |
   71|    505|    if (sk == NULL)
  ------------------
  |  Branch (71:9): [True: 4, False: 501]
  ------------------
   72|      4|        goto done;
   73|       |
   74|       |    /* direct structure assignment */
   75|    501|    *ret = *sk;
   76|    501|    ret->data = NULL;
   77|    501|    ret->num_alloc = 0;
   78|       |
   79|    501|    if (ret->num == 0)
  ------------------
  |  Branch (79:9): [True: 0, False: 501]
  ------------------
   80|      0|        goto done; /* nothing to copy */
   81|       |
   82|    501|    ret->num_alloc = ret->num > min_nodes ? ret->num : min_nodes;
  ------------------
  |  Branch (82:22): [True: 2, False: 499]
  ------------------
   83|    501|    ret->data = OPENSSL_calloc(ret->num_alloc, sizeof(*ret->data));
  ------------------
  |  |  117|    501|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   84|    501|    if (ret->data == NULL)
  ------------------
  |  Branch (84:9): [True: 0, False: 501]
  ------------------
   85|      0|        goto err;
   86|    501|    if (copy_func == NULL) {
  ------------------
  |  Branch (86:9): [True: 501, False: 0]
  ------------------
   87|    501|        memcpy(ret->data, sk->data, sizeof(*ret->data) * ret->num);
   88|    501|    } 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|    505|done:
  106|    505|    return ret;
  107|       |
  108|      0|err:
  109|      0|    OPENSSL_sk_free(ret);
  110|       |    return NULL;
  111|    501|}
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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_realloc_array(addr, num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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;
  ------------------
  |  |  151|      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);
  ------------------
  |  |  113|      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);
  |  |  ------------------
  |  |  |  |  117|      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);
  |  |  ------------------
  |  |  |  |  117|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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))
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
  |  |  ------------------
  |  |  |  |  360|       |#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))
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|  1.74k|{
  260|  1.74k|    MASTER_KEY_ENTRY *mkey;
  261|  1.74k|    CTX_TABLE_ENTRY ctxd;
  262|       |
  263|  1.74k|    ctx = (ctx == CRYPTO_THREAD_NO_CONTEXT) ? NULL : ossl_lib_ctx_get_concrete(ctx);
  ------------------
  |  |   47|  1.74k|#define CRYPTO_THREAD_NO_CONTEXT (void *)1
  ------------------
  |  Branch (263:11): [True: 1.74k, 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|  1.74k|    if (!CRYPTO_THREAD_run_once(&master_once, init_master_key))
  ------------------
  |  Branch (276:9): [True: 0, False: 1.74k]
  ------------------
  277|      0|        return NULL;
  278|       |
  279|  1.74k|    if (!ossl_assert(id < CRYPTO_THREAD_LOCAL_KEY_MAX))
  ------------------
  |  |   45|  1.74k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|  1.74k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (279:9): [True: 0, False: 1.74k]
  ------------------
  280|      0|        return NULL;
  281|       |
  282|       |    /*
  283|       |     * Get our master table sparse array, indexed by key id
  284|       |     */
  285|  1.74k|    mkey = CRYPTO_THREAD_get_local(&master_key);
  286|  1.74k|    if (mkey == NULL)
  ------------------
  |  Branch (286:9): [True: 1, False: 1.74k]
  ------------------
  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|  1.74k|    if (mkey[id].ctx_table == NULL)
  ------------------
  |  Branch (293:9): [True: 0, False: 1.74k]
  ------------------
  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|  1.74k|    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|  1.74k|    return ctxd;
  310|  1.74k|}
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);
  ------------------
  |  |   47|      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))
  ------------------
  |  |   45|      4|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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:
  551|  2.75M|{
  552|  2.75M|    return ATOMIC_LOAD_N(pvoid, p, __ATOMIC_ACQUIRE);
  ------------------
  |  |  116|  2.75M|#define ATOMIC_LOAD_N(t, p, o) __atomic_load_n(p, o)
  ------------------
  553|  2.75M|}
ossl_rcu_assign_uptr:
  556|    299|{
  557|    299|    ATOMIC_STORE(pvoid, p, v, __ATOMIC_RELEASE);
  ------------------
  |  |  118|    299|#define ATOMIC_STORE(t, p, v, o) __atomic_store(p, v, o)
  ------------------
  558|    299|}
ossl_rcu_lock_new:
  561|      3|{
  562|      3|    struct rcu_lock_st *new;
  563|      3|    pthread_mutex_t *mutexes[3] = { NULL };
  564|      3|    pthread_cond_t *conds[2] = { NULL };
  565|      3|    int i;
  566|       |
  567|       |    /*
  568|       |     * We need a minimum of 2 qp's
  569|       |     */
  570|      3|    if (num_writers < 2)
  ------------------
  |  Branch (570:9): [True: 3, False: 0]
  ------------------
  571|      3|        num_writers = 2;
  572|       |
  573|      3|    ctx = ossl_lib_ctx_get_concrete(ctx);
  574|      3|    if (ctx == NULL)
  ------------------
  |  Branch (574:9): [True: 0, False: 3]
  ------------------
  575|      0|        return 0;
  576|       |
  577|      3|    new = OPENSSL_zalloc(sizeof(*new));
  ------------------
  |  |  113|      3|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  578|      3|    if (new == NULL)
  ------------------
  |  Branch (578:9): [True: 0, False: 3]
  ------------------
  579|      0|        return NULL;
  580|       |
  581|      3|    new->ctx = ctx;
  582|      3|    i = 0;
  583|      3|    mutexes[i] = pthread_mutex_init(&new->write_lock, NULL) == 0 ? &new->write_lock : NULL;
  ------------------
  |  Branch (583:18): [True: 3, False: 0]
  ------------------
  584|      3|    if (mutexes[i++] == NULL)
  ------------------
  |  Branch (584:9): [True: 0, False: 3]
  ------------------
  585|      0|        goto err;
  586|      3|    mutexes[i] = pthread_mutex_init(&new->prior_lock, NULL) == 0 ? &new->prior_lock : NULL;
  ------------------
  |  Branch (586:18): [True: 3, False: 0]
  ------------------
  587|      3|    if (mutexes[i++] == NULL)
  ------------------
  |  Branch (587:9): [True: 0, False: 3]
  ------------------
  588|      0|        goto err;
  589|      3|    mutexes[i] = pthread_mutex_init(&new->alloc_lock, NULL) == 0 ? &new->alloc_lock : NULL;
  ------------------
  |  Branch (589:18): [True: 3, False: 0]
  ------------------
  590|      3|    if (mutexes[i++] == NULL)
  ------------------
  |  Branch (590:9): [True: 0, False: 3]
  ------------------
  591|      0|        goto err;
  592|      3|    conds[i - 3] = pthread_cond_init(&new->prior_signal, NULL) == 0 ? &new->prior_signal : NULL;
  ------------------
  |  Branch (592:20): [True: 3, False: 0]
  ------------------
  593|      3|    if (conds[i - 3] == NULL)
  ------------------
  |  Branch (593:9): [True: 0, False: 3]
  ------------------
  594|      0|        goto err;
  595|      3|    i++;
  596|      3|    conds[i - 3] = pthread_cond_init(&new->alloc_signal, NULL) == 0 ? &new->alloc_signal : NULL;
  ------------------
  |  Branch (596:20): [True: 3, False: 0]
  ------------------
  597|      3|    if (conds[i - 3] == NULL)
  ------------------
  |  Branch (597:9): [True: 0, False: 3]
  ------------------
  598|      0|        goto err;
  599|      3|    i++;
  600|      3|    new->qp_group = allocate_new_qp_group(new, num_writers);
  601|      3|    if (new->qp_group == NULL)
  ------------------
  |  Branch (601:9): [True: 0, False: 3]
  ------------------
  602|      0|        goto err;
  603|       |
  604|      3|    return new;
  605|       |
  606|      0|err:
  607|      0|    for (i = 0; i < 3; i++)
  ------------------
  |  Branch (607:17): [True: 0, False: 0]
  ------------------
  608|      0|        if (mutexes[i] != NULL)
  ------------------
  |  Branch (608:13): [True: 0, False: 0]
  ------------------
  609|      0|            pthread_mutex_destroy(mutexes[i]);
  610|      0|    for (i = 0; i < 2; i++)
  ------------------
  |  Branch (610:17): [True: 0, False: 0]
  ------------------
  611|      0|        if (conds[i] != NULL)
  ------------------
  |  Branch (611:13): [True: 0, False: 0]
  ------------------
  612|      0|            pthread_cond_destroy(conds[i]);
  613|      0|    OPENSSL_free(new->qp_group);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  614|      0|    OPENSSL_free(new);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  615|       |    return NULL;
  616|      3|}
CRYPTO_THREAD_lock_new:
  907|    159|{
  908|    159|#ifdef USE_RWLOCK
  909|    159|    CRYPTO_RWLOCK *lock;
  910|       |
  911|    159|    ossl_init_rwlock_contention_data();
  912|       |
  913|    159|    if ((lock = OPENSSL_zalloc(sizeof(pthread_rwlock_t))) == NULL)
  ------------------
  |  |  113|    159|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  |  Branch (913:9): [True: 0, False: 159]
  ------------------
  914|       |        /* Don't set error, to avoid recursion blowup. */
  915|      0|        return NULL;
  916|       |
  917|    159|    if (pthread_rwlock_init(lock, NULL) != 0) {
  ------------------
  |  Branch (917:9): [True: 0, False: 159]
  ------------------
  918|      0|        OPENSSL_free(lock);
  ------------------
  |  |  136|      0|    CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  919|      0|        return NULL;
  920|      0|    }
  921|       |#else
  922|       |    pthread_mutexattr_t attr;
  923|       |    CRYPTO_RWLOCK *lock;
  924|       |
  925|       |    if ((lock = OPENSSL_zalloc(sizeof(pthread_mutex_t))) == NULL)
  926|       |        /* Don't set error, to avoid recursion blowup. */
  927|       |        return NULL;
  928|       |
  929|       |    /*
  930|       |     * We don't use recursive mutexes, but try to catch errors if we do.
  931|       |     */
  932|       |    pthread_mutexattr_init(&attr);
  933|       |#if !defined(__TANDEM) && !defined(_SPT_MODEL_)
  934|       |#if !defined(NDEBUG) && !defined(OPENSSL_NO_MUTEX_ERRORCHECK)
  935|       |    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
  936|       |#endif
  937|       |#else
  938|       |    /* The SPT Thread Library does not define MUTEX attributes. */
  939|       |#endif
  940|       |
  941|       |    if (pthread_mutex_init(lock, &attr) != 0) {
  942|       |        pthread_mutexattr_destroy(&attr);
  943|       |        OPENSSL_free(lock);
  944|       |        return NULL;
  945|       |    }
  946|       |
  947|       |    pthread_mutexattr_destroy(&attr);
  948|       |#endif
  949|       |
  950|    159|    return lock;
  951|    159|}
CRYPTO_THREAD_read_lock:
  954|  3.47k|{
  955|  3.47k|#ifdef USE_RWLOCK
  956|  3.47k|    if (!ossl_assert(ossl_rwlock_rdlock(lock) == 0))
  ------------------
  |  |   45|  3.47k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|  3.47k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (956:9): [True: 0, False: 3.47k]
  ------------------
  957|      0|        return 0;
  958|       |#else
  959|       |    if (pthread_mutex_lock(lock) != 0) {
  960|       |        assert(errno != EDEADLK && errno != EBUSY);
  961|       |        return 0;
  962|       |    }
  963|       |#endif
  964|       |
  965|  3.47k|    return 1;
  966|  3.47k|}
CRYPTO_THREAD_write_lock:
  969|  2.27k|{
  970|  2.27k|#ifdef USE_RWLOCK
  971|  2.27k|    if (!ossl_assert(ossl_rwlock_wrlock(lock) == 0))
  ------------------
  |  |   45|  2.27k|#define ossl_assert(x) ossl_likely((x) != 0)
  |  |  ------------------
  |  |  |  |   23|  2.27k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  ------------------
  |  Branch (971:9): [True: 0, False: 2.27k]
  ------------------
  972|      0|        return 0;
  973|       |#else
  974|       |    if (pthread_mutex_lock(lock) != 0) {
  975|       |        assert(errno != EDEADLK && errno != EBUSY);
  976|       |        return 0;
  977|       |    }
  978|       |#endif
  979|       |
  980|  2.27k|    return 1;
  981|  2.27k|}
CRYPTO_THREAD_unlock:
  984|  5.74k|{
  985|  5.74k|#ifdef USE_RWLOCK
  986|  5.74k|    if (ossl_rwlock_unlock(lock) != 0)
  ------------------
  |  Branch (986:9): [True: 0, False: 5.74k]
  ------------------
  987|      0|        return 0;
  988|       |#else
  989|       |    if (pthread_mutex_unlock(lock) != 0) {
  990|       |        assert(errno != EPERM);
  991|       |        return 0;
  992|       |    }
  993|       |#endif
  994|       |
  995|  5.74k|    return 1;
  996|  5.74k|}
CRYPTO_THREAD_run_once:
 1014|  6.46k|{
 1015|  6.46k|    if (ossl_unlikely(pthread_once(once, init) != 0))
  ------------------
  |  |   24|  6.46k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 6.46k]
  |  |  ------------------
  ------------------
 1016|      0|        return 0;
 1017|       |
 1018|  6.46k|    return 1;
 1019|  6.46k|}
CRYPTO_THREAD_init_local:
 1022|      4|{
 1023|      4|    if (pthread_key_create(key, cleanup) != 0)
  ------------------
  |  Branch (1023:9): [True: 0, False: 4]
  ------------------
 1024|      0|        return 0;
 1025|       |
 1026|      4|    return 1;
 1027|      4|}
CRYPTO_THREAD_get_local:
 1030|  2.82k|{
 1031|  2.82k|    return pthread_getspecific(*key);
 1032|  2.82k|}
CRYPTO_THREAD_set_local:
 1035|      2|{
 1036|      2|    if (pthread_setspecific(*key, val) != 0)
  ------------------
  |  Branch (1036:9): [True: 0, False: 2]
  ------------------
 1037|      0|        return 0;
 1038|       |
 1039|      2|    return 1;
 1040|      2|}
CRYPTO_atomic_add:
 1061|  1.87k|{
 1062|  1.87k|#if defined(OSSL_USE_GCC_ATOMICS)
 1063|  1.87k|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1063:9): [True: 1.87k, Folded]
  ------------------
 1064|  1.87k|        *ret = __atomic_add_fetch(val, amount, __ATOMIC_ACQ_REL);
 1065|  1.87k|        return 1;
 1066|  1.87k|    }
 1067|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1068|       |    /* This will work for all future Solaris versions. */
 1069|       |    if (ret != NULL) {
 1070|       |        *ret = atomic_add_int_nv((volatile unsigned int *)val, amount);
 1071|       |        return 1;
 1072|       |    }
 1073|       |#endif
 1074|      0|    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
  ------------------
  |  Branch (1074:9): [True: 0, False: 0]
  |  Branch (1074:25): [True: 0, False: 0]
  ------------------
 1075|      0|        return 0;
 1076|       |
 1077|      0|    *val += amount;
 1078|      0|    *ret = *val;
 1079|       |
 1080|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1080:9): [True: 0, False: 0]
  ------------------
 1081|      0|        return 0;
 1082|       |
 1083|      0|    return 1;
 1084|      0|}
CRYPTO_atomic_or:
 1140|      2|{
 1141|      2|#if defined(OSSL_USE_GCC_ATOMICS)
 1142|      2|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1142:9): [True: 2, Folded]
  ------------------
 1143|      2|        *ret = __atomic_or_fetch(val, op, __ATOMIC_ACQ_REL);
 1144|      2|        return 1;
 1145|      2|    }
 1146|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1147|       |    /* This will work for all future Solaris versions. */
 1148|       |    if (ret != NULL) {
 1149|       |        *ret = atomic_or_64_nv(val, op);
 1150|       |        return 1;
 1151|       |    }
 1152|       |#endif
 1153|      0|    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
  ------------------
  |  Branch (1153:9): [True: 0, False: 0]
  |  Branch (1153:25): [True: 0, False: 0]
  ------------------
 1154|      0|        return 0;
 1155|      0|    *val |= op;
 1156|      0|    *ret = *val;
 1157|       |
 1158|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1158:9): [True: 0, False: 0]
  ------------------
 1159|      0|        return 0;
 1160|       |
 1161|      0|    return 1;
 1162|      0|}
CRYPTO_atomic_load:
 1165|  1.92M|{
 1166|  1.92M|#if defined(OSSL_USE_GCC_ATOMICS)
 1167|  1.92M|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1167:9): [True: 1.92M, Folded]
  ------------------
 1168|  1.92M|        __atomic_load(val, ret, __ATOMIC_ACQUIRE);
 1169|  1.92M|        return 1;
 1170|  1.92M|    }
 1171|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1172|       |    /* This will work for all future Solaris versions. */
 1173|       |    if (ret != NULL) {
 1174|       |        *ret = atomic_or_64_nv(val, 0);
 1175|       |        return 1;
 1176|       |    }
 1177|       |#endif
 1178|      0|    if (lock == NULL || !CRYPTO_THREAD_read_lock(lock))
  ------------------
  |  Branch (1178:9): [True: 0, False: 0]
  |  Branch (1178:25): [True: 0, False: 0]
  ------------------
 1179|      0|        return 0;
 1180|      0|    *ret = *val;
 1181|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1181:9): [True: 0, False: 0]
  ------------------
 1182|      0|        return 0;
 1183|       |
 1184|      0|    return 1;
 1185|      0|}
CRYPTO_atomic_store:
 1188|    299|{
 1189|    299|#if defined(OSSL_USE_GCC_ATOMICS)
 1190|    299|    if (__atomic_is_lock_free(sizeof(*dst), dst)) {
  ------------------
  |  Branch (1190:9): [True: 299, Folded]
  ------------------
 1191|    299|        __atomic_store(dst, &val, __ATOMIC_RELEASE);
 1192|    299|        return 1;
 1193|    299|    }
 1194|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1195|       |    /* This will work for all future Solaris versions. */
 1196|       |    if (dst != NULL) {
 1197|       |        atomic_swap_64(dst, val);
 1198|       |        return 1;
 1199|       |    }
 1200|       |#endif
 1201|      0|    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
  ------------------
  |  Branch (1201:9): [True: 0, False: 0]
  |  Branch (1201:25): [True: 0, False: 0]
  ------------------
 1202|      0|        return 0;
 1203|      0|    *dst = val;
 1204|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1204:9): [True: 0, False: 0]
  ------------------
 1205|      0|        return 0;
 1206|       |
 1207|      0|    return 1;
 1208|      0|}
CRYPTO_atomic_load_int:
 1211|  26.9M|{
 1212|  26.9M|#if defined(OSSL_USE_GCC_ATOMICS)
 1213|  26.9M|    if (__atomic_is_lock_free(sizeof(*val), val)) {
  ------------------
  |  Branch (1213:9): [True: 26.9M, Folded]
  ------------------
 1214|  26.9M|        __atomic_load(val, ret, __ATOMIC_ACQUIRE);
 1215|  26.9M|        return 1;
 1216|  26.9M|    }
 1217|       |#elif defined(OSSL_USE_SOLARIS_ATOMICS)
 1218|       |    /* This will work for all future Solaris versions. */
 1219|       |    if (ret != NULL) {
 1220|       |        *ret = (int)atomic_or_uint_nv((unsigned int *)val, 0);
 1221|       |        return 1;
 1222|       |    }
 1223|       |#endif
 1224|      0|    if (lock == NULL || !CRYPTO_THREAD_read_lock(lock))
  ------------------
  |  Branch (1224:9): [True: 0, False: 0]
  |  Branch (1224:25): [True: 0, False: 0]
  ------------------
 1225|      0|        return 0;
 1226|      0|    *ret = *val;
 1227|      0|    if (!CRYPTO_THREAD_unlock(lock))
  ------------------
  |  Branch (1227:9): [True: 0, False: 0]
  ------------------
 1228|      0|        return 0;
 1229|       |
 1230|      0|    return 1;
 1231|      0|}
CRYPTO_atomic_load_ptr:
 1257|  26.9M|{
 1258|  26.9M|#if defined(__GNUC__) && defined(__ATOMIC_RELAXED) && !defined(BROKEN_CLANG_ATOMICS)
 1259|  26.9M|    *ret = __atomic_load_n(ptr, TSAN_LOAD_MEM_ORDER);
  ------------------
  |  |   64|  26.9M|#define TSAN_LOAD_MEM_ORDER __ATOMIC_RELAXED
  ------------------
 1260|  26.9M|    return 1;
 1261|       |#else
 1262|       |    if (lock == NULL || !CRYPTO_THREAD_read_lock(lock))
 1263|       |        return 0;
 1264|       |    *ret = *ptr;
 1265|       |    if (!CRYPTO_THREAD_unlock(lock))
 1266|       |        return 0;
 1267|       |    return 1;
 1268|       |#endif
 1269|  26.9M|}
CRYPTO_atomic_store_ptr:
 1272|     50|{
 1273|     50|#if defined(__GNUC__) && defined(__ATOMIC_RELAXED) && !defined(BROKEN_CLANG_ATOMICS)
 1274|     50|    __atomic_store(dst, val, TSAN_STORE_MEM_ORDER);
  ------------------
  |  |   65|     50|#define TSAN_STORE_MEM_ORDER __ATOMIC_RELAXED
  ------------------
 1275|     50|    return 1;
 1276|       |#else
 1277|       |    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
 1278|       |        return 0;
 1279|       |    *dst = *val;
 1280|       |    if (!CRYPTO_THREAD_unlock(lock))
 1281|       |        return 0;
 1282|       |    return 1;
 1283|       |#endif
 1284|     50|}
CRYPTO_atomic_cmp_exch_ptr:
 1287|     50|{
 1288|     50|#if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL) && !defined(BROKEN_CLANG_ATOMICS)
 1289|     50|    if (lock_failed != NULL)
  ------------------
  |  Branch (1289:9): [True: 50, False: 0]
  ------------------
 1290|     50|        *lock_failed = 0;
 1291|     50|    return __atomic_compare_exchange_n(ptr, expect, desire, 0, __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE) ? 1 : 0;
  ------------------
  |  Branch (1291:12): [True: 50, False: 0]
  ------------------
 1292|       |#else
 1293|       |    int lock_sink;
 1294|       |    int ret = 0;
 1295|       |
 1296|       |    if (lock_failed == NULL)
 1297|       |        lock_failed = &lock_sink;
 1298|       |
 1299|       |    *lock_failed = 0;
 1300|       |    if (lock == NULL || !CRYPTO_THREAD_write_lock(lock)) {
 1301|       |        *lock_failed = 1;
 1302|       |        return 0;
 1303|       |    }
 1304|       |    if (*ptr == *expect) {
 1305|       |        ret = 1;
 1306|       |        *ptr = desire;
 1307|       |    } else {
 1308|       |        *expect = *ptr;
 1309|       |    }
 1310|       |    if (!CRYPTO_THREAD_unlock(lock))
 1311|       |        *lock_failed = 1;
 1312|       |    return ret;
 1313|       |#endif
 1314|     50|}
threads_pthread.c:allocate_new_qp_group:
  461|      3|{
  462|      3|    struct rcu_qp *new = OPENSSL_calloc(count, sizeof(*new));
  ------------------
  |  |  117|      3|    CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_calloc(num, size, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  463|       |
  464|      3|    lock->group_count = count;
  465|      3|    return new;
  466|      3|}
threads_pthread.c:ossl_init_rwlock_contention_data:
  886|    159|{
  887|    159|}
threads_pthread.c:ossl_rwlock_rdlock:
  890|  3.47k|{
  891|  3.47k|    return pthread_rwlock_rdlock(rwlock);
  892|  3.47k|}
threads_pthread.c:ossl_rwlock_wrlock:
  895|  2.27k|{
  896|  2.27k|    return pthread_rwlock_wrlock(rwlock);
  897|  2.27k|}
threads_pthread.c:ossl_rwlock_unlock:
  900|  5.74k|{
  901|  5.74k|    return pthread_rwlock_unlock(rwlock);
  902|  5.74k|}

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:
  149|      1|{
  150|      1|#ifndef OPENSSL_NO_ERR
  151|      1|    if (ERR_reason_error_string(X509V3_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (151:9): [True: 1, False: 0]
  ------------------
  152|      1|        ERR_load_strings_const(X509V3_str_reasons);
  153|      1|#endif
  154|      1|    return 1;
  155|      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:
  168|    118|{
  169|       |#ifdef HASH_UPDATE_THUNK
  170|       |    HASH_CTX *c = (HASH_CTX *)cp;
  171|       |#endif
  172|    118|    const unsigned char *data = data_;
  173|    118|    unsigned char *p;
  174|    118|    HASH_LONG l;
  ------------------
  |  |   22|    118|#define HASH_LONG MD4_LONG
  ------------------
  175|    118|    size_t n;
  176|       |
  177|    118|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   24|    118|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 118]
  |  |  ------------------
  ------------------
  178|      0|        return 1;
  179|       |
  180|    118|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  181|    118|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   24|    118|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 118]
  |  |  ------------------
  ------------------
  182|      0|        c->Nh++;
  183|    118|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  184|       |                                      * 16-bit */
  185|    118|    c->Nl = l;
  186|       |
  187|    118|    n = c->num;
  188|    118|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   23|    118|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 118]
  |  |  ------------------
  ------------------
  189|       |        /* Gets here if we already have buffered input data */
  190|      0|        p = (unsigned char *)c->data;
  191|       |
  192|      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 (192:13): [True: 0, False: 0]
  |  Branch (192:35): [True: 0, False: 0]
  ------------------
  193|       |            /*
  194|       |             * If there is enough input to fill the buffer then fill the
  195|       |             * buffer and process a single chunk.
  196|       |             */
  197|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  198|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   40|      0|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  199|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  200|      0|            data += n;
  201|      0|            len -= n;
  202|      0|            c->num = 0;
  203|       |            /*
  204|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  205|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  206|       |             * will get properly cleansed on finalisation so this isn't a
  207|       |             * security problem.
  208|       |             */
  209|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   24|      0|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|      0|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  210|      0|        } else {
  211|       |            /* Otherwise just keep filling the buffer */
  212|      0|            memcpy(p + n, data, len);
  213|      0|            c->num += (unsigned int)len;
  214|      0|            return 1;
  215|      0|        }
  216|      0|    }
  217|       |
  218|    118|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   24|    118|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|    118|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  219|    118|    if (n > 0) {
  ------------------
  |  Branch (219:9): [True: 118, False: 0]
  ------------------
  220|       |        /* Process chunks */
  221|    118|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   40|    118|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  222|    118|        n *= HASH_CBLOCK;
  ------------------
  |  |   24|    118|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|    118|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  223|    118|        data += n;
  224|    118|        len -= n;
  225|    118|    }
  226|       |    /* Buffer any left over data */
  227|    118|    if (len != 0) {
  ------------------
  |  Branch (227:9): [True: 44, False: 74]
  ------------------
  228|     44|        p = (unsigned char *)c->data;
  229|     44|        c->num = (unsigned int)len;
  230|     44|        memcpy(p, data, len);
  231|     44|    }
  232|    118|    return 1;
  233|    118|}
MD4_Final:
  241|     59|{
  242|     59|    unsigned char *p = (unsigned char *)c->data;
  243|     59|    size_t n = c->num;
  244|       |
  245|       |    /*
  246|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  247|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  248|       |     */
  249|     59|    p[n] = 0x80; /* there is always room for one */
  250|     59|    n++;
  251|       |
  252|     59|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   24|     59|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     59|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (252:9): [True: 18, False: 41]
  ------------------
  253|       |        /*
  254|       |         * If there is not enough room in the buffer to add L, then fill the
  255|       |         * current buffer with zeros, and process the chunk
  256|       |         */
  257|     18|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   24|     18|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     18|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  258|     18|        n = 0;
  259|     18|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   40|     18|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  260|     18|    }
  261|       |    /* Add zero padding - but leave enough room for L */
  262|     59|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   24|     59|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     59|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  263|       |
  264|       |    /* Add the 64 bit L value to the end of the buffer */
  265|     59|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   24|     59|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     59|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  266|       |#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  267|       |    (void)HOST_l2c(c->Nh, p);
  268|       |    (void)HOST_l2c(c->Nl, p);
  269|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  270|     59|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  150|     59|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  151|     59|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  152|     59|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  153|     59|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  154|     59|    l)
  ------------------
  271|     59|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  150|     59|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  151|     59|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  152|     59|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  153|     59|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  154|     59|    l)
  ------------------
  272|     59|#endif
  273|     59|    p -= HASH_CBLOCK;
  ------------------
  |  |   24|     59|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     59|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  274|       |    /* Process the final padded chunk */
  275|     59|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   40|     59|#define HASH_BLOCK_DATA_ORDER md4_block_data_order
  ------------------
  276|     59|    c->num = 0;
  277|     59|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   24|     59|#define HASH_CBLOCK MD4_CBLOCK
  |  |  ------------------
  |  |  |  |   39|     59|#define MD4_CBLOCK 64
  |  |  ------------------
  ------------------
  278|       |
  279|       |#ifndef HASH_MAKE_STRING
  280|       |#error "HASH_MAKE_STRING must be defined!"
  281|       |#else
  282|     59|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   29|     59|    do {                         \
  |  |   30|     59|        unsigned long ll;        \
  |  |   31|     59|        ll = (c)->A;             \
  |  |   32|     59|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     59|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     59|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     59|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     59|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     59|    l)
  |  |  ------------------
  |  |   33|     59|        ll = (c)->B;             \
  |  |   34|     59|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     59|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     59|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     59|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     59|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     59|    l)
  |  |  ------------------
  |  |   35|     59|        ll = (c)->C;             \
  |  |   36|     59|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     59|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     59|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     59|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     59|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     59|    l)
  |  |  ------------------
  |  |   37|     59|        ll = (c)->D;             \
  |  |   38|     59|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     59|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     59|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     59|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     59|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     59|    l)
  |  |  ------------------
  |  |   39|     59|    } while (0)
  |  |  ------------------
  |  |  |  Branch (39:14): [Folded, False: 59]
  |  |  ------------------
  ------------------
  283|     59|#endif
  284|       |
  285|     59|    return 1;
  286|     59|}
MD5_Update:
  168|    182|{
  169|       |#ifdef HASH_UPDATE_THUNK
  170|       |    HASH_CTX *c = (HASH_CTX *)cp;
  171|       |#endif
  172|    182|    const unsigned char *data = data_;
  173|    182|    unsigned char *p;
  174|    182|    HASH_LONG l;
  ------------------
  |  |   32|    182|#define HASH_LONG MD5_LONG
  ------------------
  175|    182|    size_t n;
  176|       |
  177|    182|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   24|    182|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 182]
  |  |  ------------------
  ------------------
  178|      0|        return 1;
  179|       |
  180|    182|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  181|    182|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   24|    182|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 182]
  |  |  ------------------
  ------------------
  182|      0|        c->Nh++;
  183|    182|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  184|       |                                      * 16-bit */
  185|    182|    c->Nl = l;
  186|       |
  187|    182|    n = c->num;
  188|    182|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   23|    182|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 182]
  |  |  ------------------
  ------------------
  189|       |        /* Gets here if we already have buffered input data */
  190|      0|        p = (unsigned char *)c->data;
  191|       |
  192|      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 (192:13): [True: 0, False: 0]
  |  Branch (192:35): [True: 0, False: 0]
  ------------------
  193|       |            /*
  194|       |             * If there is enough input to fill the buffer then fill the
  195|       |             * buffer and process a single chunk.
  196|       |             */
  197|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  198|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   50|      0|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  199|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  200|      0|            data += n;
  201|      0|            len -= n;
  202|      0|            c->num = 0;
  203|       |            /*
  204|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  205|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  206|       |             * will get properly cleansed on finalisation so this isn't a
  207|       |             * security problem.
  208|       |             */
  209|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   34|      0|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|      0|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  210|      0|        } else {
  211|       |            /* Otherwise just keep filling the buffer */
  212|      0|            memcpy(p + n, data, len);
  213|      0|            c->num += (unsigned int)len;
  214|      0|            return 1;
  215|      0|        }
  216|      0|    }
  217|       |
  218|    182|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   34|    182|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|    182|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  219|    182|    if (n > 0) {
  ------------------
  |  Branch (219:9): [True: 182, False: 0]
  ------------------
  220|       |        /* Process chunks */
  221|    182|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   50|    182|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  222|    182|        n *= HASH_CBLOCK;
  ------------------
  |  |   34|    182|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|    182|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  223|    182|        data += n;
  224|    182|        len -= n;
  225|    182|    }
  226|       |    /* Buffer any left over data */
  227|    182|    if (len != 0) {
  ------------------
  |  Branch (227:9): [True: 61, False: 121]
  ------------------
  228|     61|        p = (unsigned char *)c->data;
  229|     61|        c->num = (unsigned int)len;
  230|     61|        memcpy(p, data, len);
  231|     61|    }
  232|    182|    return 1;
  233|    182|}
MD5_Final:
  241|     91|{
  242|     91|    unsigned char *p = (unsigned char *)c->data;
  243|     91|    size_t n = c->num;
  244|       |
  245|       |    /*
  246|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  247|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  248|       |     */
  249|     91|    p[n] = 0x80; /* there is always room for one */
  250|     91|    n++;
  251|       |
  252|     91|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   34|     91|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     91|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (252:9): [True: 26, False: 65]
  ------------------
  253|       |        /*
  254|       |         * If there is not enough room in the buffer to add L, then fill the
  255|       |         * current buffer with zeros, and process the chunk
  256|       |         */
  257|     26|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   34|     26|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     26|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  258|     26|        n = 0;
  259|     26|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   50|     26|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  260|     26|    }
  261|       |    /* Add zero padding - but leave enough room for L */
  262|     91|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   34|     91|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     91|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  263|       |
  264|       |    /* Add the 64 bit L value to the end of the buffer */
  265|     91|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   34|     91|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     91|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  266|       |#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  267|       |    (void)HOST_l2c(c->Nh, p);
  268|       |    (void)HOST_l2c(c->Nl, p);
  269|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  270|     91|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  150|     91|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  151|     91|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  152|     91|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  153|     91|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  154|     91|    l)
  ------------------
  271|     91|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  150|     91|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  151|     91|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  152|     91|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  153|     91|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  154|     91|    l)
  ------------------
  272|     91|#endif
  273|     91|    p -= HASH_CBLOCK;
  ------------------
  |  |   34|     91|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     91|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  274|       |    /* Process the final padded chunk */
  275|     91|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   50|     91|#define HASH_BLOCK_DATA_ORDER md5_block_data_order
  ------------------
  276|     91|    c->num = 0;
  277|     91|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   34|     91|#define HASH_CBLOCK MD5_CBLOCK
  |  |  ------------------
  |  |  |  |   38|     91|#define MD5_CBLOCK 64
  |  |  ------------------
  ------------------
  278|       |
  279|       |#ifndef HASH_MAKE_STRING
  280|       |#error "HASH_MAKE_STRING must be defined!"
  281|       |#else
  282|     91|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   39|     91|    do {                         \
  |  |   40|     91|        unsigned long ll;        \
  |  |   41|     91|        ll = (c)->A;             \
  |  |   42|     91|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     91|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     91|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     91|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     91|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     91|    l)
  |  |  ------------------
  |  |   43|     91|        ll = (c)->B;             \
  |  |   44|     91|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     91|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     91|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     91|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     91|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     91|    l)
  |  |  ------------------
  |  |   45|     91|        ll = (c)->C;             \
  |  |   46|     91|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     91|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     91|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     91|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     91|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     91|    l)
  |  |  ------------------
  |  |   47|     91|        ll = (c)->D;             \
  |  |   48|     91|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     91|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     91|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     91|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     91|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     91|    l)
  |  |  ------------------
  |  |   49|     91|    } while (0)
  |  |  ------------------
  |  |  |  Branch (49:14): [Folded, False: 91]
  |  |  ------------------
  ------------------
  283|     91|#endif
  284|       |
  285|     91|    return 1;
  286|     91|}
RIPEMD160_Update:
  168|    162|{
  169|       |#ifdef HASH_UPDATE_THUNK
  170|       |    HASH_CTX *c = (HASH_CTX *)cp;
  171|       |#endif
  172|    162|    const unsigned char *data = data_;
  173|    162|    unsigned char *p;
  174|    162|    HASH_LONG l;
  ------------------
  |  |   32|    162|#define HASH_LONG RIPEMD160_LONG
  ------------------
  175|    162|    size_t n;
  176|       |
  177|    162|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   24|    162|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 162]
  |  |  ------------------
  ------------------
  178|      0|        return 1;
  179|       |
  180|    162|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  181|    162|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   24|    162|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 162]
  |  |  ------------------
  ------------------
  182|      0|        c->Nh++;
  183|    162|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  184|       |                                      * 16-bit */
  185|    162|    c->Nl = l;
  186|       |
  187|    162|    n = c->num;
  188|    162|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   23|    162|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 162]
  |  |  ------------------
  ------------------
  189|       |        /* Gets here if we already have buffered input data */
  190|      0|        p = (unsigned char *)c->data;
  191|       |
  192|      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 (192:13): [True: 0, False: 0]
  |  Branch (192:35): [True: 0, False: 0]
  ------------------
  193|       |            /*
  194|       |             * If there is enough input to fill the buffer then fill the
  195|       |             * buffer and process a single chunk.
  196|       |             */
  197|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  198|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   52|      0|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  199|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  200|      0|            data += n;
  201|      0|            len -= n;
  202|      0|            c->num = 0;
  203|       |            /*
  204|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  205|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  206|       |             * will get properly cleansed on finalisation so this isn't a
  207|       |             * security problem.
  208|       |             */
  209|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   34|      0|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|      0|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  210|      0|        } else {
  211|       |            /* Otherwise just keep filling the buffer */
  212|      0|            memcpy(p + n, data, len);
  213|      0|            c->num += (unsigned int)len;
  214|      0|            return 1;
  215|      0|        }
  216|      0|    }
  217|       |
  218|    162|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   34|    162|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|    162|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  219|    162|    if (n > 0) {
  ------------------
  |  Branch (219:9): [True: 162, False: 0]
  ------------------
  220|       |        /* Process chunks */
  221|    162|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   52|    162|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  222|    162|        n *= HASH_CBLOCK;
  ------------------
  |  |   34|    162|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|    162|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  223|    162|        data += n;
  224|    162|        len -= n;
  225|    162|    }
  226|       |    /* Buffer any left over data */
  227|    162|    if (len != 0) {
  ------------------
  |  Branch (227:9): [True: 53, False: 109]
  ------------------
  228|     53|        p = (unsigned char *)c->data;
  229|     53|        c->num = (unsigned int)len;
  230|     53|        memcpy(p, data, len);
  231|     53|    }
  232|    162|    return 1;
  233|    162|}
RIPEMD160_Final:
  241|     81|{
  242|     81|    unsigned char *p = (unsigned char *)c->data;
  243|     81|    size_t n = c->num;
  244|       |
  245|       |    /*
  246|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  247|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  248|       |     */
  249|     81|    p[n] = 0x80; /* there is always room for one */
  250|     81|    n++;
  251|       |
  252|     81|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   34|     81|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     81|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (252:9): [True: 20, False: 61]
  ------------------
  253|       |        /*
  254|       |         * If there is not enough room in the buffer to add L, then fill the
  255|       |         * current buffer with zeros, and process the chunk
  256|       |         */
  257|     20|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   34|     20|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     20|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  258|     20|        n = 0;
  259|     20|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   52|     20|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  260|     20|    }
  261|       |    /* Add zero padding - but leave enough room for L */
  262|     81|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   34|     81|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     81|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  263|       |
  264|       |    /* Add the 64 bit L value to the end of the buffer */
  265|     81|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   34|     81|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     81|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  266|       |#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  267|       |    (void)HOST_l2c(c->Nh, p);
  268|       |    (void)HOST_l2c(c->Nl, p);
  269|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  270|     81|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  150|     81|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  151|     81|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  152|     81|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  153|     81|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  154|     81|    l)
  ------------------
  271|     81|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  150|     81|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  151|     81|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  152|     81|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  153|     81|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  154|     81|    l)
  ------------------
  272|     81|#endif
  273|     81|    p -= HASH_CBLOCK;
  ------------------
  |  |   34|     81|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     81|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  274|       |    /* Process the final padded chunk */
  275|     81|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   52|     81|#define HASH_BLOCK_DATA_ORDER ripemd160_block_data_order
  ------------------
  276|     81|    c->num = 0;
  277|     81|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   34|     81|#define HASH_CBLOCK RIPEMD160_CBLOCK
  |  |  ------------------
  |  |  |  |   34|     81|#define RIPEMD160_CBLOCK 64
  |  |  ------------------
  ------------------
  278|       |
  279|       |#ifndef HASH_MAKE_STRING
  280|       |#error "HASH_MAKE_STRING must be defined!"
  281|       |#else
  282|     81|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   39|     81|    do {                         \
  |  |   40|     81|        unsigned long ll;        \
  |  |   41|     81|        ll = (c)->A;             \
  |  |   42|     81|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     81|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     81|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     81|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     81|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     81|    l)
  |  |  ------------------
  |  |   43|     81|        ll = (c)->B;             \
  |  |   44|     81|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     81|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     81|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     81|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     81|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     81|    l)
  |  |  ------------------
  |  |   45|     81|        ll = (c)->C;             \
  |  |   46|     81|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     81|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     81|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     81|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     81|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     81|    l)
  |  |  ------------------
  |  |   47|     81|        ll = (c)->D;             \
  |  |   48|     81|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     81|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     81|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     81|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     81|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     81|    l)
  |  |  ------------------
  |  |   49|     81|        ll = (c)->E;             \
  |  |   50|     81|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  150|     81|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
  |  |  |  |  151|     81|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
  |  |  |  |  152|     81|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
  |  |  |  |  153|     81|    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
  |  |  |  |  154|     81|    l)
  |  |  ------------------
  |  |   51|     81|    } while (0)
  |  |  ------------------
  |  |  |  Branch (51:14): [Folded, False: 81]
  |  |  ------------------
  ------------------
  283|     81|#endif
  284|       |
  285|     81|    return 1;
  286|     81|}
SHA1_Update_thunk:
  168|    222|{
  169|    222|#ifdef HASH_UPDATE_THUNK
  170|    222|    HASH_CTX *c = (HASH_CTX *)cp;
  ------------------
  |  |   23|    222|#define HASH_CTX SHA_CTX
  ------------------
  171|    222|#endif
  172|    222|    const unsigned char *data = data_;
  173|    222|    unsigned char *p;
  174|    222|    HASH_LONG l;
  ------------------
  |  |   22|    222|#define HASH_LONG SHA_LONG
  ------------------
  175|    222|    size_t n;
  176|       |
  177|    222|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   24|    222|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 222]
  |  |  ------------------
  ------------------
  178|      0|        return 1;
  179|       |
  180|    222|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  181|    222|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   24|    222|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 222]
  |  |  ------------------
  ------------------
  182|      0|        c->Nh++;
  183|    222|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  184|       |                                      * 16-bit */
  185|    222|    c->Nl = l;
  186|       |
  187|    222|    n = c->num;
  188|    222|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   23|    222|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 222]
  |  |  ------------------
  ------------------
  189|       |        /* Gets here if we already have buffered input data */
  190|      0|        p = (unsigned char *)c->data;
  191|       |
  192|      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 (192:13): [True: 0, False: 0]
  |  Branch (192:35): [True: 0, False: 0]
  ------------------
  193|       |            /*
  194|       |             * If there is enough input to fill the buffer then fill the
  195|       |             * buffer and process a single chunk.
  196|       |             */
  197|      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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   45|      0|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  199|      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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|      0|            data += n;
  201|      0|            len -= n;
  202|      0|            c->num = 0;
  203|       |            /*
  204|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  205|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  206|       |             * will get properly cleansed on finalisation so this isn't a
  207|       |             * security problem.
  208|       |             */
  209|      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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|      0|        } else {
  211|       |            /* Otherwise just keep filling the buffer */
  212|      0|            memcpy(p + n, data, len);
  213|      0|            c->num += (unsigned int)len;
  214|      0|            return 1;
  215|      0|        }
  216|      0|    }
  217|       |
  218|    222|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   24|    222|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    222|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    222|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|    222|    if (n > 0) {
  ------------------
  |  Branch (219:9): [True: 222, False: 0]
  ------------------
  220|       |        /* Process chunks */
  221|    222|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   45|    222|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  222|    222|        n *= HASH_CBLOCK;
  ------------------
  |  |   24|    222|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    222|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    222|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|    222|        data += n;
  224|    222|        len -= n;
  225|    222|    }
  226|       |    /* Buffer any left over data */
  227|    222|    if (len != 0) {
  ------------------
  |  Branch (227:9): [True: 68, False: 154]
  ------------------
  228|     68|        p = (unsigned char *)c->data;
  229|     68|        c->num = (unsigned int)len;
  230|     68|        memcpy(p, data, len);
  231|     68|    }
  232|    222|    return 1;
  233|    222|}
SHA1_Final:
  241|    111|{
  242|    111|    unsigned char *p = (unsigned char *)c->data;
  243|    111|    size_t n = c->num;
  244|       |
  245|       |    /*
  246|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  247|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  248|       |     */
  249|    111|    p[n] = 0x80; /* there is always room for one */
  250|    111|    n++;
  251|       |
  252|    111|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   24|    111|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    111|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    111|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (252:9): [True: 30, False: 81]
  ------------------
  253|       |        /*
  254|       |         * If there is not enough room in the buffer to add L, then fill the
  255|       |         * current buffer with zeros, and process the chunk
  256|       |         */
  257|     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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|     30|        n = 0;
  259|     30|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   45|     30|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  260|     30|    }
  261|       |    /* Add zero padding - but leave enough room for L */
  262|    111|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   24|    111|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    111|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    111|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  263|       |
  264|       |    /* Add the 64 bit L value to the end of the buffer */
  265|    111|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   24|    111|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    111|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    111|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  266|    111|#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  267|    111|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  138|    111|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  139|    111|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  140|    111|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  141|    111|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  142|    111|    l)
  ------------------
  268|    111|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  138|    111|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  139|    111|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  140|    111|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  141|    111|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  142|    111|    l)
  ------------------
  269|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  270|       |    (void)HOST_l2c(c->Nl, p);
  271|       |    (void)HOST_l2c(c->Nh, p);
  272|       |#endif
  273|    111|    p -= HASH_CBLOCK;
  ------------------
  |  |   24|    111|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    111|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    111|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|       |    /* Process the final padded chunk */
  275|    111|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   45|    111|#define HASH_BLOCK_DATA_ORDER sha1_block_data_order
  ------------------
  276|    111|    c->num = 0;
  277|    111|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   24|    111|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|    111|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|    111|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|       |
  279|       |#ifndef HASH_MAKE_STRING
  280|       |#error "HASH_MAKE_STRING must be defined!"
  281|       |#else
  282|    111|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   26|    111|    do {                         \
  |  |   27|    111|        unsigned long ll;        \
  |  |   28|    111|        ll = (c)->h0;            \
  |  |   29|    111|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|    111|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|    111|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|    111|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|    111|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|    111|    l)
  |  |  ------------------
  |  |   30|    111|        ll = (c)->h1;            \
  |  |   31|    111|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|    111|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|    111|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|    111|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|    111|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|    111|    l)
  |  |  ------------------
  |  |   32|    111|        ll = (c)->h2;            \
  |  |   33|    111|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|    111|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|    111|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|    111|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|    111|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|    111|    l)
  |  |  ------------------
  |  |   34|    111|        ll = (c)->h3;            \
  |  |   35|    111|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|    111|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|    111|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|    111|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|    111|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|    111|    l)
  |  |  ------------------
  |  |   36|    111|        ll = (c)->h4;            \
  |  |   37|    111|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|    111|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|    111|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|    111|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|    111|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|    111|    l)
  |  |  ------------------
  |  |   38|    111|    } while (0)
  |  |  ------------------
  |  |  |  Branch (38:14): [Folded, False: 111]
  |  |  ------------------
  ------------------
  283|    111|#endif
  284|       |
  285|    111|    return 1;
  286|    111|}
SHA256_Update_thunk:
  168|  10.4k|{
  169|  10.4k|#ifdef HASH_UPDATE_THUNK
  170|  10.4k|    HASH_CTX *c = (HASH_CTX *)cp;
  ------------------
  |  |   77|  10.4k|#define HASH_CTX SHA256_CTX
  ------------------
  171|  10.4k|#endif
  172|  10.4k|    const unsigned char *data = data_;
  173|  10.4k|    unsigned char *p;
  174|  10.4k|    HASH_LONG l;
  ------------------
  |  |   76|  10.4k|#define HASH_LONG SHA_LONG
  ------------------
  175|  10.4k|    size_t n;
  176|       |
  177|  10.4k|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   24|  10.4k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 10.4k]
  |  |  ------------------
  ------------------
  178|      0|        return 1;
  179|       |
  180|  10.4k|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  181|  10.4k|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   24|  10.4k|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 10.4k]
  |  |  ------------------
  ------------------
  182|      0|        c->Nh++;
  183|  10.4k|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  184|       |                                      * 16-bit */
  185|  10.4k|    c->Nl = l;
  186|       |
  187|  10.4k|    n = c->num;
  188|  10.4k|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   23|  10.4k|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 10.4k]
  |  |  ------------------
  ------------------
  189|       |        /* Gets here if we already have buffered input data */
  190|      0|        p = (unsigned char *)c->data;
  191|       |
  192|      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 (192:13): [True: 0, False: 0]
  |  Branch (192:35): [True: 0, False: 0]
  ------------------
  193|       |            /*
  194|       |             * If there is enough input to fill the buffer then fill the
  195|       |             * buffer and process a single chunk.
  196|       |             */
  197|      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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |  126|      0|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  199|      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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|      0|            data += n;
  201|      0|            len -= n;
  202|      0|            c->num = 0;
  203|       |            /*
  204|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  205|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  206|       |             * will get properly cleansed on finalisation so this isn't a
  207|       |             * security problem.
  208|       |             */
  209|      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
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|      0|        } else {
  211|       |            /* Otherwise just keep filling the buffer */
  212|      0|            memcpy(p + n, data, len);
  213|      0|            c->num += (unsigned int)len;
  214|      0|            return 1;
  215|      0|        }
  216|      0|    }
  217|       |
  218|  10.4k|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   78|  10.4k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  10.4k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  10.4k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|  10.4k|    if (n > 0) {
  ------------------
  |  Branch (219:9): [True: 10.4k, False: 0]
  ------------------
  220|       |        /* Process chunks */
  221|  10.4k|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |  126|  10.4k|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  222|  10.4k|        n *= HASH_CBLOCK;
  ------------------
  |  |   78|  10.4k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  10.4k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  10.4k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|  10.4k|        data += n;
  224|  10.4k|        len -= n;
  225|  10.4k|    }
  226|       |    /* Buffer any left over data */
  227|  10.4k|    if (len != 0) {
  ------------------
  |  Branch (227:9): [True: 121, False: 10.2k]
  ------------------
  228|    121|        p = (unsigned char *)c->data;
  229|    121|        c->num = (unsigned int)len;
  230|    121|        memcpy(p, data, len);
  231|    121|    }
  232|  10.4k|    return 1;
  233|  10.4k|}
SHA256_Final:
  241|  5.21k|{
  242|  5.21k|    unsigned char *p = (unsigned char *)c->data;
  243|  5.21k|    size_t n = c->num;
  244|       |
  245|       |    /*
  246|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  247|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  248|       |     */
  249|  5.21k|    p[n] = 0x80; /* there is always room for one */
  250|  5.21k|    n++;
  251|       |
  252|  5.21k|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   78|  5.21k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.21k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.21k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (252:9): [True: 40, False: 5.17k]
  ------------------
  253|       |        /*
  254|       |         * If there is not enough room in the buffer to add L, then fill the
  255|       |         * current buffer with zeros, and process the chunk
  256|       |         */
  257|     40|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   78|     40|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|     40|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|     40|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  258|     40|        n = 0;
  259|     40|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |  126|     40|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  260|     40|    }
  261|       |    /* Add zero padding - but leave enough room for L */
  262|  5.21k|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   78|  5.21k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.21k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.21k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  263|       |
  264|       |    /* Add the 64 bit L value to the end of the buffer */
  265|  5.21k|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   78|  5.21k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.21k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.21k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  266|  5.21k|#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  267|  5.21k|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  138|  5.21k|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  139|  5.21k|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  140|  5.21k|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  141|  5.21k|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  142|  5.21k|    l)
  ------------------
  268|  5.21k|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  138|  5.21k|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  139|  5.21k|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  140|  5.21k|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  141|  5.21k|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  142|  5.21k|    l)
  ------------------
  269|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  270|       |    (void)HOST_l2c(c->Nl, p);
  271|       |    (void)HOST_l2c(c->Nh, p);
  272|       |#endif
  273|  5.21k|    p -= HASH_CBLOCK;
  ------------------
  |  |   78|  5.21k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.21k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.21k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  274|       |    /* Process the final padded chunk */
  275|  5.21k|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |  126|  5.21k|#define HASH_BLOCK_DATA_ORDER sha256_block_data_order
  ------------------
  276|  5.21k|    c->num = 0;
  277|  5.21k|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   78|  5.21k|#define HASH_CBLOCK SHA_CBLOCK
  |  |  ------------------
  |  |  |  |   37|  5.21k|#define SHA_CBLOCK (SHA_LBLOCK * 4) /* SHA treats input data as a      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   36|  5.21k|#define SHA_LBLOCK 16
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|       |
  279|       |#ifndef HASH_MAKE_STRING
  280|       |#error "HASH_MAKE_STRING must be defined!"
  281|       |#else
  282|  5.21k|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   89|  5.21k|    do {                                                            \
  |  |   90|  5.21k|        unsigned long ll;                                           \
  |  |   91|  5.21k|        unsigned int nn;                                            \
  |  |   92|  5.21k|        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.21k]
  |  |  ------------------
  |  |   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));                            \
  |  |  ------------------
  |  |  |  |  138|      6|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|      6|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|      6|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|      6|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|      6|    l)
  |  |  ------------------
  |  |   97|      6|            }                                                       \
  |  |   98|      1|            break;                                                  \
  |  |   99|    208|        case SHA224_DIGEST_LENGTH:                                  \
  |  |  ------------------
  |  |  |  |   86|    208|#define SHA224_DIGEST_LENGTH 28
  |  |  ------------------
  |  |  |  Branch (99:9): [True: 208, False: 5.00k]
  |  |  ------------------
  |  |  100|  1.66k|            for (nn = 0; nn < SHA224_DIGEST_LENGTH / 4; nn++) {     \
  |  |  ------------------
  |  |  |  |   86|  1.66k|#define SHA224_DIGEST_LENGTH 28
  |  |  ------------------
  |  |  |  Branch (100:26): [True: 1.45k, False: 208]
  |  |  ------------------
  |  |  101|  1.45k|                ll = (c)->h[nn];                                    \
  |  |  102|  1.45k|                (void)HOST_l2c(ll, (s));                            \
  |  |  ------------------
  |  |  |  |  138|  1.45k|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|  1.45k|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|  1.45k|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|  1.45k|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|  1.45k|    l)
  |  |  ------------------
  |  |  103|  1.45k|            }                                                       \
  |  |  104|    208|            break;                                                  \
  |  |  105|  5.00k|        case SHA256_DIGEST_LENGTH:                                  \
  |  |  ------------------
  |  |  |  |   87|  5.00k|#define SHA256_DIGEST_LENGTH 32
  |  |  ------------------
  |  |  |  Branch (105:9): [True: 5.00k, False: 209]
  |  |  ------------------
  |  |  106|  45.0k|            for (nn = 0; nn < SHA256_DIGEST_LENGTH / 4; nn++) {     \
  |  |  ------------------
  |  |  |  |   87|  45.0k|#define SHA256_DIGEST_LENGTH 32
  |  |  ------------------
  |  |  |  Branch (106:26): [True: 40.0k, False: 5.00k]
  |  |  ------------------
  |  |  107|  40.0k|                ll = (c)->h[nn];                                    \
  |  |  108|  40.0k|                (void)HOST_l2c(ll, (s));                            \
  |  |  ------------------
  |  |  |  |  138|  40.0k|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|  40.0k|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|  40.0k|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|  40.0k|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|  40.0k|    l)
  |  |  ------------------
  |  |  109|  40.0k|            }                                                       \
  |  |  110|  5.00k|            break;                                                  \
  |  |  111|      0|        default:                                                    \
  |  |  ------------------
  |  |  |  Branch (111:9): [True: 0, False: 5.21k]
  |  |  ------------------
  |  |  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));                            \
  |  |  ------------------
  |  |  |  |  138|      0|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|      0|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|      0|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|      0|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|      0|    l)
  |  |  ------------------
  |  |  117|      0|            }                                                       \
  |  |  118|      0|            break;                                                  \
  |  |  119|  5.21k|        }                                                           \
  |  |  120|  5.21k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (120:14): [Folded, False: 5.21k]
  |  |  ------------------
  ------------------
  283|  5.21k|#endif
  284|       |
  285|  5.21k|    return 1;
  286|  5.21k|}
ossl_sm3_update:
  168|    176|{
  169|       |#ifdef HASH_UPDATE_THUNK
  170|       |    HASH_CTX *c = (HASH_CTX *)cp;
  171|       |#endif
  172|    176|    const unsigned char *data = data_;
  173|    176|    unsigned char *p;
  174|    176|    HASH_LONG l;
  ------------------
  |  |   21|    176|#define HASH_LONG SM3_WORD
  ------------------
  175|    176|    size_t n;
  176|       |
  177|    176|    if (ossl_unlikely(len == 0))
  ------------------
  |  |   24|    176|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 176]
  |  |  ------------------
  ------------------
  178|      0|        return 1;
  179|       |
  180|    176|    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
  181|    176|    if (ossl_unlikely(l < c->Nl)) /* overflow */
  ------------------
  |  |   24|    176|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 176]
  |  |  ------------------
  ------------------
  182|      0|        c->Nh++;
  183|    176|    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
  184|       |                                      * 16-bit */
  185|    176|    c->Nl = l;
  186|       |
  187|    176|    n = c->num;
  188|    176|    if (ossl_likely(n != 0)) {
  ------------------
  |  |   23|    176|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 176]
  |  |  ------------------
  ------------------
  189|       |        /* Gets here if we already have buffered input data */
  190|      0|        p = (unsigned char *)c->data;
  191|       |
  192|      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 (192:13): [True: 0, False: 0]
  |  Branch (192:35): [True: 0, False: 0]
  ------------------
  193|       |            /*
  194|       |             * If there is enough input to fill the buffer then fill the
  195|       |             * buffer and process a single chunk.
  196|       |             */
  197|      0|            memcpy(p + n, data, HASH_CBLOCK - n);
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  198|      0|            HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   69|      0|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  199|      0|            n = HASH_CBLOCK - n;
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  200|      0|            data += n;
  201|      0|            len -= n;
  202|      0|            c->num = 0;
  203|       |            /*
  204|       |             * We use memset rather than OPENSSL_cleanse() here deliberately.
  205|       |             * Using OPENSSL_cleanse() here could be a performance issue. It
  206|       |             * will get properly cleansed on finalisation so this isn't a
  207|       |             * security problem.
  208|       |             */
  209|      0|            memset(p, 0, HASH_CBLOCK); /* keep it zeroed */
  ------------------
  |  |   23|      0|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|      0|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  210|      0|        } else {
  211|       |            /* Otherwise just keep filling the buffer */
  212|      0|            memcpy(p + n, data, len);
  213|      0|            c->num += (unsigned int)len;
  214|      0|            return 1;
  215|      0|        }
  216|      0|    }
  217|       |
  218|    176|    n = len / HASH_CBLOCK; /* Get number of input chunks (e.g. multiple of 512 bits for SHA256) */
  ------------------
  |  |   23|    176|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|    176|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  219|    176|    if (n > 0) {
  ------------------
  |  Branch (219:9): [True: 176, False: 0]
  ------------------
  220|       |        /* Process chunks */
  221|    176|        HASH_BLOCK_DATA_ORDER(c, data, n);
  ------------------
  |  |   69|    176|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  222|    176|        n *= HASH_CBLOCK;
  ------------------
  |  |   23|    176|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|    176|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  223|    176|        data += n;
  224|    176|        len -= n;
  225|    176|    }
  226|       |    /* Buffer any left over data */
  227|    176|    if (len != 0) {
  ------------------
  |  Branch (227:9): [True: 70, False: 106]
  ------------------
  228|     70|        p = (unsigned char *)c->data;
  229|     70|        c->num = (unsigned int)len;
  230|     70|        memcpy(p, data, len);
  231|     70|    }
  232|    176|    return 1;
  233|    176|}
ossl_sm3_final:
  241|     88|{
  242|     88|    unsigned char *p = (unsigned char *)c->data;
  243|     88|    size_t n = c->num;
  244|       |
  245|       |    /*
  246|       |     * Pad the input by adding a 1 bit + K zero bits + input length (L)
  247|       |     * as a 64 bit value. K must align the data to a chunk boundary.
  248|       |     */
  249|     88|    p[n] = 0x80; /* there is always room for one */
  250|     88|    n++;
  251|       |
  252|     88|    if (n > (HASH_CBLOCK - 8)) {
  ------------------
  |  |   23|     88|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     88|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  |  Branch (252:9): [True: 48, False: 40]
  ------------------
  253|       |        /*
  254|       |         * If there is not enough room in the buffer to add L, then fill the
  255|       |         * current buffer with zeros, and process the chunk
  256|       |         */
  257|     48|        memset(p + n, 0, HASH_CBLOCK - n);
  ------------------
  |  |   23|     48|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     48|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  258|     48|        n = 0;
  259|     48|        HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   69|     48|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  260|     48|    }
  261|       |    /* Add zero padding - but leave enough room for L */
  262|     88|    memset(p + n, 0, HASH_CBLOCK - 8 - n);
  ------------------
  |  |   23|     88|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     88|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  263|       |
  264|       |    /* Add the 64 bit L value to the end of the buffer */
  265|     88|    p += HASH_CBLOCK - 8;
  ------------------
  |  |   23|     88|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     88|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  266|     88|#if defined(DATA_ORDER_IS_BIG_ENDIAN)
  267|     88|    (void)HOST_l2c(c->Nh, p);
  ------------------
  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  142|     88|    l)
  ------------------
  268|     88|    (void)HOST_l2c(c->Nl, p);
  ------------------
  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  142|     88|    l)
  ------------------
  269|       |#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
  270|       |    (void)HOST_l2c(c->Nl, p);
  271|       |    (void)HOST_l2c(c->Nh, p);
  272|       |#endif
  273|     88|    p -= HASH_CBLOCK;
  ------------------
  |  |   23|     88|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     88|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  274|       |    /* Process the final padded chunk */
  275|     88|    HASH_BLOCK_DATA_ORDER(c, p, 1);
  ------------------
  |  |   69|     88|#define HASH_BLOCK_DATA_ORDER ossl_sm3_block_data_order
  ------------------
  276|     88|    c->num = 0;
  277|     88|    OPENSSL_cleanse(p, HASH_CBLOCK);
  ------------------
  |  |   23|     88|#define HASH_CBLOCK SM3_CBLOCK
  |  |  ------------------
  |  |  |  |   27|     88|#define SM3_CBLOCK 64
  |  |  ------------------
  ------------------
  278|       |
  279|       |#ifndef HASH_MAKE_STRING
  280|       |#error "HASH_MAKE_STRING must be defined!"
  281|       |#else
  282|     88|    HASH_MAKE_STRING(c, md);
  ------------------
  |  |   28|     88|    do {                         \
  |  |   29|     88|        unsigned long ll;        \
  |  |   30|     88|        ll = (c)->A;             \
  |  |   31|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   32|     88|        ll = (c)->B;             \
  |  |   33|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   34|     88|        ll = (c)->C;             \
  |  |   35|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   36|     88|        ll = (c)->D;             \
  |  |   37|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   38|     88|        ll = (c)->E;             \
  |  |   39|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   40|     88|        ll = (c)->F;             \
  |  |   41|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   42|     88|        ll = (c)->G;             \
  |  |   43|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   44|     88|        ll = (c)->H;             \
  |  |   45|     88|        (void)HOST_l2c(ll, (s)); \
  |  |  ------------------
  |  |  |  |  138|     88|#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
  |  |  |  |  139|     88|    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
  |  |  |  |  140|     88|    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
  |  |  |  |  141|     88|    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
  |  |  |  |  142|     88|    l)
  |  |  ------------------
  |  |   46|     88|    } while (0)
  |  |  ------------------
  |  |  |  Branch (46:14): [Folded, False: 88]
  |  |  ------------------
  ------------------
  283|     88|#endif
  284|       |
  285|     88|    return 1;
  286|     88|}

threads_common.c:ossl_sa_CTX_TABLE_ENTRY_get:
   82|  1.74k|    {                                                                                                             \
   83|  1.74k|        return (type *)ossl_sa_get((OPENSSL_SA *)sa, n);                                                          \
   84|  1.74k|    }                                                                                                             \
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|    239|    {                                                                                                             \
   83|    239|        return (type *)ossl_sa_get((OPENSSL_SA *)sa, n);                                                          \
   84|    239|    }                                                                                                             \
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|   831k|{
  342|   831k|    size_t i;
  343|       |#if defined(CHARSET_EBCDIC) && !defined(CHARSET_EBCDIC_TEST)
  344|       |    const long int case_adjust = ~0x40;
  345|       |#else
  346|   831k|    const long int case_adjust = ~0x20;
  347|   831k|#endif
  348|       |
  349|   831k|    if (src == NULL)
  ------------------
  |  Branch (349:9): [True: 0, False: 831k]
  ------------------
  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|   831k|    if (key != NULL && key->keysize + len > key->bufsize)
  ------------------
  |  Branch (357:9): [True: 831k, False: 0]
  |  Branch (357:24): [True: 0, False: 831k]
  ------------------
  358|      0|        len = (size_t)(key->bufsize - key->keysize);
  359|       |
  360|  5.86M|    for (i = 0; i < len && src[i] != '\0'; i++)
  ------------------
  |  Branch (360:17): [True: 5.03M, False: 831k]
  |  Branch (360:28): [True: 5.03M, False: 0]
  ------------------
  361|  5.03M|        tgt[i] = case_adjust & src[i];
  362|   831k|}

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

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

array_alloc.c:safe_mul_size_t:
  151|    808|    {                                                                \
  152|    808|        type r;                                                      \
  153|    808|                                                                     \
  154|    808|        if (!__builtin_mul_overflow(a, b, &r))                       \
  ------------------
  |  Branch (154:13): [True: 808, False: 0]
  ------------------
  155|    808|            return r;                                                \
  156|    808|        *err |= 1;                                                   \
  157|      0|        return a * b;                                                \
  158|    808|    }
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|  39.9k|{
  182|  39.9k|#ifdef OSSL_HTOLE64
  183|  39.9k|    uint64_t t = OSSL_HTOBE64(val);
  ------------------
  |  |   46|  39.9k|#define OSSL_HTOBE64(x) htobe64(x)
  ------------------
  184|       |
  185|  39.9k|    memcpy(out, (unsigned char *)&t, 8);
  186|  39.9k|    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|  39.9k|}

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.42k|{
  226|  4.42k|    if (ERR_SYSTEM_ERROR(errcode))
  ------------------
  |  |  222|  4.42k|#define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0)
  |  |  ------------------
  |  |  |  |  201|  4.42k|#define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1)
  |  |  ------------------
  |  |  |  Branch (222:35): [True: 0, False: 4.42k]
  |  |  ------------------
  ------------------
  227|      0|        return ERR_LIB_SYS;
  ------------------
  |  |   55|      0|#define ERR_LIB_SYS 2
  ------------------
  228|  4.42k|    return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK;
  ------------------
  |  |  209|  4.42k|#define ERR_LIB_OFFSET 23L
  ------------------
                  return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK;
  ------------------
  |  |  210|  4.42k|#define ERR_LIB_MASK 0xFF
  ------------------
  229|  4.42k|}
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|  2.80k|    {                                                                                                                      \
  113|  2.80k|        return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);                                                     \
  114|  2.80k|    }                                                                                                                      \
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|    467|    {                                                                                                                      \
  222|    467|        OPENSSL_STACK *ret = OPENSSL_sk_dup((const OPENSSL_STACK *)sk);                                                    \
  223|    467|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  224|    467|                                                                                                                           \
  225|    467|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  226|    467|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  227|    467|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  228|    467|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  229|    467|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_num:
  108|    468|    {                                                                                                                      \
  109|    468|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|    468|    }                                                                                                                      \
provider_core.c:sk_OSSL_PROVIDER_free:
  150|    467|    {                                                                                                                      \
  151|    467|        OPENSSL_sk_free((OPENSSL_STACK *)sk);                                                                              \
  152|    467|    }                                                                                                                      \
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|    232|    {                                                                                                                      \
  109|    232|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|    232|    }                                                                                                                      \
property.c:sk_IMPLEMENTATION_value:
  112|    164|    {                                                                                                                      \
  113|    164|        return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx);                                                     \
  114|    164|    }                                                                                                                      \
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|    166|    {                                                                                                                      \
  117|    166|        OPENSSL_STACK *ret = OPENSSL_sk_new((OPENSSL_sk_compfunc)compare);                                                 \
  118|    166|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  119|    166|                                                                                                                           \
  120|    166|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  121|    166|        OPENSSL_sk_set_cmp_thunks(ret, sk_##t1##_cmpfunc_thunk);                                                           \
  122|    166|        OPENSSL_sk_set_copy_thunks(ret, sk_##t1##_copyfunc_thunk);                                                         \
  123|    166|        return (STACK_OF(t1) *)OPENSSL_sk_set_thunks(ret, f_thunk);                                                        \
  124|    166|    }                                                                                                                      \
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|    166|    {                                                                                                                      \
  109|    166|        return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                                                                  \
  110|    166|    }                                                                                                                      \
property_parse.c:sk_OSSL_PROPERTY_DEFINITION_sort:
  213|    166|    {                                                                                                                      \
  214|    166|        OPENSSL_sk_sort((OPENSSL_STACK *)sk);                                                                              \
  215|    166|    }                                                                                                                      \
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|    166|    {                                                                                                                      \
  184|    166|        OPENSSL_sk_freefunc_thunk f_thunk;                                                                                 \
  185|    166|                                                                                                                           \
  186|    166|        f_thunk = (OPENSSL_sk_freefunc_thunk)sk_##t1##_freefunc_thunk;                                                     \
  187|    166|        sk = (STACK_OF(t1) *)OPENSSL_sk_set_thunks((OPENSSL_STACK *)sk, f_thunk);                                          \
  188|    166|                                                                                                                           \
  189|    166|        OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc);                                           \
  190|    166|    }                                                                                                                      \
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|     38|{
   34|     38|    return params == NULL || params->key == NULL;
  ------------------
  |  Branch (34:12): [True: 38, False: 0]
  |  Branch (34:30): [True: 0, False: 0]
  ------------------
   35|     38|}

ossl_prov_ctx_new:
   16|      2|{
   17|      2|    return OPENSSL_zalloc(sizeof(PROV_CTX));
  ------------------
  |  |  113|      2|    CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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:
  285|      1|{
  286|      1|#ifndef OPENSSL_NO_ERR
  287|      1|    if (ERR_reason_error_string(PROV_str_reasons[0].error) == NULL)
  ------------------
  |  Branch (287:9): [True: 1, False: 0]
  ------------------
  288|      1|        ERR_load_strings_const(PROV_str_reasons);
  289|      1|#endif
  290|      1|    return 1;
  291|      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|    141|        for (i = j = 0; in[i].alg.algorithm_names != NULL; ++i) {
  ------------------
  |  Branch (225:25): [True: 140, False: 1]
  ------------------
  226|    140|            if (in[i].capable == NULL || in[i].capable())
  ------------------
  |  Branch (226:17): [True: 127, False: 13]
  |  Branch (226:42): [True: 0, False: 13]
  ------------------
  227|    127|                out[j++] = in[i].alg;
  228|    140|        }
  229|      1|        out[j++] = in[i].alg;
  230|      1|    }
  231|      1|}

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

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|    148|{
   66|    148|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|    148|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   67|       |
   68|    148|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|    148|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 148, Folded]
  |  |  ------------------
  ------------------
   69|    148|        memcpy(dst, &w, sizeof(w));
   70|    148|    } 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|    148|}
blake2b_prov.c:store64:
   80|    740|{
   81|    740|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|    740|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   82|       |
   83|    740|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|    740|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 740, Folded]
  |  |  ------------------
  ------------------
   84|    740|        memcpy(dst, &w, sizeof(w));
   85|    740|    } 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|    740|}
blake2b_prov.c:load64:
   44|  15.2M|{
   45|  15.2M|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|  15.2M|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   46|       |
   47|  15.2M|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|  15.2M|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 15.2M, Folded]
  |  |  ------------------
  ------------------
   48|  15.2M|        uint64_t w;
   49|  15.2M|        memcpy(&w, src, sizeof(w));
   50|  15.2M|        return w;
   51|  15.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|  15.2M|}
blake2b_prov.c:rotr64:
  122|   366M|{
  123|   366M|    return (w >> c) | (w << (64 - c));
  124|   366M|}
blake2s_prov.c:store32:
   65|    680|{
   66|    680|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|    680|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   67|       |
   68|    680|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|    680|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 680, Folded]
  |  |  ------------------
  ------------------
   69|    680|        memcpy(dst, &w, sizeof(w));
   70|    680|    } 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|    680|}
blake2s_prov.c:store48:
  106|    136|{
  107|    136|    uint8_t *p = (uint8_t *)dst;
  108|    136|    p[0] = (uint8_t)w;
  109|    136|    p[1] = (uint8_t)(w >> 8);
  110|    136|    p[2] = (uint8_t)(w >> 16);
  111|    136|    p[3] = (uint8_t)(w >> 24);
  112|    136|    p[4] = (uint8_t)(w >> 32);
  113|    136|    p[5] = (uint8_t)(w >> 40);
  114|    136|}
blake2s_prov.c:load32:
   27|  25.8M|{
   28|  25.8M|    DECLARE_IS_ENDIAN;
  ------------------
  |  |   25|  25.8M|#define DECLARE_IS_ENDIAN const int ossl_is_little_endian = __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  ------------------
   29|       |
   30|  25.8M|    if (IS_LITTLE_ENDIAN) {
  ------------------
  |  |   26|  25.8M|#define IS_LITTLE_ENDIAN (ossl_is_little_endian)
  |  |  ------------------
  |  |  |  Branch (26:26): [True: 25.8M, Folded]
  |  |  ------------------
  ------------------
   31|  25.8M|        uint32_t w;
   32|  25.8M|        memcpy(&w, src, sizeof(w));
   33|  25.8M|        return w;
   34|  25.8M|    } 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|  25.8M|}
blake2s_prov.c:rotr32:
  117|   516M|{
  118|   516M|    return (w >> c) | (w << (32 - c));
  119|   516M|}

blake2_prov.c:blake2s256_freectx:
  115|     68|    {                                                                                                             \
  116|     68|        struct blake##variant##_md_data_st *ctx;                                                                  \
  117|     68|                                                                                                                  \
  118|     68|        ctx = (struct blake##variant##_md_data_st *)vctx;                                                         \
  119|     68|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                                                    \
  ------------------
  |  |  134|     68|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  120|     68|    }                                                                                                             \
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|    136|    {                                                                                                             \
  102|    136|        return ossl_prov_is_running() && ossl_blake##variant##_set_ctx_params(ctx, params)                        \
  ------------------
  |  Branch (102:16): [True: 136, False: 0]
  |  Branch (102:42): [True: 136, False: 0]
  ------------------
  103|    136|            && ossl_blake##variantsize##_init(ctx);                                                               \
  ------------------
  |  Branch (103:16): [True: 136, False: 0]
  ------------------
  104|    136|    }                                                                                                             \
blake2_prov.c:ossl_blake2s256_init:
   83|    136|    {                                                                                                             \
   84|    136|        struct blake##variant##_md_data_st *mdctx = ctx;                                                          \
   85|    136|        uint8_t digest_length = mdctx->params.digest_length;                                                      \
   86|    136|                                                                                                                  \
   87|    136|        ossl_blake##variant##_param_init(&mdctx->params);                                                         \
   88|    136|        if (digest_length != 0)                                                                                   \
  ------------------
  |  Branch (88:13): [True: 68, False: 68]
  ------------------
   89|    136|            mdctx->params.digest_length = digest_length;                                                          \
   90|    136|        return ossl_blake##variant##_init(&mdctx->ctx, &mdctx->params);                                           \
   91|    136|    }                                                                                                             \
blake2_prov.c:blake_gettable_ctx_params:
   26|    142|{
   27|    142|    return blake_get_ctx_params_list;
   28|    142|}
blake2_prov.c:blake2b512_freectx:
  115|     74|    {                                                                                                             \
  116|     74|        struct blake##variant##_md_data_st *ctx;                                                                  \
  117|     74|                                                                                                                  \
  118|     74|        ctx = (struct blake##variant##_md_data_st *)vctx;                                                         \
  119|     74|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                                                    \
  ------------------
  |  |  134|     74|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  120|     74|    }                                                                                                             \
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|    148|    {                                                                                                             \
  102|    148|        return ossl_prov_is_running() && ossl_blake##variant##_set_ctx_params(ctx, params)                        \
  ------------------
  |  Branch (102:16): [True: 148, False: 0]
  |  Branch (102:42): [True: 148, False: 0]
  ------------------
  103|    148|            && ossl_blake##variantsize##_init(ctx);                                                               \
  ------------------
  |  Branch (103:16): [True: 148, False: 0]
  ------------------
  104|    148|    }                                                                                                             \
blake2_prov.c:ossl_blake2b512_init:
   83|    148|    {                                                                                                             \
   84|    148|        struct blake##variant##_md_data_st *mdctx = ctx;                                                          \
   85|    148|        uint8_t digest_length = mdctx->params.digest_length;                                                      \
   86|    148|                                                                                                                  \
   87|    148|        ossl_blake##variant##_param_init(&mdctx->params);                                                         \
   88|    148|        if (digest_length != 0)                                                                                   \
  ------------------
  |  Branch (88:13): [True: 74, False: 74]
  ------------------
   89|    148|            mdctx->params.digest_length = digest_length;                                                          \
   90|    148|        return ossl_blake##variant##_init(&mdctx->ctx, &mdctx->params);                                           \
   91|    148|    }                                                                                                             \

blake2_prov.c:blake_get_ctx_params_decoder:
   36|    142|{
   37|    142|    const char *s;
   38|       |
   39|    142|    memset(r, 0, sizeof(*r));
   40|    142|    if (p != NULL)
  ------------------
  |  Branch (40:9): [True: 142, False: 0]
  ------------------
   41|    284|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (41:16): [True: 142, False: 142]
  ------------------
   42|    142|            if (ossl_likely(strcmp("size", s + 0) == 0)) {
  ------------------
  |  |   23|    142|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 142, False: 0]
  |  |  ------------------
  ------------------
   43|       |                /* OSSL_DIGEST_PARAM_SIZE */
   44|    142|                if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   24|    142|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 142]
  |  |  ------------------
  ------------------
   45|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   46|      0|                                   "param %s is repeated", s);
   47|      0|                    return 0;
   48|      0|                }
   49|    142|                r->size = (OSSL_PARAM *)p;
   50|    142|            }
   51|    142|    return 1;
   52|    142|}
blake2_prov.c:blake_set_ctx_params_decoder:
   73|    284|{
   74|    284|    const char *s;
   75|       |
   76|    284|    memset(r, 0, sizeof(*r));
   77|    284|    if (p != NULL)
  ------------------
  |  Branch (77:9): [True: 0, False: 284]
  ------------------
   78|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (78:16): [True: 0, False: 0]
  ------------------
   79|      0|            if (ossl_likely(strcmp("size", s + 0) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   80|       |                /* OSSL_DIGEST_PARAM_SIZE */
   81|      0|                if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   82|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   83|      0|                                   "param %s is repeated", s);
   84|      0|                    return 0;
   85|      0|                }
   86|      0|                r->size = (OSSL_PARAM *)p;
   87|      0|            }
   88|    284|    return 1;
   89|    284|}

ossl_blake2b_param_init:
   83|    148|{
   84|    148|    P->digest_length = BLAKE2B_DIGEST_LENGTH;
  ------------------
  |  |   80|    148|#define BLAKE2B_DIGEST_LENGTH 64
  ------------------
   85|    148|    P->key_length = 0;
   86|    148|    P->fanout = 1;
   87|    148|    P->depth = 1;
   88|    148|    store32(P->leaf_length, 0);
   89|    148|    store64(P->node_offset, 0);
   90|    148|    P->node_depth = 0;
   91|    148|    P->inner_length = 0;
   92|    148|    memset(P->reserved, 0, sizeof(P->reserved));
   93|    148|    memset(P->salt, 0, sizeof(P->salt));
   94|    148|    memset(P->personal, 0, sizeof(P->personal));
   95|    148|}
ossl_blake2b_init:
  126|    148|{
  127|    148|    blake2b_init_param(c, P);
  128|    148|    return 1;
  129|    148|}
ossl_blake2b_update:
  258|    148|{
  259|    148|    const uint8_t *in = data;
  260|    148|    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|    148|    fill = sizeof(c->buf) - c->buflen;
  271|    148|    if (datalen > fill) {
  ------------------
  |  Branch (271:9): [True: 148, False: 0]
  ------------------
  272|    148|        if (c->buflen) {
  ------------------
  |  Branch (272:13): [True: 74, False: 74]
  ------------------
  273|     74|            memcpy(c->buf + c->buflen, in, fill); /* Fill buffer */
  274|     74|            blake2b_compress(c, c->buf, BLAKE2B_BLOCKBYTES);
  ------------------
  |  |   25|     74|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  275|     74|            c->buflen = 0;
  276|     74|            in += fill;
  277|     74|            datalen -= fill;
  278|     74|        }
  279|    148|        if (datalen > BLAKE2B_BLOCKBYTES) {
  ------------------
  |  |   25|    148|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  |  Branch (279:13): [True: 148, False: 0]
  ------------------
  280|    148|            size_t stashlen = datalen % BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    148|#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|    148|            stashlen = stashlen ? stashlen : BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    239|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  |  Branch (285:24): [True: 57, False: 91]
  ------------------
  286|    148|            datalen -= stashlen;
  287|    148|            blake2b_compress(c, in, datalen);
  288|    148|            in += datalen;
  289|    148|            datalen = stashlen;
  290|    148|        }
  291|    148|    }
  292|       |
  293|    148|    assert(datalen <= BLAKE2B_BLOCKBYTES);
  294|       |
  295|    148|    memcpy(c->buf + c->buflen, in, datalen);
  296|    148|    c->buflen += datalen; /* Be lazy, do not compress */
  297|       |
  298|    148|    return 1;
  299|    148|}
ossl_blake2b_final:
  306|     74|{
  307|     74|    uint8_t outbuffer[BLAKE2B_OUTBYTES] = { 0 };
  308|     74|    uint8_t *target = outbuffer;
  309|     74|    int iter = (int)((c->outlen + 7) / 8);
  310|     74|    int i;
  311|       |
  312|       |    /* Avoid writing to the temporary buffer if possible */
  313|     74|    if ((c->outlen % sizeof(c->h[0])) == 0)
  ------------------
  |  Branch (313:9): [True: 74, False: 0]
  ------------------
  314|     74|        target = md;
  315|       |
  316|     74|    blake2b_set_lastblock(c);
  317|       |    /* Padding */
  318|     74|    memset(c->buf + c->buflen, 0, sizeof(c->buf) - c->buflen);
  319|     74|    blake2b_compress(c, c->buf, c->buflen);
  320|       |
  321|       |    /* Output full hash to buffer */
  322|    666|    for (i = 0; i < iter; ++i)
  ------------------
  |  Branch (322:17): [True: 592, False: 74]
  ------------------
  323|    592|        store64(target + sizeof(c->h[i]) * i, c->h[i]);
  324|       |
  325|     74|    if (target != md) {
  ------------------
  |  Branch (325:9): [True: 0, False: 74]
  ------------------
  326|      0|        memcpy(md, target, c->outlen);
  327|      0|        OPENSSL_cleanse(target, sizeof(outbuffer));
  328|      0|    }
  329|       |
  330|     74|    OPENSSL_cleanse(c, sizeof(BLAKE2B_CTX));
  331|     74|    return 1;
  332|     74|}
blake2b_prov.c:blake2b_init_param:
   65|    148|{
   66|    148|    size_t i;
   67|    148|    const uint8_t *p = (const uint8_t *)(P);
   68|       |
   69|    148|    blake2b_init0(S);
   70|    148|    S->outlen = P->digest_length;
   71|       |
   72|       |    /* The param struct is carefully hand packed, and should be 64 bytes on
   73|       |     * every platform. */
   74|    148|    assert(sizeof(BLAKE2B_PARAM) == 64);
   75|       |    /* IV XOR ParamBlock */
   76|  1.33k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (76:17): [True: 1.18k, False: 148]
  ------------------
   77|  1.18k|        S->h[i] ^= load64(p + sizeof(S->h[i]) * i);
   78|  1.18k|    }
   79|    148|}
blake2b_prov.c:blake2b_init0:
   54|    148|{
   55|    148|    int i;
   56|       |
   57|    148|    memset(S, 0, sizeof(BLAKE2B_CTX));
   58|  1.33k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (58:17): [True: 1.18k, False: 148]
  ------------------
   59|  1.18k|        S->h[i] = blake2b_IV[i];
   60|  1.18k|    }
   61|    148|}
blake2b_prov.c:blake2b_compress:
  156|    296|{
  157|    296|    uint64_t m[16];
  158|    296|    uint64_t v[16];
  159|    296|    int i;
  160|    296|    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|    296|    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|    296|    increment = len < BLAKE2B_BLOCKBYTES ? len : BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    296|#define BLAKE2B_BLOCKBYTES 128
  ------------------
                  increment = len < BLAKE2B_BLOCKBYTES ? len : BLAKE2B_BLOCKBYTES;
  ------------------
  |  |   25|    535|#define BLAKE2B_BLOCKBYTES 128
  ------------------
  |  Branch (181:17): [True: 57, False: 239]
  ------------------
  182|       |
  183|  2.66k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (183:17): [True: 2.36k, False: 296]
  ------------------
  184|  2.36k|        v[i] = S->h[i];
  185|  2.36k|    }
  186|       |
  187|   955k|    do {
  188|  16.2M|        for (i = 0; i < 16; ++i) {
  ------------------
  |  Branch (188:21): [True: 15.2M, False: 955k]
  ------------------
  189|  15.2M|            m[i] = load64(blocks + i * sizeof(m[i]));
  190|  15.2M|        }
  191|       |
  192|       |        /* blake2b_increment_counter */
  193|   955k|        S->t[0] += increment;
  194|   955k|        S->t[1] += (S->t[0] < increment);
  195|       |
  196|   955k|        v[8] = blake2b_IV[0];
  197|   955k|        v[9] = blake2b_IV[1];
  198|   955k|        v[10] = blake2b_IV[2];
  199|   955k|        v[11] = blake2b_IV[3];
  200|   955k|        v[12] = S->t[0] ^ blake2b_IV[4];
  201|   955k|        v[13] = S->t[1] ^ blake2b_IV[5];
  202|   955k|        v[14] = S->f[0] ^ blake2b_IV[6];
  203|   955k|        v[15] = S->f[1] ^ blake2b_IV[7];
  204|   955k|#define G(r, i, a, b, c, d)                         \
  205|   955k|    do {                                            \
  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  207|   955k|        d = rotr64(d ^ a, 32);                      \
  208|   955k|        c = c + d;                                  \
  209|   955k|        b = rotr64(b ^ c, 24);                      \
  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  211|   955k|        d = rotr64(d ^ a, 16);                      \
  212|   955k|        c = c + d;                                  \
  213|   955k|        b = rotr64(b ^ c, 63);                      \
  214|   955k|    } while (0)
  215|   955k|#define ROUND(r)                           \
  216|   955k|    do {                                   \
  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  225|   955k|    } 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|   955k|        ROUND(0);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  233|   955k|        ROUND(1);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  234|   955k|        ROUND(2);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  235|   955k|        ROUND(3);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  236|   955k|        ROUND(4);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  237|   955k|        ROUND(5);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  238|   955k|        ROUND(6);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  239|   955k|        ROUND(7);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  240|   955k|        ROUND(8);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  241|   955k|        ROUND(9);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  242|   955k|        ROUND(10);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  243|   955k|        ROUND(11);
  ------------------
  |  |  216|   955k|    do {                                   \
  |  |  217|   955k|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|   955k|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  219|   955k|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  220|   955k|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  221|   955k|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  222|   955k|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   955k|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  224|   955k|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  205|   955k|    do {                                            \
  |  |  |  |  206|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \
  |  |  |  |  207|   955k|        d = rotr64(d ^ a, 32);                      \
  |  |  |  |  208|   955k|        c = c + d;                                  \
  |  |  |  |  209|   955k|        b = rotr64(b ^ c, 24);                      \
  |  |  |  |  210|   955k|        a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \
  |  |  |  |  211|   955k|        d = rotr64(d ^ a, 16);                      \
  |  |  |  |  212|   955k|        c = c + d;                                  \
  |  |  |  |  213|   955k|        b = rotr64(b ^ c, 63);                      \
  |  |  |  |  214|   955k|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (214:14): [Folded, False: 955k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  225|   955k|    } while (0)
  |  |  ------------------
  |  |  |  Branch (225:14): [Folded, False: 955k]
  |  |  ------------------
  ------------------
  244|   955k|#endif
  245|       |
  246|  8.59M|        for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (246:21): [True: 7.64M, False: 955k]
  ------------------
  247|  7.64M|            S->h[i] = v[i] ^= v[i + 8] ^ S->h[i];
  248|  7.64M|        }
  249|   955k|#undef G
  250|   955k|#undef ROUND
  251|   955k|        blocks += increment;
  252|   955k|        len -= increment;
  253|   955k|    } while (len);
  ------------------
  |  Branch (253:14): [True: 954k, False: 296]
  ------------------
  254|    296|}
blake2b_prov.c:blake2b_set_lastblock:
   48|     74|{
   49|     74|    S->f[0] = -1;
   50|     74|}

ossl_blake2s_param_init:
   77|    136|{
   78|    136|    P->digest_length = BLAKE2S_DIGEST_LENGTH;
  ------------------
  |  |   81|    136|#define BLAKE2S_DIGEST_LENGTH 32
  ------------------
   79|    136|    P->key_length = 0;
   80|    136|    P->fanout = 1;
   81|    136|    P->depth = 1;
   82|    136|    store32(P->leaf_length, 0);
   83|    136|    store48(P->node_offset, 0);
   84|    136|    P->node_depth = 0;
   85|    136|    P->inner_length = 0;
   86|    136|    memset(P->salt, 0, sizeof(P->salt));
   87|    136|    memset(P->personal, 0, sizeof(P->personal));
   88|    136|}
ossl_blake2s_init:
  119|    136|{
  120|    136|    blake2s_init_param(c, P);
  121|    136|    return 1;
  122|    136|}
ossl_blake2s_update:
  249|    136|{
  250|    136|    const uint8_t *in = data;
  251|    136|    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|    136|    fill = sizeof(c->buf) - c->buflen;
  262|    136|    if (datalen > fill) {
  ------------------
  |  Branch (262:9): [True: 136, False: 0]
  ------------------
  263|    136|        if (c->buflen) {
  ------------------
  |  Branch (263:13): [True: 68, False: 68]
  ------------------
  264|     68|            memcpy(c->buf + c->buflen, in, fill); /* Fill buffer */
  265|     68|            blake2s_compress(c, c->buf, BLAKE2S_BLOCKBYTES);
  ------------------
  |  |   19|     68|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  266|     68|            c->buflen = 0;
  267|     68|            in += fill;
  268|     68|            datalen -= fill;
  269|     68|        }
  270|    136|        if (datalen > BLAKE2S_BLOCKBYTES) {
  ------------------
  |  |   19|    136|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  |  Branch (270:13): [True: 136, False: 0]
  ------------------
  271|    136|            size_t stashlen = datalen % BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    136|#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|    136|            stashlen = stashlen ? stashlen : BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    222|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  |  Branch (276:24): [True: 50, False: 86]
  ------------------
  277|    136|            datalen -= stashlen;
  278|    136|            blake2s_compress(c, in, datalen);
  279|    136|            in += datalen;
  280|    136|            datalen = stashlen;
  281|    136|        }
  282|    136|    }
  283|       |
  284|    136|    assert(datalen <= BLAKE2S_BLOCKBYTES);
  285|       |
  286|    136|    memcpy(c->buf + c->buflen, in, datalen);
  287|    136|    c->buflen += datalen; /* Be lazy, do not compress */
  288|       |
  289|    136|    return 1;
  290|    136|}
ossl_blake2s_final:
  297|     68|{
  298|     68|    uint8_t outbuffer[BLAKE2S_OUTBYTES] = { 0 };
  299|     68|    uint8_t *target = outbuffer;
  300|     68|    int iter = (int)((c->outlen + 3) / 4);
  301|     68|    int i;
  302|       |
  303|       |    /* Avoid writing to the temporary buffer if possible */
  304|     68|    if ((c->outlen % sizeof(c->h[0])) == 0)
  ------------------
  |  Branch (304:9): [True: 68, False: 0]
  ------------------
  305|     68|        target = md;
  306|       |
  307|     68|    blake2s_set_lastblock(c);
  308|       |    /* Padding */
  309|     68|    memset(c->buf + c->buflen, 0, sizeof(c->buf) - c->buflen);
  310|     68|    blake2s_compress(c, c->buf, c->buflen);
  311|       |
  312|       |    /* Output full hash to buffer */
  313|    612|    for (i = 0; i < iter; ++i)
  ------------------
  |  Branch (313:17): [True: 544, False: 68]
  ------------------
  314|    544|        store32(target + sizeof(c->h[i]) * i, c->h[i]);
  315|       |
  316|     68|    if (target != md) {
  ------------------
  |  Branch (316:9): [True: 0, False: 68]
  ------------------
  317|      0|        memcpy(md, target, c->outlen);
  318|      0|        OPENSSL_cleanse(target, sizeof(outbuffer));
  319|      0|    }
  320|       |
  321|     68|    OPENSSL_cleanse(c, sizeof(BLAKE2S_CTX));
  322|     68|    return 1;
  323|     68|}
blake2s_prov.c:blake2s_init_param:
   60|    136|{
   61|    136|    size_t i;
   62|    136|    const uint8_t *p = (const uint8_t *)(P);
   63|       |
   64|    136|    blake2s_init0(S);
   65|    136|    S->outlen = P->digest_length;
   66|       |
   67|       |    /* The param struct is carefully hand packed, and should be 32 bytes on
   68|       |     * every platform. */
   69|    136|    assert(sizeof(BLAKE2S_PARAM) == 32);
   70|       |    /* IV XOR ParamBlock */
   71|  1.22k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (71:17): [True: 1.08k, False: 136]
  ------------------
   72|  1.08k|        S->h[i] ^= load32(&p[i * 4]);
   73|  1.08k|    }
   74|    136|}
blake2s_prov.c:blake2s_init0:
   49|    136|{
   50|    136|    int i;
   51|       |
   52|    136|    memset(S, 0, sizeof(BLAKE2S_CTX));
   53|  1.22k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (53:17): [True: 1.08k, False: 136]
  ------------------
   54|  1.08k|        S->h[i] = blake2s_IV[i];
   55|  1.08k|    }
   56|    136|}
blake2s_prov.c:blake2s_compress:
  149|    272|{
  150|    272|    uint32_t m[16];
  151|    272|    uint32_t v[16];
  152|    272|    size_t i;
  153|    272|    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|    272|    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|    272|    increment = len < BLAKE2S_BLOCKBYTES ? (uint32_t)len : BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    272|#define BLAKE2S_BLOCKBYTES 64
  ------------------
                  increment = len < BLAKE2S_BLOCKBYTES ? (uint32_t)len : BLAKE2S_BLOCKBYTES;
  ------------------
  |  |   19|    494|#define BLAKE2S_BLOCKBYTES 64
  ------------------
  |  Branch (174:17): [True: 50, False: 222]
  ------------------
  175|       |
  176|  2.44k|    for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (176:17): [True: 2.17k, False: 272]
  ------------------
  177|  2.17k|        v[i] = S->h[i];
  178|  2.17k|    }
  179|       |
  180|  1.61M|    do {
  181|  27.4M|        for (i = 0; i < 16; ++i) {
  ------------------
  |  Branch (181:21): [True: 25.8M, False: 1.61M]
  ------------------
  182|  25.8M|            m[i] = load32(blocks + i * sizeof(m[i]));
  183|  25.8M|        }
  184|       |
  185|       |        /* blake2s_increment_counter */
  186|  1.61M|        S->t[0] += increment;
  187|  1.61M|        S->t[1] += (S->t[0] < increment);
  188|       |
  189|  1.61M|        v[8] = blake2s_IV[0];
  190|  1.61M|        v[9] = blake2s_IV[1];
  191|  1.61M|        v[10] = blake2s_IV[2];
  192|  1.61M|        v[11] = blake2s_IV[3];
  193|  1.61M|        v[12] = S->t[0] ^ blake2s_IV[4];
  194|  1.61M|        v[13] = S->t[1] ^ blake2s_IV[5];
  195|  1.61M|        v[14] = S->f[0] ^ blake2s_IV[6];
  196|  1.61M|        v[15] = S->f[1] ^ blake2s_IV[7];
  197|  1.61M|#define G(r, i, a, b, c, d)                         \
  198|  1.61M|    do {                                            \
  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  201|  1.61M|        c = c + d;                                  \
  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  205|  1.61M|        c = c + d;                                  \
  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  207|  1.61M|    } while (0)
  208|  1.61M|#define ROUND(r)                           \
  209|  1.61M|    do {                                   \
  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  218|  1.61M|    } 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.61M|        ROUND(0);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  226|  1.61M|        ROUND(1);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  227|  1.61M|        ROUND(2);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  228|  1.61M|        ROUND(3);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  229|  1.61M|        ROUND(4);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  230|  1.61M|        ROUND(5);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  231|  1.61M|        ROUND(6);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  232|  1.61M|        ROUND(7);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  233|  1.61M|        ROUND(8);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  234|  1.61M|        ROUND(9);
  ------------------
  |  |  209|  1.61M|    do {                                   \
  |  |  210|  1.61M|        G(r, 0, v[0], v[4], v[8], v[12]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  211|  1.61M|        G(r, 1, v[1], v[5], v[9], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  212|  1.61M|        G(r, 2, v[2], v[6], v[10], v[14]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  213|  1.61M|        G(r, 3, v[3], v[7], v[11], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  214|  1.61M|        G(r, 4, v[0], v[5], v[10], v[15]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  215|  1.61M|        G(r, 5, v[1], v[6], v[11], v[12]); \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  216|  1.61M|        G(r, 6, v[2], v[7], v[8], v[13]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  217|  1.61M|        G(r, 7, v[3], v[4], v[9], v[14]);  \
  |  |  ------------------
  |  |  |  |  198|  1.61M|    do {                                            \
  |  |  |  |  199|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \
  |  |  |  |  200|  1.61M|        d = rotr32(d ^ a, 16);                      \
  |  |  |  |  201|  1.61M|        c = c + d;                                  \
  |  |  |  |  202|  1.61M|        b = rotr32(b ^ c, 12);                      \
  |  |  |  |  203|  1.61M|        a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \
  |  |  |  |  204|  1.61M|        d = rotr32(d ^ a, 8);                       \
  |  |  |  |  205|  1.61M|        c = c + d;                                  \
  |  |  |  |  206|  1.61M|        b = rotr32(b ^ c, 7);                       \
  |  |  |  |  207|  1.61M|    } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (207:14): [Folded, False: 1.61M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  218|  1.61M|    } while (0)
  |  |  ------------------
  |  |  |  Branch (218:14): [Folded, False: 1.61M]
  |  |  ------------------
  ------------------
  235|  1.61M|#endif
  236|       |
  237|  14.5M|        for (i = 0; i < 8; ++i) {
  ------------------
  |  Branch (237:21): [True: 12.9M, False: 1.61M]
  ------------------
  238|  12.9M|            S->h[i] = v[i] ^= v[i + 8] ^ S->h[i];
  239|  12.9M|        }
  240|  1.61M|#undef G
  241|  1.61M|#undef ROUND
  242|  1.61M|        blocks += increment;
  243|  1.61M|        len -= increment;
  244|  1.61M|    } while (len);
  ------------------
  |  Branch (244:14): [True: 1.61M, False: 272]
  ------------------
  245|    272|}
blake2s_prov.c:blake2s_set_lastblock:
   43|     68|{
   44|     68|    S->f[0] = -1;
   45|     68|}

cshake_prov.c:cshake_128_newctx:
  479|      2|    {                                                                               \
  480|      2|        return cshake_newctx(provctx, bitlen);                                      \
  481|      2|    }                                                                               \
cshake_prov.c:cshake_newctx:
  203|      3|{
  204|      3|    CSHAKE_CTX *ctx;
  205|       |
  206|      3|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   24|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24: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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  209|      3|    if (ctx != NULL) {
  ------------------
  |  Branch (209:9): [True: 3, False: 0]
  ------------------
  210|      3|        ctx->mdctx = EVP_MD_CTX_create();
  ------------------
  |  |  702|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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()))
  ------------------
  |  |   24|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24: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: 4, False: 2]
  ------------------
  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: 2, False: 1]
  ------------------
  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,
  ------------------
  |  |  238|      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()))
  ------------------
  |  |   24|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24: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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  226|      3|    EVP_MD_free(ctx->md);
  227|      3|    EVP_MD_CTX_destroy(ctx->mdctx);
  ------------------
  |  |  704|      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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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|      1|    {                                                                               \
  480|      1|        return cshake_newctx(provctx, bitlen);                                      \
  481|      1|    }                                                                               \

cshake_prov.c:cshake_set_ctx_params_decoder:
   42|      6|{
   43|      6|    const char *s;
   44|       |
   45|      6|    memset(r, 0, sizeof(*r));
   46|      6|    if (p != NULL)
  ------------------
  |  Branch (46:9): [True: 0, False: 6]
  ------------------
   47|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (47:16): [True: 0, False: 0]
  ------------------
   48|      0|            switch(s[0]) {
   49|      0|            default:
  ------------------
  |  Branch (49:13): [True: 0, False: 0]
  ------------------
   50|      0|                break;
   51|      0|            case 'c':
  ------------------
  |  Branch (51:13): [True: 0, False: 0]
  ------------------
   52|      0|                if (ossl_likely(strcmp("ustomization", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   53|       |                    /* OSSL_DIGEST_PARAM_CUSTOMIZATION */
   54|      0|                    if (ossl_unlikely(r->custom != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   55|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   56|      0|                                       "param %s is repeated", s);
   57|      0|                        return 0;
   58|      0|                    }
   59|      0|                    r->custom = (OSSL_PARAM *)p;
   60|      0|                }
   61|      0|                break;
   62|      0|            case 'f':
  ------------------
  |  Branch (62:13): [True: 0, False: 0]
  ------------------
   63|      0|                if (ossl_likely(strcmp("unction-name", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   64|       |                    /* OSSL_DIGEST_PARAM_FUNCTION_NAME */
   65|      0|                    if (ossl_unlikely(r->func != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   66|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   67|      0|                                       "param %s is repeated", s);
   68|      0|                        return 0;
   69|      0|                    }
   70|      0|                    r->func = (OSSL_PARAM *)p;
   71|      0|                }
   72|      0|                break;
   73|      0|            case 'p':
  ------------------
  |  Branch (73:13): [True: 0, False: 0]
  ------------------
   74|      0|                if (ossl_likely(strcmp("roperties", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   75|       |                    /* OSSL_DIGEST_PARAM_PROPERTIES */
   76|      0|                    if (ossl_unlikely(r->propq != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   77|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   78|      0|                                       "param %s is repeated", s);
   79|      0|                        return 0;
   80|      0|                    }
   81|      0|                    r->propq = (OSSL_PARAM *)p;
   82|      0|                }
   83|      0|                break;
   84|      0|            case 's':
  ------------------
  |  Branch (84:13): [True: 0, False: 0]
  ------------------
   85|      0|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   86|       |                    /* OSSL_DIGEST_PARAM_SIZE */
   87|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   88|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   89|      0|                                       "param %s is repeated", s);
   90|      0|                        return 0;
   91|      0|                    }
   92|      0|                    r->xoflen = (OSSL_PARAM *)p;
   93|      0|                }
   94|      0|                break;
   95|      0|            case 'x':
  ------------------
  |  Branch (95:13): [True: 0, False: 0]
  ------------------
   96|      0|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   97|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
   98|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   99|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  100|      0|                                       "param %s is repeated", s);
  101|      0|                        return 0;
  102|      0|                    }
  103|      0|                    r->xoflen = (OSSL_PARAM *)p;
  104|      0|                }
  105|      0|            }
  106|      6|    return 1;
  107|      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|      0|            case 'f':
  ------------------
  |  Branch (142:13): [True: 0, False: 3]
  ------------------
  143|       |# if defined(FIPS_MODULE)
  144|       |                if (ossl_likely(strcmp("ips-indicator", s + 1) == 0)) {
  145|       |                    /* OSSL_DIGEST_PARAM_FIPS_APPROVED_INDICATOR */
  146|       |                    if (!OSSL_PARAM_set_int((OSSL_PARAM *)p, 1))
  147|       |                        return 0;
  148|       |                }
  149|       |# endif
  150|      0|                break;
  151|      3|            case 's':
  ------------------
  |  Branch (151:13): [True: 3, False: 0]
  ------------------
  152|      3|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   23|      3|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  153|       |                    /* OSSL_DIGEST_PARAM_SIZE */
  154|      3|                    if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   24|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  155|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  156|      0|                                       "param %s is repeated", s);
  157|      0|                        return 0;
  158|      0|                    }
  159|      3|                    r->size = (OSSL_PARAM *)p;
  160|      3|                }
  161|      3|                break;
  162|      3|            case 'x':
  ------------------
  |  Branch (162:13): [True: 0, False: 3]
  ------------------
  163|      0|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  164|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
  165|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  166|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  167|      0|                                       "param %s is repeated", s);
  168|      0|                        return 0;
  169|      0|                    }
  170|      0|                    r->xoflen = (OSSL_PARAM *)p;
  171|      0|                }
  172|      3|            }
  173|      3|    return 1;
  174|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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:
   42|     34|{
   43|     34|    const char *s;
   44|       |
   45|     34|    memset(r, 0, sizeof(*r));
   46|     34|    if (p != NULL)
  ------------------
  |  Branch (46:9): [True: 34, False: 0]
  ------------------
   47|    170|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (47:16): [True: 136, False: 34]
  ------------------
   48|    136|            switch(s[0]) {
   49|      0|            default:
  ------------------
  |  Branch (49:13): [True: 0, False: 136]
  ------------------
   50|      0|                break;
   51|     34|            case 'a':
  ------------------
  |  Branch (51:13): [True: 34, False: 102]
  ------------------
   52|     34|                if (ossl_likely(strcmp("lgid-absent", s + 1) == 0)) {
  ------------------
  |  |   23|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   53|       |                    /* OSSL_DIGEST_PARAM_ALGID_ABSENT */
   54|     34|                    if (ossl_unlikely(r->aldid != NULL)) {
  ------------------
  |  |   24|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   55|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   56|      0|                                       "param %s is repeated", s);
   57|      0|                        return 0;
   58|      0|                    }
   59|     34|                    r->aldid = (OSSL_PARAM *)p;
   60|     34|                }
   61|     34|                break;
   62|     34|            case 'b':
  ------------------
  |  Branch (62:13): [True: 34, False: 102]
  ------------------
   63|     34|                if (ossl_likely(strcmp("locksize", s + 1) == 0)) {
  ------------------
  |  |   23|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   64|       |                    /* OSSL_DIGEST_PARAM_BLOCK_SIZE */
   65|     34|                    if (ossl_unlikely(r->bsize != NULL)) {
  ------------------
  |  |   24|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   66|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   67|      0|                                       "param %s is repeated", s);
   68|      0|                        return 0;
   69|      0|                    }
   70|     34|                    r->bsize = (OSSL_PARAM *)p;
   71|     34|                }
   72|     34|                break;
   73|     34|            case 's':
  ------------------
  |  Branch (73:13): [True: 34, False: 102]
  ------------------
   74|     34|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   23|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   75|       |                    /* OSSL_DIGEST_PARAM_SIZE */
   76|     34|                    if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   24|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   77|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   78|      0|                                       "param %s is repeated", s);
   79|      0|                        return 0;
   80|      0|                    }
   81|     34|                    r->size = (OSSL_PARAM *)p;
   82|     34|                }
   83|     34|                break;
   84|     34|            case 'x':
  ------------------
  |  Branch (84:13): [True: 34, False: 102]
  ------------------
   85|     34|                if (ossl_likely(strcmp("of", s + 1) == 0)) {
  ------------------
  |  |   23|     34|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 34, False: 0]
  |  |  ------------------
  ------------------
   86|       |                    /* OSSL_DIGEST_PARAM_XOF */
   87|     34|                    if (ossl_unlikely(r->xof != NULL)) {
  ------------------
  |  |   24|     34|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 34]
  |  |  ------------------
  ------------------
   88|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   89|      0|                                       "param %s is repeated", s);
   90|      0|                        return 0;
   91|      0|                    }
   92|     34|                    r->xof = (OSSL_PARAM *)p;
   93|     34|                }
   94|    136|            }
   95|     34|    return 1;
   96|     34|}

md5_sha1_prov.c:md5_sha1_set_ctx_params:
   41|     38|{
   42|     38|    const OSSL_PARAM *p;
   43|     38|    MD5_SHA1_CTX *ctx = (MD5_SHA1_CTX *)vctx;
   44|       |
   45|     38|    if (ctx == NULL)
  ------------------
  |  Branch (45:9): [True: 0, False: 38]
  ------------------
   46|      0|        return 0;
   47|     38|    if (ossl_param_is_empty(params))
  ------------------
  |  Branch (47:9): [True: 38, False: 0]
  ------------------
   48|     38|        return 1;
   49|       |
   50|      0|    p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_SSL3_MS);
  ------------------
  |  |  236|      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,
  ------------------
  |  |  396|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      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:
   36|     62|{
   37|     62|    const char *s;
   38|       |
   39|     62|    memset(r, 0, sizeof(*r));
   40|     62|    if (p != NULL)
  ------------------
  |  Branch (40:9): [True: 0, False: 62]
  ------------------
   41|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (41:16): [True: 0, False: 0]
  ------------------
   42|      0|            if (ossl_likely(strcmp("pad-type", s + 0) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   43|       |                /* OSSL_DIGEST_PARAM_PAD_TYPE */
   44|      0|                if (ossl_unlikely(r->pad != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   45|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   46|      0|                                   "param %s is repeated", s);
   47|      0|                    return 0;
   48|      0|                }
   49|      0|                r->pad = (OSSL_PARAM *)p;
   50|      0|            }
   51|     62|    return 1;
   52|     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|    184|{
   40|    184|    struct sha1_set_ctx_params_st p;
   41|    184|    SHA_CTX *ctx = (SHA_CTX *)vctx;
   42|       |
   43|    184|    if (ossl_unlikely(ctx == NULL || !sha1_set_ctx_params_decoder(params, &p)))
  ------------------
  |  |   24|    368|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 184]
  |  |  |  Branch (24:46): [True: 0, False: 184]
  |  |  |  Branch (24:46): [True: 0, False: 184]
  |  |  ------------------
  ------------------
   44|      0|        return 0;
   45|       |
   46|    184|    if (p.ssl3_ms != NULL)
  ------------------
  |  Branch (46:9): [True: 0, False: 184]
  ------------------
   47|      0|        return ossl_sha1_ctrl(ctx, EVP_CTRL_SSL3_MASTER_SECRET,
  ------------------
  |  |  396|      0|#define EVP_CTRL_SSL3_MASTER_SECRET 0x1d
  ------------------
   48|      0|            (int)p.ssl3_ms->data_size, p.ssl3_ms->data);
   49|       |
   50|    184|    return 1;
   51|    184|}

sha2_prov.c:sha1_set_ctx_params_decoder:
   36|    184|{
   37|    184|    const char *s;
   38|       |
   39|    184|    memset(r, 0, sizeof(*r));
   40|    184|    if (p != NULL)
  ------------------
  |  Branch (40:9): [True: 0, False: 184]
  ------------------
   41|      0|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (41:16): [True: 0, False: 0]
  ------------------
   42|      0|            if (ossl_likely(strcmp("ssl3-ms", s + 0) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   43|       |                /* OSSL_DIGEST_PARAM_SSL3_MS */
   44|      0|                if (ossl_unlikely(r->ssl3_ms != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   45|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   46|      0|                                   "param %s is repeated", s);
   47|      0|                    return 0;
   48|      0|                }
   49|      0|                r->ssl3_ms = (OSSL_PARAM *)p;
   50|      0|            }
   51|    184|    return 1;
   52|    184|}

sha3_prov.c:keccak_update:
  115|    118|{
  116|    118|    return ossl_sha3_absorb((KECCAK1600_CTX *)vctx, inp, len);
  117|    118|}
sha3_prov.c:keccak_final:
  121|     59|{
  122|     59|    int ret = 1;
  123|     59|    KECCAK1600_CTX *ctx = vctx;
  124|       |
  125|     59|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   24|     59|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 59]
  |  |  ------------------
  ------------------
  126|      0|        return 0;
  127|     59|    if (ossl_unlikely(ctx->md_size == SIZE_MAX)) {
  ------------------
  |  |   24|     59|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 59]
  |  |  ------------------
  ------------------
  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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  129|      0|        return 0;
  130|      0|    }
  131|     59|    ret = ossl_sha3_final(ctx, out, ctx->md_size);
  132|     59|    *outl = ctx->md_size;
  133|     59|    return ret;
  134|     59|}
sha3_prov.c:keccak_freectx:
  511|     59|{
  512|     59|    KECCAK1600_CTX *ctx = (KECCAK1600_CTX *)vctx;
  513|       |
  514|     59|    OPENSSL_clear_free(ctx, sizeof(*ctx));
  ------------------
  |  |  134|     59|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
  515|     59|}
sha3_prov.c:keccak_init:
  100|    115|{
  101|    115|    if (ossl_unlikely(!ossl_prov_is_running()))
  ------------------
  |  |   24|    115|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 115]
  |  |  ------------------
  ------------------
  102|      0|        return 0;
  103|       |    /* The newctx() handles most of the ctx fixed setup. */
  104|    115|    ossl_sha3_reset((KECCAK1600_CTX *)vctx);
  105|    115|    return 1;
  106|    115|}
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:
  700|      3|{
  701|      3|    struct shake_set_ctx_params_st p;
  702|      3|    KECCAK1600_CTX *ctx = (KECCAK1600_CTX *)vctx;
  703|       |
  704|      3|    if (ossl_unlikely(ctx == NULL || !shake_set_ctx_params_decoder(params, &p)))
  ------------------
  |  |   24|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 3]
  |  |  |  Branch (24:46): [True: 0, False: 3]
  |  |  |  Branch (24:46): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  705|      0|        return 0;
  706|       |
  707|      3|    if (ossl_unlikely(p.xoflen != NULL
  ------------------
  |  |   24|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 3]
  |  |  |  Branch (24:46): [True: 3, False: 0]
  |  |  |  Branch (24:46): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  708|      3|            && !OSSL_PARAM_get_size_t(p.xoflen, &ctx->md_size))) {
  709|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  710|      0|        return 0;
  711|      0|    }
  712|      3|    return 1;
  713|      3|}
sha3_prov.c:shake_get_ctx_params:
  674|      6|{
  675|      6|    struct shake_get_ctx_params_st p;
  676|      6|    KECCAK1600_CTX *ctx = (KECCAK1600_CTX *)vctx;
  677|       |
  678|      6|    if (ctx == NULL || !shake_get_ctx_params_decoder(params, &p))
  ------------------
  |  Branch (678:9): [True: 0, False: 6]
  |  Branch (678:24): [True: 0, False: 6]
  ------------------
  679|      0|        return 0;
  680|       |
  681|      6|    if (p.xoflen != NULL && !OSSL_PARAM_set_size_t(p.xoflen, ctx->md_size)) {
  ------------------
  |  Branch (681:9): [True: 0, False: 6]
  |  Branch (681:29): [True: 0, False: 0]
  ------------------
  682|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  683|      0|        return 0;
  684|      0|    }
  685|       |    /* Size is an alias of xoflen but separate them for compatibility */
  686|      6|    if (p.size != NULL && !OSSL_PARAM_set_size_t(p.size, ctx->md_size)) {
  ------------------
  |  Branch (686:9): [True: 6, False: 0]
  |  Branch (686:27): [True: 0, False: 6]
  ------------------
  687|      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), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  |  |  ------------------
  |  |  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  |  |  ------------------
  |  |  |  |  |  |  380|      0|#define OPENSSL_FUNC __func__
  |  |  |  |  ------------------
  |  |  |  |  361|      0|        ERR_set_error)
  |  |  ------------------
  ------------------
  688|      0|        return 0;
  689|      0|    }
  690|      6|    return 1;
  691|      6|}
sha3_prov.c:shake_gettable_ctx_params:
  669|      6|{
  670|      6|    return shake_get_ctx_params_list;
  671|      6|}

sha3_prov.c:shake_set_ctx_params_decoder:
  104|      3|{
  105|      3|    const char *s;
  106|       |
  107|      3|    memset(r, 0, sizeof(*r));
  108|      3|    if (p != NULL)
  ------------------
  |  Branch (108:9): [True: 3, False: 0]
  ------------------
  109|      6|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (109:16): [True: 3, False: 3]
  ------------------
  110|      3|            switch(s[0]) {
  111|      0|            default:
  ------------------
  |  Branch (111:13): [True: 0, False: 3]
  ------------------
  112|      0|                break;
  113|      0|            case 's':
  ------------------
  |  Branch (113:13): [True: 0, False: 3]
  ------------------
  114|      0|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  115|       |                    /* OSSL_DIGEST_PARAM_SIZE */
  116|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  117|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  118|      0|                                       "param %s is repeated", s);
  119|      0|                        return 0;
  120|      0|                    }
  121|      0|                    r->xoflen = (OSSL_PARAM *)p;
  122|      0|                }
  123|      0|                break;
  124|      3|            case 'x':
  ------------------
  |  Branch (124:13): [True: 3, False: 0]
  ------------------
  125|      3|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   23|      3|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 3, False: 0]
  |  |  ------------------
  ------------------
  126|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
  127|      3|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   24|      3|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 3]
  |  |  ------------------
  ------------------
  128|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
  129|      0|                                       "param %s is repeated", s);
  130|      0|                        return 0;
  131|      0|                    }
  132|      3|                    r->xoflen = (OSSL_PARAM *)p;
  133|      3|                }
  134|      3|            }
  135|      3|    return 1;
  136|      3|}
sha3_prov.c:shake_get_ctx_params_decoder:
   41|      6|{
   42|      6|    const char *s;
   43|       |
   44|      6|    memset(r, 0, sizeof(*r));
   45|      6|    if (p != NULL)
  ------------------
  |  Branch (45:9): [True: 6, False: 0]
  ------------------
   46|     12|        for (; (s = p->key) != NULL; p++)
  ------------------
  |  Branch (46:16): [True: 6, False: 6]
  ------------------
   47|      6|            switch(s[0]) {
   48|      0|            default:
  ------------------
  |  Branch (48:13): [True: 0, False: 6]
  ------------------
   49|      0|                break;
   50|      0|            case 'f':
  ------------------
  |  Branch (50:13): [True: 0, False: 6]
  ------------------
   51|       |# if defined(FIPS_MODULE)
   52|       |                if (ossl_likely(strcmp("ips-indicator", s + 1) == 0)) {
   53|       |                    /* OSSL_DIGEST_PARAM_FIPS_APPROVED_INDICATOR */
   54|       |                    if (!OSSL_PARAM_set_int((OSSL_PARAM *)p, 1))
   55|       |                        return 0;
   56|       |                }
   57|       |# endif
   58|      0|                break;
   59|      6|            case 's':
  ------------------
  |  Branch (59:13): [True: 6, False: 0]
  ------------------
   60|      6|                if (ossl_likely(strcmp("ize", s + 1) == 0)) {
  ------------------
  |  |   23|      6|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 6, False: 0]
  |  |  ------------------
  ------------------
   61|       |                    /* OSSL_DIGEST_PARAM_SIZE */
   62|      6|                    if (ossl_unlikely(r->size != NULL)) {
  ------------------
  |  |   24|      6|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 6]
  |  |  ------------------
  ------------------
   63|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   64|      0|                                       "param %s is repeated", s);
   65|      0|                        return 0;
   66|      0|                    }
   67|      6|                    r->size = (OSSL_PARAM *)p;
   68|      6|                }
   69|      6|                break;
   70|      6|            case 'x':
  ------------------
  |  Branch (70:13): [True: 0, False: 6]
  ------------------
   71|      0|                if (ossl_likely(strcmp("oflen", s + 1) == 0)) {
  ------------------
  |  |   23|      0|#define ossl_likely(x) __builtin_expect(!!(x), 1)
  |  |  ------------------
  |  |  |  Branch (23:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   72|       |                    /* OSSL_DIGEST_PARAM_XOFLEN */
   73|      0|                    if (ossl_unlikely(r->xoflen != NULL)) {
  ------------------
  |  |   24|      0|#define ossl_unlikely(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (24:26): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   74|      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), \
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  |  |                       ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \
  |  |  ------------------
  |  |  |  |  380|      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,
  ------------------
  |  |  149|      0|#define PROV_R_REPEATED_PARAMETER 252
  ------------------
   75|      0|                                       "param %s is repeated", s);
   76|      0|                        return 0;
   77|      0|                    }
   78|      0|                    r->xoflen = (OSSL_PARAM *)p;
   79|      0|                }
   80|      6|            }
   81|      6|    return 1;
   82|      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:
   59|     72|    {                                                                             \
   60|     72|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 72, False: 0]
  |  Branch (60:39): [True: 72, False: 0]
  |  Branch (60:60): [True: 72, False: 0]
  ------------------
   61|     72|            *outl = dgstsize;                                                     \
   62|     72|            return 1;                                                             \
   63|     72|        }                                                                         \
   64|     72|        return 0;                                                                 \
   65|     72|    }
md5_prov.c:md5_freectx:
   93|     72|    {                                                                            \
   94|     72|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     72|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     72|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     72|    }                                                                            \
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:
  135|    144|    {                                                                              \
  136|    144|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (136:16): [True: 144, False: 0]
  |  Branch (136:42): [True: 144, False: 0]
  ------------------
  137|    144|    }                                                                              \
md5_sha1_prov.c:md5_sha1_internal_final:
   59|     19|    {                                                                             \
   60|     19|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 19, False: 0]
  |  Branch (60:39): [True: 19, False: 0]
  |  Branch (60:60): [True: 19, False: 0]
  ------------------
   61|     19|            *outl = dgstsize;                                                     \
   62|     19|            return 1;                                                             \
   63|     19|        }                                                                         \
   64|     19|        return 0;                                                                 \
   65|     19|    }
md5_sha1_prov.c:md5_sha1_freectx:
   93|     19|    {                                                                            \
   94|     19|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     19|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     19|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     19|    }                                                                            \
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:
  148|     38|    {                                                                                  \
  149|     38|        return ossl_prov_is_running()                                                  \
  ------------------
  |  Branch (149:16): [True: 38, False: 0]
  ------------------
  150|     38|            && init(ctx)                                                               \
  ------------------
  |  Branch (150:16): [True: 38, False: 0]
  ------------------
  151|     38|            && set_ctx_params(ctx, params);                                            \
  ------------------
  |  Branch (151:16): [True: 38, False: 0]
  ------------------
  152|     38|    }                                                                                  \
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:
   59|     81|    {                                                                             \
   60|     81|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 81, False: 0]
  |  Branch (60:39): [True: 81, False: 0]
  |  Branch (60:60): [True: 81, False: 0]
  ------------------
   61|     81|            *outl = dgstsize;                                                     \
   62|     81|            return 1;                                                             \
   63|     81|        }                                                                         \
   64|     81|        return 0;                                                                 \
   65|     81|    }
ripemd_prov.c:ripemd160_freectx:
   93|     81|    {                                                                            \
   94|     81|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     81|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     81|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     81|    }                                                                            \
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:
  135|    162|    {                                                                              \
  136|    162|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (136:16): [True: 162, False: 0]
  |  Branch (136:42): [True: 162, False: 0]
  ------------------
  137|    162|    }                                                                              \
sha2_prov.c:sha1_internal_final:
   59|     92|    {                                                                             \
   60|     92|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 92, False: 0]
  |  Branch (60:39): [True: 92, False: 0]
  |  Branch (60:60): [True: 92, False: 0]
  ------------------
   61|     92|            *outl = dgstsize;                                                     \
   62|     92|            return 1;                                                             \
   63|     92|        }                                                                         \
   64|     92|        return 0;                                                                 \
   65|     92|    }
sha2_prov.c:sha1_freectx:
   93|     92|    {                                                                            \
   94|     92|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     92|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     92|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     92|    }                                                                            \
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:
  148|    184|    {                                                                                  \
  149|    184|        return ossl_prov_is_running()                                                  \
  ------------------
  |  Branch (149:16): [True: 184, False: 0]
  ------------------
  150|    184|            && init(ctx)                                                               \
  ------------------
  |  Branch (150:16): [True: 184, False: 0]
  ------------------
  151|    184|            && set_ctx_params(ctx, params);                                            \
  ------------------
  |  Branch (151:16): [True: 184, False: 0]
  ------------------
  152|    184|    }                                                                                  \
sha2_prov.c:sha224_internal_final:
   59|    208|    {                                                                             \
   60|    208|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 208, False: 0]
  |  Branch (60:39): [True: 208, False: 0]
  |  Branch (60:60): [True: 208, False: 0]
  ------------------
   61|    208|            *outl = dgstsize;                                                     \
   62|    208|            return 1;                                                             \
   63|    208|        }                                                                         \
   64|    208|        return 0;                                                                 \
   65|    208|    }
sha2_prov.c:sha224_freectx:
   93|    208|    {                                                                            \
   94|    208|        CTX *ctx = (CTX *)vctx;                                                  \
   95|    208|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|    208|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|    208|    }                                                                            \
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:
  165|    416|    {                                                                              \
  166|    416|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (166:16): [True: 416, False: 0]
  |  Branch (166:42): [True: 416, False: 0]
  ------------------
  167|    416|    }                                                                              \
sha2_prov.c:sha256_internal_final:
   59|  5.00k|    {                                                                             \
   60|  5.00k|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 5.00k, False: 0]
  |  Branch (60:39): [True: 5.00k, False: 0]
  |  Branch (60:60): [True: 5.00k, False: 0]
  ------------------
   61|  5.00k|            *outl = dgstsize;                                                     \
   62|  5.00k|            return 1;                                                             \
   63|  5.00k|        }                                                                         \
   64|  5.00k|        return 0;                                                                 \
   65|  5.00k|    }
sha2_prov.c:sha256_freectx:
   93|  5.00k|    {                                                                            \
   94|  5.00k|        CTX *ctx = (CTX *)vctx;                                                  \
   95|  5.00k|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|  5.00k|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|  5.00k|    }                                                                            \
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:
  165|  10.0k|    {                                                                              \
  166|  10.0k|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (166:16): [True: 10.0k, False: 0]
  |  Branch (166:42): [True: 10.0k, False: 0]
  ------------------
  167|  10.0k|    }                                                                              \
sha2_prov.c:sha256_192_internal_internal_final:
   59|      1|    {                                                                             \
   60|      1|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 1, False: 0]
  |  Branch (60:39): [True: 1, False: 0]
  |  Branch (60:60): [True: 1, False: 0]
  ------------------
   61|      1|            *outl = dgstsize;                                                     \
   62|      1|            return 1;                                                             \
   63|      1|        }                                                                         \
   64|      1|        return 0;                                                                 \
   65|      1|    }
sha2_prov.c:sha256_192_internal_freectx:
   93|      1|    {                                                                            \
   94|      1|        CTX *ctx = (CTX *)vctx;                                                  \
   95|      1|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|      1|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|      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:
  165|      2|    {                                                                              \
  166|      2|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (166:16): [True: 2, False: 0]
  |  Branch (166:42): [True: 2, False: 0]
  ------------------
  167|      2|    }                                                                              \
sha2_prov.c:sha384_internal_final:
   59|     14|    {                                                                             \
   60|     14|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 14, False: 0]
  |  Branch (60:39): [True: 14, False: 0]
  |  Branch (60:60): [True: 14, False: 0]
  ------------------
   61|     14|            *outl = dgstsize;                                                     \
   62|     14|            return 1;                                                             \
   63|     14|        }                                                                         \
   64|     14|        return 0;                                                                 \
   65|     14|    }
sha2_prov.c:sha384_freectx:
   93|     14|    {                                                                            \
   94|     14|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     14|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     14|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     14|    }                                                                            \
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:
  165|     28|    {                                                                              \
  166|     28|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (166:16): [True: 28, False: 0]
  |  Branch (166:42): [True: 28, False: 0]
  ------------------
  167|     28|    }                                                                              \
sha2_prov.c:sha512_internal_final:
   59|  3.98k|    {                                                                             \
   60|  3.98k|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 3.98k, False: 0]
  |  Branch (60:39): [True: 3.98k, False: 0]
  |  Branch (60:60): [True: 3.98k, False: 0]
  ------------------
   61|  3.98k|            *outl = dgstsize;                                                     \
   62|  3.98k|            return 1;                                                             \
   63|  3.98k|        }                                                                         \
   64|  3.98k|        return 0;                                                                 \
   65|  3.98k|    }
sha2_prov.c:sha512_freectx:
   93|  3.98k|    {                                                                            \
   94|  3.98k|        CTX *ctx = (CTX *)vctx;                                                  \
   95|  3.98k|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|  3.98k|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|  3.98k|    }                                                                            \
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:
  165|  7.97k|    {                                                                              \
  166|  7.97k|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (166:16): [True: 7.97k, False: 0]
  |  Branch (166:42): [True: 7.97k, False: 0]
  ------------------
  167|  7.97k|    }                                                                              \
sha2_prov.c:sha512_224_internal_final:
   59|      1|    {                                                                             \
   60|      1|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 1, False: 0]
  |  Branch (60:39): [True: 1, False: 0]
  |  Branch (60:60): [True: 1, False: 0]
  ------------------
   61|      1|            *outl = dgstsize;                                                     \
   62|      1|            return 1;                                                             \
   63|      1|        }                                                                         \
   64|      1|        return 0;                                                                 \
   65|      1|    }
sha2_prov.c:sha512_224_freectx:
   93|      1|    {                                                                            \
   94|      1|        CTX *ctx = (CTX *)vctx;                                                  \
   95|      1|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|      1|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|      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:
  165|      2|    {                                                                              \
  166|      2|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (166:16): [True: 2, False: 0]
  |  Branch (166:42): [True: 2, False: 0]
  ------------------
  167|      2|    }                                                                              \
sha2_prov.c:sha512_256_internal_final:
   59|      1|    {                                                                             \
   60|      1|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 1, False: 0]
  |  Branch (60:39): [True: 1, False: 0]
  |  Branch (60:60): [True: 1, False: 0]
  ------------------
   61|      1|            *outl = dgstsize;                                                     \
   62|      1|            return 1;                                                             \
   63|      1|        }                                                                         \
   64|      1|        return 0;                                                                 \
   65|      1|    }
sha2_prov.c:sha512_256_freectx:
   93|      1|    {                                                                            \
   94|      1|        CTX *ctx = (CTX *)vctx;                                                  \
   95|      1|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|      1|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|      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:
  165|      2|    {                                                                              \
  166|      2|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (166:16): [True: 2, False: 0]
  |  Branch (166:42): [True: 2, False: 0]
  ------------------
  167|      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:
   59|     88|    {                                                                             \
   60|     88|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 88, False: 0]
  |  Branch (60:39): [True: 88, False: 0]
  |  Branch (60:60): [True: 88, False: 0]
  ------------------
   61|     88|            *outl = dgstsize;                                                     \
   62|     88|            return 1;                                                             \
   63|     88|        }                                                                         \
   64|     88|        return 0;                                                                 \
   65|     88|    }
sm3_prov.c:sm3_freectx:
   93|     88|    {                                                                            \
   94|     88|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     88|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     88|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     88|    }                                                                            \
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:
  135|    176|    {                                                                              \
  136|    176|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (136:16): [True: 176, False: 0]
  |  Branch (136:42): [True: 176, False: 0]
  ------------------
  137|    176|    }                                                                              \
md4_prov.c:md4_internal_final:
   59|     59|    {                                                                             \
   60|     59|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 59, False: 0]
  |  Branch (60:39): [True: 59, False: 0]
  |  Branch (60:60): [True: 59, False: 0]
  ------------------
   61|     59|            *outl = dgstsize;                                                     \
   62|     59|            return 1;                                                             \
   63|     59|        }                                                                         \
   64|     59|        return 0;                                                                 \
   65|     59|    }
md4_prov.c:md4_freectx:
   93|     59|    {                                                                            \
   94|     59|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     59|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     59|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     59|    }                                                                            \
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:
  135|    118|    {                                                                              \
  136|    118|        return ossl_prov_is_running() && init(ctx);                                \
  ------------------
  |  Branch (136:16): [True: 118, False: 0]
  |  Branch (136:42): [True: 118, False: 0]
  ------------------
  137|    118|    }                                                                              \
mdc2_prov.c:mdc2_internal_final:
   59|     31|    {                                                                             \
   60|     31|        if (ossl_prov_is_running() && outsz >= dgstsize && fin(out, ctx)) {       \
  ------------------
  |  Branch (60:13): [True: 31, False: 0]
  |  Branch (60:39): [True: 31, False: 0]
  |  Branch (60:60): [True: 31, False: 0]
  ------------------
   61|     31|            *outl = dgstsize;                                                     \
   62|     31|            return 1;                                                             \
   63|     31|        }                                                                         \
   64|     31|        return 0;                                                                 \
   65|     31|    }
mdc2_prov.c:mdc2_freectx:
   93|     31|    {                                                                            \
   94|     31|        CTX *ctx = (CTX *)vctx;                                                  \
   95|     31|        OPENSSL_clear_free(ctx, sizeof(*ctx));                                   \
  ------------------
  |  |  134|     31|    CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#define OPENSSL_LINE __LINE__
  |  |  ------------------
  ------------------
   96|     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:
  148|     62|    {                                                                                  \
  149|     62|        return ossl_prov_is_running()                                                  \
  ------------------
  |  Branch (149:16): [True: 62, False: 0]
  ------------------
  150|     62|            && init(ctx)                                                               \
  ------------------
  |  Branch (150:16): [True: 62, False: 0]
  ------------------
  151|     62|            && set_ctx_params(ctx, params);                                            \
  ------------------
  |  Branch (151:16): [True: 62, False: 0]
  ------------------
  152|     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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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)
  |  |  ------------------
  |  |  |  |  359|       |#define OPENSSL_FILE __FILE__
  |  |  ------------------
  |  |                   CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
  |  |  ------------------
  |  |  |  |  360|       |#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|       |#ifndef STATIC_LEGACY
  259|       |    OPENSSL_init_crypto(OPENSSL_INIT_NO_ATEXIT, NULL);
  260|       |#endif
  261|       |
  262|      1|    if ((*provctx = ossl_prov_ctx_new()) == NULL
  ------------------
  |  Branch (262:9): [True: 0, False: 1]
  ------------------
  263|      1|        || (libctx = OSSL_LIB_CTX_new_child(handle, in)) == NULL) {
  ------------------
  |  Branch (263:12): [True: 0, False: 1]
  ------------------
  264|      0|        OSSL_LIB_CTX_free(libctx);
  265|      0|        legacy_teardown(*provctx);
  266|      0|        *provctx = NULL;
  267|      0|        return 0;
  268|      0|    }
  269|      1|    ossl_prov_ctx_set0_libctx(*provctx, libctx);
  270|      1|    ossl_prov_ctx_set0_handle(*provctx, handle);
  271|       |
  272|      1|    *out = legacy_dispatch_table;
  273|       |
  274|      1|    return 1;
  275|      1|}
legacyprov.c:legacy_query:
  179|    467|{
  180|    467|    *no_cache = 0;
  181|    467|    switch (operation_id) {
  ------------------
  |  Branch (181:13): [True: 467, False: 0]
  ------------------
  182|    467|    case OSSL_OP_DIGEST:
  ------------------
  |  |  283|    467|#define OSSL_OP_DIGEST 1
  ------------------
  |  Branch (182:5): [True: 467, False: 0]
  ------------------
  183|    467|        return legacy_digests;
  184|      0|    case OSSL_OP_CIPHER:
  ------------------
  |  |  284|      0|#define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
  ------------------
  |  Branch (184:5): [True: 0, False: 467]
  ------------------
  185|      0|        return legacy_ciphers;
  186|      0|    case OSSL_OP_KDF:
  ------------------
  |  |  286|      0|#define OSSL_OP_KDF 4
  ------------------
  |  Branch (186:5): [True: 0, False: 467]
  ------------------
  187|      0|        return legacy_kdfs;
  188|      0|    case OSSL_OP_SKEYMGMT:
  ------------------
  |  |  293|      0|#define OSSL_OP_SKEYMGMT 15
  ------------------
  |  Branch (188:5): [True: 0, False: 467]
  ------------------
  189|      0|        return legacy_skeymgmt;
  190|    467|    }
  191|      0|    return NULL;
  192|    467|}

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

luks2_json_metadata.c:lh_table_head:
  361|  26.0k|{
  362|  26.0k|	return t->head;
  363|  26.0k|}
luks2_json_metadata.c:lh_entry_k:
  399|  7.22k|{
  400|  7.22k|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|  7.22k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|  7.22k|}
luks2_json_metadata.c:lh_entry_v:
  420|  7.22k|{
  421|  7.22k|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|  7.22k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|  7.22k|}
luks2_json_metadata.c:lh_entry_next:
  439|  7.22k|{
  440|  7.22k|	return e->next;
  441|  7.22k|}
luks2_keyslot.c:lh_table_head:
  361|  6.46k|{
  362|  6.46k|	return t->head;
  363|  6.46k|}
luks2_keyslot.c:lh_entry_k:
  399|    521|{
  400|    521|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|    521|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|    521|}
luks2_keyslot.c:lh_entry_v:
  420|    521|{
  421|    521|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|    521|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|    521|}
luks2_keyslot.c:lh_entry_next:
  439|    521|{
  440|    521|	return e->next;
  441|    521|}
luks2_keyslot_luks2.c:lh_table_head:
  361|    118|{
  362|    118|	return t->head;
  363|    118|}
luks2_keyslot_luks2.c:lh_entry_k:
  399|    881|{
  400|    881|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|    881|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|    881|}
luks2_keyslot_luks2.c:lh_entry_v:
  420|    881|{
  421|    881|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|    881|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|    881|}
luks2_keyslot_luks2.c:lh_entry_next:
  439|    881|{
  440|    881|	return e->next;
  441|    881|}
luks2_segment.c:lh_table_head:
  361|  10.5k|{
  362|  10.5k|	return t->head;
  363|  10.5k|}
luks2_segment.c:lh_entry_k:
  399|  10.7k|{
  400|  10.7k|	return _LH_UNCONST(e->k);
  ------------------
  |  |  388|  10.7k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  401|  10.7k|}
luks2_segment.c:lh_entry_v:
  420|  10.7k|{
  421|  10.7k|	return _LH_UNCONST(e->v);
  ------------------
  |  |  388|  10.7k|#define _LH_UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
  ------------------
  422|  10.7k|}
luks2_segment.c:lh_entry_next:
  439|  10.7k|{
  440|  10.7k|	return e->next;
  441|  10.7k|}

vfat.c:is_power_of_2:
  388|  3.02k|{
  389|  3.02k|	return (num != 0 && ((num & (num - 1)) == 0));
  ------------------
  |  Branch (389:10): [True: 2.66k, False: 364]
  |  Branch (389:22): [True: 2.21k, False: 450]
  ------------------
  390|  3.02k|}
hfs.c:is_power_of_2:
  388|    336|{
  389|    336|	return (num != 0 && ((num & (num - 1)) == 0));
  ------------------
  |  Branch (389:10): [True: 336, False: 0]
  |  Branch (389:22): [True: 256, False: 80]
  ------------------
  390|    336|}
ntfs.c:is_power_of_2:
  388|    513|{
  389|    513|	return (num != 0 && ((num & (num - 1)) == 0));
  ------------------
  |  Branch (389:10): [True: 513, False: 0]
  |  Branch (389:22): [True: 498, False: 15]
  ------------------
  390|    513|}

iso9660.c:c_toupper:
  314|    698|{
  315|    698|	switch (c) {
  316|     24|	_C_CTYPE_LOWER:
  ------------------
  |  |  129|      0|#define _C_CTYPE_LOWER _C_CTYPE_LOWER_N (0)
  |  |  ------------------
  |  |  |  |  114|      5|	_C_CTYPE_LOWER_A_THRU_F_N(N): \
  |  |  |  |  ------------------
  |  |  |  |  |  |  111|      5|	case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (111:2): [True: 5, False: 693]
  |  |  |  |  |  |  |  Branch (111:18): [True: 0, False: 698]
  |  |  |  |  |  |  |  Branch (111:34): [True: 0, False: 698]
  |  |  |  |  |  |  |  Branch (111:50): [True: 0, False: 698]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      5|	case 'e' + (N): case 'f' + (N)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (112:2): [True: 0, False: 698]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:2): [True: 0, False: 698]
  |  |  |  |  ------------------
  |  |  |  |  115|      5|	case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (115:2): [True: 0, False: 698]
  |  |  |  |  |  Branch (115:18): [True: 0, False: 698]
  |  |  |  |  |  Branch (115:34): [True: 0, False: 698]
  |  |  |  |  |  Branch (115:50): [True: 0, False: 698]
  |  |  |  |  ------------------
  |  |  |  |  116|      5|	case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:2): [True: 0, False: 698]
  |  |  |  |  |  Branch (116:18): [True: 0, False: 698]
  |  |  |  |  |  Branch (116:34): [True: 0, False: 698]
  |  |  |  |  |  Branch (116:50): [True: 0, False: 698]
  |  |  |  |  ------------------
  |  |  |  |  117|      5|	case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:2): [True: 0, False: 698]
  |  |  |  |  |  Branch (117:18): [True: 0, False: 698]
  |  |  |  |  |  Branch (117:34): [True: 0, False: 698]
  |  |  |  |  |  Branch (117:50): [True: 0, False: 698]
  |  |  |  |  ------------------
  |  |  |  |  118|     16|	case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:2): [True: 3, False: 695]
  |  |  |  |  |  Branch (118:18): [True: 8, False: 690]
  |  |  |  |  |  Branch (118:34): [True: 0, False: 698]
  |  |  |  |  |  Branch (118:50): [True: 0, False: 698]
  |  |  |  |  ------------------
  |  |  |  |  119|     24|	case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (119:2): [True: 6, False: 692]
  |  |  |  |  |  Branch (119:18): [True: 1, False: 697]
  |  |  |  |  |  Branch (119:34): [True: 1, False: 697]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|     24|		return c - 'a' + 'A';
  318|    674|	default:
  ------------------
  |  Branch (318:2): [True: 674, False: 24]
  ------------------
  319|    674|		return c;
  320|    698|	}
  321|    698|}
iso9660.c:c_isupper:
  283|    277|{
  284|    277|	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: 277]
  |  |  |  |  |  |  |  Branch (111:18): [True: 0, False: 277]
  |  |  |  |  |  |  |  Branch (111:34): [True: 0, False: 277]
  |  |  |  |  |  |  |  Branch (111:50): [True: 0, False: 277]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  112|      0|	case 'e' + (N): case 'f' + (N)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (112:2): [True: 0, False: 277]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (114:2): [True: 0, False: 277]
  |  |  |  |  ------------------
  |  |  |  |  115|      0|	case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (115:2): [True: 0, False: 277]
  |  |  |  |  |  Branch (115:18): [True: 0, False: 277]
  |  |  |  |  |  Branch (115:34): [True: 0, False: 277]
  |  |  |  |  |  Branch (115:50): [True: 0, False: 277]
  |  |  |  |  ------------------
  |  |  |  |  116|      0|	case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (116:2): [True: 0, False: 277]
  |  |  |  |  |  Branch (116:18): [True: 0, False: 277]
  |  |  |  |  |  Branch (116:34): [True: 0, False: 277]
  |  |  |  |  |  Branch (116:50): [True: 0, False: 277]
  |  |  |  |  ------------------
  |  |  |  |  117|      0|	case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (117:2): [True: 0, False: 277]
  |  |  |  |  |  Branch (117:18): [True: 0, False: 277]
  |  |  |  |  |  Branch (117:34): [True: 0, False: 277]
  |  |  |  |  |  Branch (117:50): [True: 0, False: 277]
  |  |  |  |  ------------------
  |  |  |  |  118|      0|	case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (118:2): [True: 0, False: 277]
  |  |  |  |  |  Branch (118:18): [True: 0, False: 277]
  |  |  |  |  |  Branch (118:34): [True: 0, False: 277]
  |  |  |  |  |  Branch (118:50): [True: 0, False: 277]
  |  |  |  |  ------------------
  |  |  |  |  119|      0|	case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (119:2): [True: 0, False: 277]
  |  |  |  |  |  Branch (119:18): [True: 0, False: 277]
  |  |  |  |  |  Branch (119:34): [True: 0, False: 277]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|      0|		return 1;
  287|    277|	default:
  ------------------
  |  Branch (287:2): [True: 277, False: 0]
  ------------------
  288|    277|		return 0;
  289|    277|	}
  290|    277|}

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

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

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

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

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

dasd.c:rtrim_whitespace:
  350|    328|{
  351|    328|	size_t i;
  352|       |
  353|    328|	if (!str)
  ------------------
  |  Branch (353:6): [True: 0, False: 328]
  ------------------
  354|      0|		return 0;
  355|    328|	i = strlen((char *) str);
  356|    381|	while (i) {
  ------------------
  |  Branch (356:9): [True: 263, False: 118]
  ------------------
  357|    263|		i--;
  358|    263|		if (!isspace(str[i])) {
  ------------------
  |  Branch (358:7): [True: 210, False: 53]
  ------------------
  359|    210|			i++;
  360|    210|			break;
  361|    210|		}
  362|    263|	}
  363|    328|	str[i] = '\0';
  364|    328|	return i;
  365|    328|}

probe.c:ul_vfs_open:
   75|  6.18k|{
   76|  6.18k|	if (vfs && vfs->vfs_open)
  ------------------
  |  Branch (76:6): [True: 0, False: 6.18k]
  |  Branch (76:13): [True: 0, False: 0]
  ------------------
   77|      0|		return vfs->vfs_open(pathname, flags, mode);
   78|  6.18k|	return open(pathname, flags, mode);
   79|  6.18k|}
probe.c:ul_vfs_close:
   82|  6.18k|{
   83|  6.18k|	if (vfs && vfs->vfs_close)
  ------------------
  |  Branch (83:6): [True: 0, False: 6.18k]
  |  Branch (83:13): [True: 0, False: 0]
  ------------------
   84|      0|		return vfs->vfs_close(fd);
   85|  6.18k|	return close(fd);
   86|  6.18k|}
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|     17|{
 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|     17|    if (XXH_FORCE_ALIGN_CHECK) {
  ------------------
  |  | 1402|     17|#    define XXH_FORCE_ALIGN_CHECK 0
  |  |  ------------------
  |  |  |  Branch (1402:35): [Folded, False: 17]
  |  |  ------------------
  ------------------
 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|     17|    return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned);
 2525|       |
 2526|     17|#endif
 2527|     17|}
xxhash.c:XXH_memcpy:
 1456|   158k|{
 1457|   158k|    return memcpy(dest,src,size);
 1458|   158k|}
xxhash.c:XXH64_endian_align:
 2474|     17|{
 2475|     17|    xxh_u64 h64;
 2476|     17|    if (input==NULL) XXH_ASSERT(len == 0);
  ------------------
  |  | 1518|      0|#  define XXH_ASSERT(c)   ((void)0)
  ------------------
  |  Branch (2476:9): [True: 0, False: 17]
  ------------------
 2477|       |
 2478|     17|    if (len>=32) {
  ------------------
  |  Branch (2478:9): [True: 17, False: 0]
  ------------------
 2479|     17|        const xxh_u8* const bEnd = input + len;
 2480|     17|        const xxh_u8* const limit = bEnd - 31;
 2481|     17|        xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2;
  ------------------
  |  | 2393|     17|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
                      xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2;
  ------------------
  |  | 2394|     17|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2482|     17|        xxh_u64 v2 = seed + XXH_PRIME64_2;
  ------------------
  |  | 2394|     17|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2483|     17|        xxh_u64 v3 = seed + 0;
 2484|     17|        xxh_u64 v4 = seed - XXH_PRIME64_1;
  ------------------
  |  | 2393|     17|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
 2485|       |
 2486|  39.6k|        do {
 2487|  39.6k|            v1 = XXH64_round(v1, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  39.6k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2488|  39.6k|            v2 = XXH64_round(v2, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  39.6k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2489|  39.6k|            v3 = XXH64_round(v3, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  39.6k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2490|  39.6k|            v4 = XXH64_round(v4, XXH_get64bits(input)); input+=8;
  ------------------
  |  | 2434|  39.6k|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2491|  39.6k|        } while (input<limit);
  ------------------
  |  Branch (2491:18): [True: 39.6k, False: 17]
  ------------------
 2492|       |
 2493|     17|        h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     17|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     17|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     17|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
  ------------------
  |  | 1753|     17|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
 2494|     17|        h64 = XXH64_mergeRound(h64, v1);
 2495|     17|        h64 = XXH64_mergeRound(h64, v2);
 2496|     17|        h64 = XXH64_mergeRound(h64, v3);
 2497|     17|        h64 = XXH64_mergeRound(h64, v4);
 2498|       |
 2499|     17|    } else {
 2500|      0|        h64  = seed + XXH_PRIME64_5;
  ------------------
  |  | 2397|      0|#define XXH_PRIME64_5  0x27D4EB2F165667C5ULL  /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */
  ------------------
 2501|      0|    }
 2502|       |
 2503|     17|    h64 += (xxh_u64) len;
 2504|       |
 2505|     17|    return XXH64_finalize(h64, input, len, align);
 2506|     17|}
xxhash.c:XXH_readLE64_align:
 2377|   158k|{
 2378|   158k|    if (align==XXH_unaligned)
  ------------------
  |  Branch (2378:9): [True: 158k, False: 0]
  ------------------
 2379|   158k|        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|   158k|}
xxhash.c:XXH64_round:
 2408|   158k|{
 2409|   158k|    acc += input * XXH_PRIME64_2;
  ------------------
  |  | 2394|   158k|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2410|   158k|    acc  = XXH_rotl64(acc, 31);
  ------------------
  |  | 1753|   158k|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
 2411|   158k|    acc *= XXH_PRIME64_1;
  ------------------
  |  | 2393|   158k|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
 2412|   158k|    return acc;
 2413|   158k|}
xxhash.c:XXH_readLE64:
 2365|   158k|{
 2366|   158k|    return XXH_CPU_LITTLE_ENDIAN ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr));
  ------------------
  |  | 1699|   158k|#    define XXH_CPU_LITTLE_ENDIAN 1
  |  |  ------------------
  |  |  |  Branch (1699:35): [True: 158k, Folded]
  |  |  ------------------
  ------------------
 2367|   158k|}
xxhash.c:XXH_read64:
 2307|   158k|{
 2308|   158k|    xxh_u64 val;
 2309|   158k|    XXH_memcpy(&val, memPtr, sizeof(val));
 2310|   158k|    return val;
 2311|   158k|}
xxhash.c:XXH64_mergeRound:
 2416|     68|{
 2417|     68|    val  = XXH64_round(0, val);
 2418|     68|    acc ^= val;
 2419|     68|    acc  = acc * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2393|     68|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
                  acc  = acc * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2396|     68|#define XXH_PRIME64_4  0x85EBCA77C2B2AE63ULL  /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */
  ------------------
 2420|     68|    return acc;
 2421|     68|}
xxhash.c:XXH64_finalize:
 2438|     17|{
 2439|     17|    if (ptr==NULL) XXH_ASSERT(len == 0);
  ------------------
  |  | 1518|      0|#  define XXH_ASSERT(c)   ((void)0)
  ------------------
  |  Branch (2439:9): [True: 0, False: 17]
  ------------------
 2440|     17|    len &= 31;
 2441|     35|    while (len >= 8) {
  ------------------
  |  Branch (2441:12): [True: 18, False: 17]
  ------------------
 2442|     18|        xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr));
  ------------------
  |  | 2434|     18|#define XXH_get64bits(p) XXH_readLE64_align(p, align)
  ------------------
 2443|     18|        ptr += 8;
 2444|     18|        h64 ^= k1;
 2445|     18|        h64  = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 1753|     18|#  define XXH_rotl64 __builtin_rotateleft64
  ------------------
                      h64  = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2393|     18|#define XXH_PRIME64_1  0x9E3779B185EBCA87ULL  /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */
  ------------------
                      h64  = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4;
  ------------------
  |  | 2396|     18|#define XXH_PRIME64_4  0x85EBCA77C2B2AE63ULL  /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */
  ------------------
 2446|     18|        len -= 8;
 2447|     18|    }
 2448|     17|    if (len >= 4) {
  ------------------
  |  Branch (2448:9): [True: 0, False: 17]
  ------------------
 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|     17|    while (len > 0) {
  ------------------
  |  Branch (2454:12): [True: 0, False: 17]
  ------------------
 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|     17|    return  XXH64_avalanche(h64);
 2460|     17|}
xxhash.c:XXH64_avalanche:
 2424|     17|{
 2425|     17|    h64 ^= h64 >> 33;
 2426|     17|    h64 *= XXH_PRIME64_2;
  ------------------
  |  | 2394|     17|#define XXH_PRIME64_2  0xC2B2AE3D27D4EB4FULL  /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */
  ------------------
 2427|     17|    h64 ^= h64 >> 29;
 2428|     17|    h64 *= XXH_PRIME64_3;
  ------------------
  |  | 2395|     17|#define XXH_PRIME64_3  0x165667B19E3779F9ULL  /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */
  ------------------
 2429|     17|    h64 ^= h64 >> 32;
 2430|     17|    return h64;
 2431|     17|}

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

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

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

ul_encode_to_utf8:
   16|     35|{
   17|     35|	size_t i, j;
   18|     35|	uint32_t c;
   19|     35|	uint16_t c2;
   20|       |
   21|    190|	for (j = i = 0; i < count; i++) {
  ------------------
  |  Branch (21:18): [True: 184, False: 6]
  ------------------
   22|    184|		if (enc == UL_ENCODE_UTF16LE) {
  ------------------
  |  Branch (22:7): [True: 0, False: 184]
  ------------------
   23|      0|			if (i+2 > count)
  ------------------
  |  Branch (23:8): [True: 0, False: 0]
  ------------------
   24|      0|				break;
   25|      0|			c = (src[i+1] << 8) | src[i];
   26|      0|			i++;
   27|    184|		} else if (enc == UL_ENCODE_UTF16BE) {
  ------------------
  |  Branch (27:14): [True: 184, False: 0]
  ------------------
   28|    184|			if (i+2 > count)
  ------------------
  |  Branch (28:8): [True: 0, False: 184]
  ------------------
   29|      0|				break;
   30|    184|			c = (src[i] << 8) | src[i+1];
   31|    184|			i++;
   32|    184|		} else if (enc == UL_ENCODE_LATIN1) {
  ------------------
  |  Branch (32:14): [True: 0, False: 0]
  ------------------
   33|      0|			c = src[i];
   34|      0|		} else {
   35|      0|			return 0;
   36|      0|		}
   37|    184|		if ((enc == UL_ENCODE_UTF16LE || enc == UL_ENCODE_UTF16BE) &&
  ------------------
  |  Branch (37:8): [True: 0, False: 184]
  |  Branch (37:36): [True: 184, False: 0]
  ------------------
   38|    184|		    c >= 0xD800 && c <= 0xDBFF && i+2 < count) {
  ------------------
  |  Branch (38:7): [True: 40, False: 144]
  |  Branch (38:22): [True: 0, False: 40]
  |  Branch (38:37): [True: 0, False: 0]
  ------------------
   39|      0|			if (enc == UL_ENCODE_UTF16LE)
  ------------------
  |  Branch (39:8): [True: 0, False: 0]
  ------------------
   40|      0|				c2 = (src[i+2] << 8) | src[i+1];
   41|      0|			else
   42|      0|				c2 = (src[i+1] << 8) | src[i+2];
   43|      0|			if (c2 >= 0xDC00 && c2 <= 0xDFFF) {
  ------------------
  |  Branch (43:8): [True: 0, False: 0]
  |  Branch (43:24): [True: 0, False: 0]
  ------------------
   44|      0|				c = 0x10000 + ((c - 0xD800) << 10) + (c2 - 0xDC00);
   45|      0|				i += 2;
   46|      0|			}
   47|      0|		}
   48|    184|		if (c == 0) {
  ------------------
  |  Branch (48:7): [True: 11, False: 173]
  ------------------
   49|     11|			dest[j] = '\0';
   50|     11|			break;
   51|     11|		}
   52|       |
   53|    173|		if (c < 0x80) {
  ------------------
  |  Branch (53:7): [True: 21, False: 152]
  ------------------
   54|     21|			if (j+1 >= len)
  ------------------
  |  Branch (54:8): [True: 3, False: 18]
  ------------------
   55|      3|				break;
   56|     18|			dest[j++] = (uint8_t) c;
   57|    152|		} else if (c < 0x800) {
  ------------------
  |  Branch (57:14): [True: 43, False: 109]
  ------------------
   58|     43|			if (j+2 >= len)
  ------------------
  |  Branch (58:8): [True: 3, False: 40]
  ------------------
   59|      3|				break;
   60|     40|			dest[j++] = (uint8_t) (0xc0 | (c >> 6));
   61|     40|			dest[j++] = (uint8_t) (0x80 | (c & 0x3f));
   62|    109|		} else if (c < 0x10000) {
  ------------------
  |  Branch (62:14): [True: 109, False: 0]
  ------------------
   63|    109|			if (j+3 >= len)
  ------------------
  |  Branch (63:8): [True: 12, False: 97]
  ------------------
   64|     12|				break;
   65|     97|			dest[j++] = (uint8_t) (0xe0 | (c >> 12));
   66|     97|			dest[j++] = (uint8_t) (0x80 | ((c >> 6) & 0x3f));
   67|     97|			dest[j++] = (uint8_t) (0x80 | (c & 0x3f));
   68|     97|		} else {
   69|      0|			if (j+4 >= len)
  ------------------
  |  Branch (69:8): [True: 0, False: 0]
  ------------------
   70|      0|				break;
   71|      0|			dest[j++] = (uint8_t) (0xf0 | (c >> 18));
   72|      0|			dest[j++] = (uint8_t) (0x80 | ((c >> 12) & 0x3f));
   73|      0|			dest[j++] = (uint8_t) (0x80 | ((c >> 6) & 0x3f));
   74|      0|			dest[j++] = (uint8_t) (0x80 | (c & 0x3f));
   75|      0|		}
   76|    173|	}
   77|     35|	dest[j] = '\0';
   78|     35|	return j;
   79|     35|}

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

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|     16|{
   20|     16|	blkid_partlist ls;
   21|     16|	blkid_parttable tab;
   22|       |
   23|     16|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (23:6): [True: 16, False: 0]
  ------------------
   24|       |		/* caller does not ask for details about partitions */
   25|     16|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|     16|#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.48k|{
  195|  5.48k|	struct atari_rootsector *rs;
  196|       |
  197|  5.48k|	blkid_parttable tab = NULL;
  198|  5.48k|	blkid_partlist ls;
  199|       |
  200|  5.48k|	unsigned i;
  201|  5.48k|	int has_xgm = 0;
  202|  5.48k|	int rc = 0;
  203|  5.48k|	uint32_t rssize;	/* size in sectors from root sector */
  204|  5.48k|	uint64_t size;		/* size in sectors from system */
  205|       |
  206|       |	/* Atari partition is not defined for other sector sizes */
  207|  5.48k|	if (blkid_probe_get_sectorsize(pr) != 512)
  ------------------
  |  Branch (207:6): [True: 0, False: 5.48k]
  ------------------
  208|      0|		goto nothing;
  209|       |
  210|  5.48k|	size = blkid_probe_get_size(pr) / 512;
  211|       |
  212|       |	/* Atari is not well defined to support large disks */
  213|  5.48k|	if (size > INT32_MAX)
  ------------------
  |  Branch (213:6): [True: 0, False: 5.48k]
  ------------------
  214|      0|		goto nothing;
  215|       |
  216|       |	/* read root sector */
  217|  5.48k|	rs = (struct atari_rootsector *) blkid_probe_get_sector(pr, 0);
  218|  5.48k|	if (!rs) {
  ------------------
  |  Branch (218:6): [True: 0, False: 5.48k]
  ------------------
  219|      0|		if (errno)
  ------------------
  |  Branch (219:7): [True: 0, False: 0]
  ------------------
  220|      0|			return -errno;
  221|      0|		goto nothing;
  222|      0|	}
  223|       |
  224|  5.48k|	rssize = be32_to_cpu(rs->hd_size);
  ------------------
  |  |  141|  5.48k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  225|       |
  226|       |	/* check number of sectors stored in the root sector */
  227|  5.48k|	if (rssize < 2 || rssize > size)
  ------------------
  |  Branch (227:6): [True: 1.40k, False: 4.08k]
  |  Branch (227:20): [True: 2.93k, False: 1.14k]
  ------------------
  228|  4.33k|		goto nothing;
  229|       |
  230|       |	/* check list of bad blocks */
  231|  1.14k|	if ((rs->bsl_start || rs->bsl_len)
  ------------------
  |  Branch (231:7): [True: 727, False: 421]
  |  Branch (231:24): [True: 166, False: 255]
  ------------------
  232|    893|	    && !is_valid_dimension(be32_to_cpu(rs->bsl_start),
  ------------------
  |  |  141|    893|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (232:9): [True: 807, False: 86]
  ------------------
  233|    893|				   be32_to_cpu(rs->bsl_len),
  ------------------
  |  |  141|    893|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  234|    893|				   rssize))
  235|    807|		goto nothing;
  236|       |
  237|       |	/*
  238|       |	 * At least one valid partition required
  239|       |	 */
  240|  1.69k|	for (i = 0; i < 4; i++) {
  ------------------
  |  Branch (240:14): [True: 1.35k, False: 335]
  ------------------
  241|  1.35k|		if (is_valid_partition(&rs->part[i], rssize)) {
  ------------------
  |  Branch (241:7): [True: 6, False: 1.35k]
  ------------------
  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.35k|	}
  250|       |
  251|    341|	if (i == 4)
  ------------------
  |  Branch (251:6): [True: 335, False: 6]
  ------------------
  252|    335|		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.47k|nothing:
  303|  5.47k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.47k|#define BLKID_PROBE_NONE	1
  ------------------
  304|      0|err:
  305|       |	return -ENOMEM;
  306|      0|}
atari.c:is_valid_dimension:
   79|  1.41k|{
   80|  1.41k|	uint64_t end = start + size;
   81|       |
   82|  1.41k|	return  end >= start
  ------------------
  |  Branch (82:10): [True: 1.00k, False: 414]
  ------------------
   83|  1.00k|		&& 0 < start && start <= maxoff
  ------------------
  |  Branch (83:6): [True: 818, False: 184]
  |  Branch (83:19): [True: 376, False: 442]
  ------------------
   84|    376|		&& 0 < size && size <= maxoff
  ------------------
  |  Branch (84:6): [True: 344, False: 32]
  |  Branch (84:18): [True: 126, False: 218]
  ------------------
   85|    126|		&& 0 < end && end <= maxoff;
  ------------------
  |  Branch (85:6): [True: 126, False: 0]
  |  Branch (85:17): [True: 92, False: 34]
  ------------------
   86|  1.41k|}
atari.c:is_valid_partition:
   89|  1.35k|{
   90|  1.35k|	uint32_t start = be32_to_cpu(part->start),
  ------------------
  |  |  141|  1.35k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   91|  1.35k|		 size = be32_to_cpu(part->size);
  ------------------
  |  |  141|  1.35k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   92|       |
   93|  1.35k|	return (part->flags & 1)
  ------------------
  |  Branch (93:9): [True: 677, False: 680]
  ------------------
   94|    677|		&& isalnum(part->id[0])
  ------------------
  |  |   74|    677|#define isalnum linux_isalnum
  ------------------
  |  Branch (94:6): [True: 628, False: 49]
  ------------------
   95|    628|		&& isalnum(part->id[1])
  ------------------
  |  |   74|    628|#define isalnum linux_isalnum
  ------------------
  |  Branch (95:6): [True: 560, False: 68]
  ------------------
   96|    560|		&& isalnum(part->id[2])
  ------------------
  |  |   74|    560|#define isalnum linux_isalnum
  ------------------
  |  Branch (96:6): [True: 523, False: 37]
  ------------------
   97|    523|		&& is_valid_dimension(start, size, maxoff);
  ------------------
  |  Branch (97:6): [True: 6, False: 517]
  ------------------
   98|  1.35k|}
atari.c:linux_isalnum:
   70|  1.86k|{
   71|  1.86k|	return _linux_isalnum[c];
   72|  1.86k|}

bsd.c:probe_bsd_pt:
   42|    472|{
   43|    472|	struct bsd_disklabel *l;
   44|    472|	struct bsd_partition *p;
   45|    472|	const char *name = "bsd" ;
   46|    472|	blkid_parttable tab = NULL;
   47|    472|	blkid_partition parent;
   48|    472|	blkid_partlist ls;
   49|    472|	int i, nparts = BSD_MAXPARTITIONS;
  ------------------
  |  |    8|    472|#define BSD_MAXPARTITIONS	16
  ------------------
   50|    472|	const unsigned char *data;
   51|    472|	int rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|    472|#define BLKID_PROBE_NONE	1
  ------------------
   52|    472|	uint64_t abs_offset = 0;
   53|       |
   54|    472|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (54:6): [True: 472, False: 0]
  ------------------
   55|       |		/* caller does not ask for details about partitions */
   56|    472|		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.47k|{
  275|  5.47k|	const unsigned char *buf;
  276|  5.47k|	blkid_parttable tab = NULL;
  277|  5.47k|	blkid_partlist ls;
  278|  5.47k|	char volser[DASD_VOLSER_LENGTH + 1];
  279|  5.47k|	unsigned int blocksize;
  280|  5.47k|	bool is_cdl = false;
  281|  5.47k|	bool is_ldl = false;
  282|  5.47k|	const struct dasd_volume_label_cdl *cdl = NULL;
  283|  5.47k|	const struct dasd_volume_label_ldl *ldl = NULL;
  284|  5.47k|	const char *magic;
  285|  5.47k|	size_t i = 0;
  286|       |
  287|  5.47k|	blocksize = blkid_probe_get_sectorsize(pr);
  288|  5.47k|	buf = blkid_probe_get_buffer(pr,
  289|  5.47k|			(uint64_t) 2 * blocksize,
  290|  5.47k|			sizeof(struct dasd_volume_label_ldl));
  291|  5.47k|	if (!buf)
  ------------------
  |  Branch (291:6): [True: 0, False: 5.47k]
  ------------------
  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.47k|	if (is_dasd_cdl_label(buf, sizeof(struct dasd_volume_label_ldl)))
  ------------------
  |  Branch (295:6): [True: 27, False: 5.45k]
  ------------------
  296|     27|		is_cdl = true;
  297|       |	/* LDL -- "LNX1" or "CMS1" at byte 0 */
  298|  5.45k|	else if (is_dasd_ldl_label(buf, sizeof(struct dasd_volume_label_ldl)))
  ------------------
  |  Branch (298:11): [True: 99, False: 5.35k]
  ------------------
  299|     99|		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.47k|	if (!is_cdl && !is_ldl) {
  ------------------
  |  Branch (305:6): [True: 5.45k, False: 27]
  |  Branch (305:17): [True: 5.35k, False: 99]
  ------------------
  306|  26.2k|		for (i = 0; i < ARRAY_SIZE(dasd_blocksizes); i++) {
  ------------------
  |  |  182|  26.2k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (306:15): [True: 21.0k, False: 5.14k]
  ------------------
  307|  21.0k|			if (dasd_blocksizes[i] == blocksize)
  ------------------
  |  Branch (307:8): [True: 5.14k, False: 15.9k]
  ------------------
  308|  5.14k|				continue;
  309|       |
  310|  15.9k|			buf = blkid_probe_get_buffer(pr,
  311|  15.9k|					(uint64_t) 2 * dasd_blocksizes[i],
  312|  15.9k|					sizeof(struct dasd_volume_label_ldl));
  313|  15.9k|			if (!buf) {
  ------------------
  |  Branch (313:8): [True: 0, False: 15.9k]
  ------------------
  314|      0|				if (errno)
  ------------------
  |  Branch (314:9): [True: 0, False: 0]
  ------------------
  315|      0|					return -errno;
  316|      0|				continue;
  317|      0|			}
  318|       |
  319|  15.9k|			if (is_dasd_cdl_label(buf, sizeof(struct dasd_volume_label_ldl))) {
  ------------------
  |  Branch (319:8): [True: 57, False: 15.8k]
  ------------------
  320|     57|				is_cdl = true;
  321|     57|				blocksize = dasd_blocksizes[i];
  322|     57|				break;
  323|     57|			}
  324|  15.8k|			if (is_dasd_ldl_label(buf, sizeof(struct dasd_volume_label_ldl))) {
  ------------------
  |  Branch (324:8): [True: 145, False: 15.7k]
  ------------------
  325|    145|				is_ldl = true;
  326|    145|				blocksize = dasd_blocksizes[i];
  327|    145|				break;
  328|    145|			}
  329|  15.8k|		}
  330|  5.35k|	}
  331|       |
  332|  5.47k|	if (!is_cdl && !is_ldl)
  ------------------
  |  Branch (332:6): [True: 5.39k, False: 84]
  |  Branch (332:17): [True: 5.14k, False: 244]
  ------------------
  333|  5.14k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.14k|#define BLKID_PROBE_NONE	1
  ------------------
  334|       |
  335|    328|	DBG(LOWPROBE, ul_debug("DASD: %s label detected (blocksize=%u)",
  ------------------
  |  |  358|    328|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    328|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    328|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    328|	do { \
  |  |  |  |  |  |  |  |   76|    328|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    328|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    328|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 328]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    328|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 328]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    328|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    328|		x; \
  |  |  |  |  |  |   85|    328|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  336|    328|			is_cdl ? "CDL" : "LDL", blocksize));
  337|       |
  338|    328|	if (is_cdl) {
  ------------------
  |  Branch (338:6): [True: 84, False: 244]
  ------------------
  339|     84|		cdl = (const struct dasd_volume_label_cdl *) buf;
  340|       |
  341|     84|		if (blkid_probe_set_magic(pr,
  ------------------
  |  Branch (341:7): [True: 0, False: 84]
  ------------------
  342|     84|				(uint64_t) 2 * blocksize +
  343|     84|					offsetof(struct dasd_volume_label_cdl, vollbl),
  344|     84|				4, (const unsigned char *) DASD_VOL1_MAGIC))
  ------------------
  |  |   13|     84|#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|     84|		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|    139|#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|    349|#define DASD_CMS1_MAGIC		"\xc3\xd4\xe2\xf1"	/* "CMS1" in EBCDIC */
  ------------------
  |  Branch (350:11): [True: 139, False: 105]
  ------------------
  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|    328|	blkid_partitions_strcpy_ptuuid(pr, volser);
  362|       |
  363|    328|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (363:6): [True: 328, False: 0]
  ------------------
  364|    328|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|    328|#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|  21.3k|{
   68|  21.3k|	if (bufsz < sizeof(DASD_VOL1_MAGIC) - 1 + offsetof(struct dasd_volume_label_cdl, vollbl))
  ------------------
  |  |   13|  21.3k|#define DASD_VOL1_MAGIC		"\xe5\xd6\xd3\xf1"	/* "VOL1" in EBCDIC */
  ------------------
  |  Branch (68:6): [True: 0, False: 21.3k]
  ------------------
   69|      0|		return false;
   70|  21.3k|	return memcmp(buf + offsetof(struct dasd_volume_label_cdl, vollbl),
   71|  21.3k|		      DASD_VOL1_MAGIC, sizeof(DASD_VOL1_MAGIC) - 1) == 0;
  ------------------
  |  |   13|  21.3k|#define DASD_VOL1_MAGIC		"\xe5\xd6\xd3\xf1"	/* "VOL1" in EBCDIC */
  ------------------
              		      DASD_VOL1_MAGIC, sizeof(DASD_VOL1_MAGIC) - 1) == 0;
  ------------------
  |  |   13|  21.3k|#define DASD_VOL1_MAGIC		"\xe5\xd6\xd3\xf1"	/* "VOL1" in EBCDIC */
  ------------------
   72|  21.3k|}
dasd.c:is_dasd_ldl_label:
   75|  21.2k|{
   76|  21.2k|	if (bufsz < sizeof(DASD_LNX1_MAGIC) - 1)
  ------------------
  |  |   14|  21.2k|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
  |  Branch (76:6): [True: 0, False: 21.2k]
  ------------------
   77|      0|		return false;
   78|  21.2k|	return memcmp(buf, DASD_LNX1_MAGIC, sizeof(DASD_LNX1_MAGIC) - 1) == 0 ||
  ------------------
  |  |   14|  21.2k|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
              	return memcmp(buf, DASD_LNX1_MAGIC, sizeof(DASD_LNX1_MAGIC) - 1) == 0 ||
  ------------------
  |  |   14|  21.2k|#define DASD_LNX1_MAGIC		"\xd3\xd5\xe7\xf1"	/* "LNX1" in EBCDIC */
  ------------------
  |  Branch (78:9): [True: 139, False: 21.1k]
  ------------------
   79|  21.1k|	       memcmp(buf, DASD_CMS1_MAGIC, sizeof(DASD_CMS1_MAGIC) - 1) == 0;
  ------------------
  |  |   15|  21.1k|#define DASD_CMS1_MAGIC		"\xc3\xd4\xe2\xf1"	/* "CMS1" in EBCDIC */
  ------------------
              	       memcmp(buf, DASD_CMS1_MAGIC, sizeof(DASD_CMS1_MAGIC) - 1) == 0;
  ------------------
  |  |   15|  21.1k|#define DASD_CMS1_MAGIC		"\xc3\xd4\xe2\xf1"	/* "CMS1" in EBCDIC */
  ------------------
  |  Branch (79:9): [True: 105, False: 21.0k]
  ------------------
   80|  21.2k|}
dasd.c:dasd_get_volser:
   24|    328|{
   25|    328|	size_t i;
   26|       |
   27|  2.29k|	for (i = 0; i < DASD_VOLSER_LENGTH && i < volsersz - 1; i++)
  ------------------
  |  |   27|  4.59k|#define DASD_VOLSER_LENGTH	6
  ------------------
  |  Branch (27:14): [True: 1.96k, False: 328]
  |  Branch (27:40): [True: 1.96k, False: 0]
  ------------------
   28|  1.96k|		volser[i] = dasd_ebcdic_to_ascii[(unsigned char) volid[i]];
   29|    328|	volser[i] = '\0';
   30|       |
   31|    328|	rtrim_whitespace((unsigned char *) volser);
   32|    328|}

dos.c:probe_dos_pt:
  198|    832|{
  199|    832|	int i;
  200|    832|	int ssf;
  201|    832|	blkid_parttable tab = NULL;
  202|    832|	blkid_partlist ls;
  203|    832|	const struct dos_partition *p0, *p;
  204|    832|	const unsigned char *data;
  205|    832|	uint64_t start, size;
  206|    832|	uint32_t id;
  207|    832|	char idstr[UUID_STR_LEN];
  208|       |
  209|       |
  210|    832|	data = blkid_probe_get_sector(pr, 0);
  211|    832|	if (!data) {
  ------------------
  |  Branch (211:6): [True: 0, False: 832]
  ------------------
  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|    832|	if (memcmp(data, BLKID_AIX_MAGIC_STRING, BLKID_AIX_MAGIC_STRLEN) == 0)
  ------------------
  |  |    4|    832|#define BLKID_AIX_MAGIC_STRING	"\xC9\xC2\xD4\xC1"
  ------------------
              	if (memcmp(data, BLKID_AIX_MAGIC_STRING, BLKID_AIX_MAGIC_STRLEN) == 0)
  ------------------
  |  |    5|    832|#define BLKID_AIX_MAGIC_STRLEN	(sizeof(BLKID_AIX_MAGIC_STRING) - 1)
  |  |  ------------------
  |  |  |  |    4|    832|#define BLKID_AIX_MAGIC_STRING	"\xC9\xC2\xD4\xC1"
  |  |  ------------------
  ------------------
  |  Branch (218:6): [True: 0, False: 832]
  ------------------
  219|      0|		goto nothing;
  220|       |
  221|    832|	p0 = mbr_get_partition(data, 0);
  222|       |
  223|       |	/*
  224|       |	 * Reject PT where boot indicator is not 0 or 0x80.
  225|       |	 */
  226|  2.06k|	for (p = p0, i = 0; i < 4; i++, p++)
  ------------------
  |  Branch (226:22): [True: 1.80k, False: 268]
  ------------------
  227|  1.80k|		if (p->boot_ind != 0 && p->boot_ind != 0x80) {
  ------------------
  |  Branch (227:7): [True: 572, False: 1.22k]
  |  Branch (227:27): [True: 564, False: 8]
  ------------------
  228|    564|			DBG(LOWPROBE, ul_debug("missing boot indicator -- ignore"));
  ------------------
  |  |  358|    564|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    564|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    564|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    564|	do { \
  |  |  |  |  |  |  |  |   76|    564|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    564|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    564|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 564]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    564|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 564]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    564|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    564|		x; \
  |  |  |  |  |  |   85|    564|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|    564|			goto nothing;
  230|    564|		}
  231|       |
  232|       |	/*
  233|       |	 * GPT uses valid MBR
  234|       |	 */
  235|  1.33k|	for (p = p0, i = 0; i < 4; i++, p++) {
  ------------------
  |  Branch (235:22): [True: 1.07k, False: 266]
  ------------------
  236|  1.07k|		if (p->sys_ind == MBR_GPT_PARTITION) {
  ------------------
  |  Branch (236:7): [True: 2, False: 1.07k]
  ------------------
  237|      2|			DBG(LOWPROBE, ul_debug("probably GPT -- ignore"));
  ------------------
  |  |  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|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  238|      2|			goto nothing;
  239|      2|		}
  240|  1.07k|	}
  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|    266|	if (blkid_probe_is_vfat(pr) == 1 || blkid_probe_is_exfat(pr) == 1) {
  ------------------
  |  Branch (247:6): [True: 153, False: 113]
  |  Branch (247:38): [True: 0, False: 113]
  ------------------
  248|    153|		DBG(LOWPROBE, ul_debug("probably FAT -- ignore"));
  ------------------
  |  |  358|    153|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    153|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    153|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    153|	do { \
  |  |  |  |  |  |  |  |   76|    153|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    153|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    153|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 153]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    153|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 153]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    153|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    153|		x; \
  |  |  |  |  |  |   85|    153|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  249|    153|		goto nothing;
  250|    153|	}
  251|       |
  252|       |	/* Another false positive is NTFS */
  253|    113|	if (blkid_probe_is_ntfs(pr) == 1) {
  ------------------
  |  Branch (253:6): [True: 18, False: 95]
  ------------------
  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|     95|	if (is_lvm(pr) && is_empty_mbr(data)) {
  ------------------
  |  Branch (263:6): [True: 0, False: 95]
  |  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|     95|	blkid_probe_use_wiper(pr, MBR_PT_OFFSET, 512 - MBR_PT_OFFSET);
  ------------------
  |  |   19|     95|#define MBR_PT_OFFSET		0x1be
  ------------------
              	blkid_probe_use_wiper(pr, MBR_PT_OFFSET, 512 - MBR_PT_OFFSET);
  ------------------
  |  |   19|     95|#define MBR_PT_OFFSET		0x1be
  ------------------
  269|       |
  270|     95|	id = mbr_get_id(data);
  271|     95|	if (id)
  ------------------
  |  Branch (271:6): [True: 69, False: 26]
  ------------------
  272|     69|		snprintf(idstr, sizeof(idstr), "%08x", id);
  273|       |
  274|       |	/*
  275|       |	 * Well, all checks pass, it's MS-DOS partition table
  276|       |	 */
  277|     95|	if (blkid_partitions_need_typeonly(pr)) {
  ------------------
  |  Branch (277:6): [True: 95, False: 0]
  ------------------
  278|       |		/* Non-binary interface -- caller does not ask for details
  279|       |		 * about partitions, just set generic variables only. */
  280|     95|		if (id)
  ------------------
  |  Branch (280:7): [True: 69, False: 26]
  ------------------
  281|     69|			blkid_partitions_strcpy_ptuuid(pr, idstr);
  282|     95|		return 0;
  283|     95|	}
  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|    737|nothing:
  377|    737|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    737|#define BLKID_PROBE_NONE	1
  ------------------
  378|      0|}
dos.c:is_lvm:
  176|     95|{
  177|     95|	struct blkid_prval *v = __blkid_probe_lookup_value(pr, "TYPE");
  178|       |
  179|     95|	return (v && v->data && strcmp((char *) v->data, "LVM2_member") == 0);
  ------------------
  |  Branch (179:10): [True: 35, False: 60]
  |  Branch (179:15): [True: 35, False: 0]
  |  Branch (179:26): [True: 0, False: 35]
  ------------------
  180|     95|}

gpt.c:probe_gpt_pt:
  307|  5.55k|{
  308|  5.55k|	uint64_t lastlba = 0, lba;
  309|  5.55k|	struct gpt_header hdr, *h;
  310|  5.55k|	struct gpt_entry *e;
  311|  5.55k|	blkid_parttable tab = NULL;
  312|  5.55k|	blkid_partlist ls;
  313|  5.55k|	uint64_t fu, lu;
  314|  5.55k|	uint32_t ssf, i;
  315|  5.55k|	efi_guid_t guid;
  316|  5.55k|	int ret;
  317|       |
  318|  5.55k|	if (last_lba(pr, &lastlba))
  ------------------
  |  Branch (318:6): [True: 0, False: 5.55k]
  ------------------
  319|      0|		goto nothing;
  320|       |
  321|  5.55k|	ret = is_pmbr_valid(pr, NULL);
  322|  5.55k|	if (ret < 0)
  ------------------
  |  Branch (322:6): [True: 0, False: 5.55k]
  ------------------
  323|      0|		return ret;
  324|  5.55k|	if (ret == 0)
  ------------------
  |  Branch (324:6): [True: 5.48k, False: 66]
  ------------------
  325|  5.48k|		goto nothing;
  326|       |
  327|  5.55k|	errno = 0;
  328|     66|	h = get_gpt_header(pr, &hdr, &e, (lba = GPT_PRIMARY_LBA), lastlba);
  ------------------
  |  |   26|     66|#define GPT_PRIMARY_LBA	1
  ------------------
  329|     66|	if (!h && !errno)
  ------------------
  |  Branch (329:6): [True: 66, False: 0]
  |  Branch (329:12): [True: 66, False: 0]
  ------------------
  330|     66|		h = get_gpt_header(pr, &hdr, &e, (lba = lastlba), lastlba);
  331|       |
  332|     66|	if (!h) {
  ------------------
  |  Branch (332:6): [True: 66, False: 0]
  ------------------
  333|     66|		if (errno)
  ------------------
  |  Branch (333:7): [True: 0, False: 66]
  ------------------
  334|      0|			return -errno;
  335|     66|		goto nothing;
  336|     66|	}
  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.55k|nothing:
  415|  5.55k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.55k|#define BLKID_PROBE_NONE	1
  ------------------
  416|       |
  417|      0|err:
  418|       |	return -ENOMEM;
  419|      0|}
gpt.c:last_lba:
  136|  6.28k|{
  137|  6.28k|	uint64_t sz = blkid_probe_get_size(pr);
  138|  6.28k|	unsigned int ssz = blkid_probe_get_sectorsize(pr);
  139|       |
  140|  6.28k|	if (sz < ssz)
  ------------------
  |  Branch (140:6): [True: 0, False: 6.28k]
  ------------------
  141|      0|		return -1;
  142|       |
  143|  6.28k|	*lba = (sz / ssz) - 1ULL;
  144|  6.28k|	return 0;
  145|  6.28k|}
gpt.c:is_pmbr_valid:
  162|  6.28k|{
  163|  6.28k|	int flags = blkid_partitions_get_flags(pr);
  164|  6.28k|	const unsigned char *data;
  165|  6.28k|	const struct dos_partition *p;
  166|  6.28k|	int i;
  167|       |
  168|  6.28k|	if (has)
  ------------------
  |  Branch (168:6): [True: 737, False: 5.55k]
  ------------------
  169|    737|		*has = 0;
  170|  5.55k|	else if (flags & BLKID_PARTS_FORCE_GPT)
  ------------------
  |  |  393|  5.55k|#define BLKID_PARTS_FORCE_GPT		(1 << 1)
  ------------------
  |  Branch (170:11): [True: 0, False: 5.55k]
  ------------------
  171|      0|		return 1;			/* skip PMBR check */
  172|       |
  173|  6.28k|	data = blkid_probe_get_sector(pr, 0);
  174|  6.28k|	if (!data) {
  ------------------
  |  Branch (174:6): [True: 0, False: 6.28k]
  ------------------
  175|      0|		if (errno)
  ------------------
  |  Branch (175:7): [True: 0, False: 0]
  ------------------
  176|      0|			return -errno;
  177|      0|		goto failed;
  178|      0|	}
  179|       |
  180|  6.28k|	if (!mbr_is_valid_magic(data))
  ------------------
  |  Branch (180:6): [True: 4.81k, False: 1.47k]
  ------------------
  181|  4.81k|		goto failed;
  182|       |
  183|  6.98k|	for (i = 0, p = mbr_get_partition(data, 0); i < 4; i++, p++) {
  ------------------
  |  Branch (183:46): [True: 5.64k, False: 1.34k]
  ------------------
  184|  5.64k|		if (p->sys_ind == MBR_GPT_PARTITION) {
  ------------------
  |  Branch (184:7): [True: 132, False: 5.51k]
  ------------------
  185|    132|			DBG(LOWPROBE, ul_debug(" #%d valid PMBR partition", i + 1));
  ------------------
  |  |  358|    132|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    132|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    132|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    132|	do { \
  |  |  |  |  |  |  |  |   76|    132|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    132|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    132|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 132]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    132|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 132]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    132|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    132|		x; \
  |  |  |  |  |  |   85|    132|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|    132|			goto ok;
  187|    132|		}
  188|  5.64k|	}
  189|  6.15k|failed:
  190|  6.15k|	return 0;
  191|    132|ok:
  192|    132|	if (has)
  ------------------
  |  Branch (192:6): [True: 66, False: 66]
  ------------------
  193|     66|		*has = 1;
  194|    132|	return 1;
  195|  1.47k|}
gpt.c:get_gpt_header:
  212|    264|{
  213|    264|	struct gpt_header *h;
  214|    264|	uint32_t crc;
  215|    264|	uint64_t lu, fu;
  216|    264|	uint64_t esz;
  217|    264|	uint32_t hsz, ssz;
  218|       |
  219|    264|	ssz = blkid_probe_get_sectorsize(pr);
  220|       |
  221|    264|	DBG(LOWPROBE, ul_debug(" checking for GPT header at %"PRIu64, lba));
  ------------------
  |  |  358|    264|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    264|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    264|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    264|	do { \
  |  |  |  |  |  |  |  |   76|    264|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    264|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    264|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 264]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    264|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 264]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    264|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    264|		x; \
  |  |  |  |  |  |   85|    264|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  222|       |
  223|       |	/* whole sector is allocated for GPT header */
  224|    264|	h = (struct gpt_header *) get_lba_buffer(pr, lba, ssz);
  225|    264|	if (!h)
  ------------------
  |  Branch (225:6): [True: 0, False: 264]
  ------------------
  226|      0|		return NULL;
  227|       |
  228|    264|	if (le64_to_cpu(h->signature) != GPT_HEADER_SIGNATURE)
  ------------------
  |  |  138|    264|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
              	if (le64_to_cpu(h->signature) != GPT_HEADER_SIGNATURE)
  ------------------
  |  |   29|    264|#define GPT_HEADER_SIGNATURE 0x5452415020494645ULL
  ------------------
  |  Branch (228:6): [True: 236, False: 28]
  ------------------
  229|    236|		return NULL;
  230|       |
  231|     28|	hsz = le32_to_cpu(h->header_size);
  ------------------
  |  |  137|     28|#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|     28|	if (hsz > ssz || hsz < sizeof(*h))
  ------------------
  |  Branch (236:6): [True: 18, False: 10]
  |  Branch (236:19): [True: 2, False: 8]
  ------------------
  237|     20|		return NULL;
  238|       |
  239|       |	/* Header has to be verified when header_crc32 is zero */
  240|      8|	crc = count_crc32((unsigned char *) h, hsz,
  241|      8|			offsetof(struct gpt_header, header_crc32),
  242|      8|			sizeof(h->header_crc32));
  243|       |
  244|      8|	if (!blkid_probe_verify_csum(pr, crc, le32_to_cpu(h->header_crc32))) {
  ------------------
  |  |  137|      8|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (244:6): [True: 8, False: 0]
  ------------------
  245|      8|		DBG(LOWPROBE, ul_debug("GPT header corrupted"));
  ------------------
  |  |  358|      8|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      8|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      8|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      8|	do { \
  |  |  |  |  |  |  |  |   76|      8|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      8|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      8|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      8|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 8]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      8|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      8|		x; \
  |  |  |  |  |  |   85|      8|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  246|      8|		return NULL;
  247|      8|	}
  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|    264|{
  115|    264|	return blkid_probe_get_buffer(pr,
  116|    264|			blkid_probe_get_sectorsize(pr) * lba, bytes);
  117|    264|}
gpt.c:count_crc32:
  108|      8|{
  109|      8|	return (ul_crc32_exclude_offset(~0L, buf, len, exclude_off, exclude_len, 0) ^ ~0L);
  110|      8|}
gpt.c:probe_pmbr_pt:
  443|    737|{
  444|    737|	int has = 0;
  445|    737|	struct gpt_entry *e;
  446|    737|	uint64_t lastlba = 0;
  447|    737|	struct gpt_header hdr;
  448|       |
  449|    737|	if (last_lba(pr, &lastlba))
  ------------------
  |  Branch (449:6): [True: 0, False: 737]
  ------------------
  450|      0|		goto nothing;
  451|       |
  452|    737|	is_pmbr_valid(pr, &has);
  453|    737|	if (!has)
  ------------------
  |  Branch (453:6): [True: 671, False: 66]
  ------------------
  454|    671|		goto nothing;
  455|       |
  456|     66|	if (!get_gpt_header(pr, &hdr, &e, GPT_PRIMARY_LBA, lastlba) &&
  ------------------
  |  |   26|     66|#define GPT_PRIMARY_LBA	1
  ------------------
  |  Branch (456:6): [True: 66, False: 0]
  ------------------
  457|     66|	    !get_gpt_header(pr, &hdr, &e, lastlba, lastlba))
  ------------------
  |  Branch (457:6): [True: 66, False: 0]
  ------------------
  458|     66|		return 0;
  459|    671|nothing:
  460|    671|	return 1;
  461|     66|}

mac.c:probe_mac_pt:
   75|    298|{
   76|    298|	struct mac_driver_desc *md;
   77|    298|	struct mac_partition *p;
   78|    298|	blkid_parttable tab = NULL;
   79|    298|	blkid_partlist ls;
   80|    298|	uint16_t block_size;
   81|    298|	uint16_t ssf;	/* sector size fragment */
   82|    298|	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|    298|	md = (struct mac_driver_desc *) blkid_probe_get_sector(pr, 0);
   89|    298|	if (!md) {
  ------------------
  |  Branch (89:6): [True: 0, False: 298]
  ------------------
   90|      0|		if (errno)
  ------------------
  |  Branch (90:7): [True: 0, False: 0]
  ------------------
   91|      0|			return -errno;
   92|      0|		goto nothing;
   93|      0|	}
   94|       |
   95|    298|	block_size = be16_to_cpu(md->block_size);
  ------------------
  |  |  140|    298|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   96|    298|	if (block_size < sizeof(struct mac_partition))
  ------------------
  |  Branch (96:6): [True: 17, False: 281]
  ------------------
   97|     17|		goto nothing;
   98|       |
   99|       |	/* The partition map always begins at physical block 1,
  100|       |	 * the second block on the disk.
  101|       |	 */
  102|    281|	p = (struct mac_partition *) get_mac_block(pr, block_size, 1);
  103|    281|	if (!p) {
  ------------------
  |  Branch (103:6): [True: 0, False: 281]
  ------------------
  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|    281|	if (!has_part_signature(p))
  ------------------
  |  Branch (110:6): [True: 281, False: 0]
  ------------------
  111|    281|		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|    298|nothing:
  180|    298|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    298|#define BLKID_PROBE_NONE	1
  ------------------
  181|      0|err:
  182|       |	return -ENOMEM;
  183|      0|}
mac.c:get_mac_block:
   63|    281|{
   64|    281|	return blkid_probe_get_buffer(pr, (uint64_t) num * block_size, block_size);
   65|    281|}
mac.c:has_part_signature:
   68|    281|{
   69|    281|	return	be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC ||
  ------------------
  |  |  140|    281|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
              	return	be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC ||
  ------------------
  |  |   17|    562|#define MAC_PARTITION_MAGIC		0x504d
  ------------------
  |  Branch (69:9): [True: 0, False: 281]
  ------------------
   70|    281|		be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC_OLD;
  ------------------
  |  |  140|    281|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
              		be16_to_cpu(p->signature) == MAC_PARTITION_MAGIC_OLD;
  ------------------
  |  |   18|    281|#define MAC_PARTITION_MAGIC_OLD		0x5453
  ------------------
  |  Branch (70:3): [True: 0, False: 281]
  ------------------
   71|    281|}

minix.c:probe_minix_pt:
   19|    670|{
   20|    670|	const struct dos_partition *p;
   21|    670|	blkid_parttable tab = NULL;
   22|    670|	blkid_partition parent;
   23|    670|	blkid_partlist ls;
   24|    670|	const unsigned char *data;
   25|    670|	int i;
   26|       |
   27|    670|	data = blkid_probe_get_sector(pr, 0);
   28|    670|	if (!data) {
  ------------------
  |  Branch (28:6): [True: 0, False: 670]
  ------------------
   29|      0|		if (errno)
  ------------------
  |  Branch (29:7): [True: 0, False: 0]
  ------------------
   30|      0|			return -errno;
   31|      0|		goto nothing;
   32|      0|	}
   33|       |
   34|    670|	ls = blkid_probe_get_partlist(pr);
   35|    670|	if (!ls)
  ------------------
  |  Branch (35:6): [True: 670, False: 0]
  ------------------
   36|    670|		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|    670|nothing:
   86|    670|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    670|#define BLKID_PROBE_NONE	1
  ------------------
   87|      0|err:
   88|       |	return -ENOMEM;
   89|      0|}

blkid_probe_enable_partitions:
  219|  6.18k|{
  220|  6.18k|	pr->chains[BLKID_CHAIN_PARTS].enabled = enable;
  221|  6.18k|	return 0;
  222|  6.18k|}
blkid_probe_set_partitions_flags:
  234|  6.18k|{
  235|  6.18k|	pr->chains[BLKID_CHAIN_PARTS].flags = flags;
  236|  6.18k|	return 0;
  237|  6.18k|}
blkid_probe_get_partlist:
  312|    670|{
  313|    670|	return (blkid_partlist) pr->chains[BLKID_CHAIN_PARTS].data;
  314|    670|}
blkid_partitions_need_typeonly:
  515|    922|{
  516|    922|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  517|       |
  518|    922|	return chn && chn->data && chn->binary ? FALSE : TRUE;
  ------------------
  |  |  202|      0|# define FALSE 0
  ------------------
              	return chn && chn->data && chn->binary ? FALSE : TRUE;
  ------------------
  |  |  198|    922|# define TRUE 1
  ------------------
  |  Branch (518:9): [True: 922, False: 0]
  |  Branch (518:16): [True: 0, False: 922]
  |  Branch (518:29): [True: 0, False: 0]
  ------------------
  519|    922|}
blkid_partitions_get_flags:
  523|  11.9k|{
  524|  11.9k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  525|       |
  526|  11.9k|	return chn ? chn->flags : 0;
  ------------------
  |  Branch (526:9): [True: 11.9k, False: 0]
  ------------------
  527|  11.9k|}
blkid_partitions_strcpy_ptuuid:
 1165|    397|{
 1166|    397|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
 1167|       |
 1168|    397|	if (chn->binary || !str || !*str)
  ------------------
  |  Branch (1168:6): [True: 0, False: 397]
  |  Branch (1168:21): [True: 0, False: 397]
  |  Branch (1168:29): [True: 118, False: 279]
  ------------------
 1169|    118|		return 0;
 1170|       |
 1171|    279|	if (!blkid_probe_set_value(pr, "PTUUID", (unsigned char *) str, strlen(str) + 1))
  ------------------
  |  Branch (1171:6): [True: 279, False: 0]
  ------------------
 1172|    279|		return -ENOMEM;
 1173|       |
 1174|      0|	return 0;
 1175|    279|}
partitions.c:partitions_free_data:
  403|  6.18k|{
  404|  6.18k|	blkid_partlist ls = (blkid_partlist) data;
  405|  6.18k|	int i;
  406|       |
  407|  6.18k|	if (!ls)
  ------------------
  |  Branch (407:6): [True: 6.18k, False: 0]
  ------------------
  408|  6.18k|		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.67k|{
  597|  5.67k|	int rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.67k|#define BLKID_PROBE_NONE	1
  ------------------
  598|  5.67k|	size_t i;
  599|       |
  600|  5.67k|	if (!pr || chn->idx < -1)
  ------------------
  |  Branch (600:6): [True: 0, False: 5.67k]
  |  Branch (600:13): [True: 0, False: 5.67k]
  ------------------
  601|      0|		return -EINVAL;
  602|       |
  603|  5.67k|	blkid_probe_chain_reset_values(pr, chn);
  604|       |
  605|  5.67k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  5.67k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (605:6): [True: 0, False: 5.67k]
  ------------------
  606|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  607|       |
  608|  5.67k|	if (chn->binary)
  ------------------
  |  Branch (608:6): [True: 0, False: 5.67k]
  ------------------
  609|      0|		partitions_init_data(chn);
  610|       |
  611|  5.67k|	if (!pr->wipe_size && (pr->prob_flags & BLKID_PROBE_FL_IGNORE_PT))
  ------------------
  |  |  250|  5.63k|#define BLKID_PROBE_FL_IGNORE_PT (1 << 1)	/* ignore partition table */
  ------------------
  |  Branch (611:6): [True: 5.63k, False: 42]
  |  Branch (611:24): [True: 14, False: 5.62k]
  ------------------
  612|     14|		goto details_only;
  613|       |
  614|  5.66k|	DBG(LOWPROBE, ul_debug("--> starting probing loop [PARTS idx=%d]",
  ------------------
  |  |  358|  5.66k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.66k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.66k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.66k|	do { \
  |  |  |  |  |  |  |  |   76|  5.66k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.66k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.66k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.66k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.66k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.66k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.66k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.66k|		x; \
  |  |  |  |  |  |   85|  5.66k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  615|  5.66k|		chn->idx));
  616|       |
  617|  5.66k|	i = chn->idx < 0 ? 0 : chn->idx + 1U;
  ------------------
  |  Branch (617:6): [True: 5.66k, False: 0]
  ------------------
  618|       |
  619|  82.7k|	for ( ; i < ARRAY_SIZE(idinfos); i++) {
  ------------------
  |  |  182|  82.7k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (619:10): [True: 77.5k, False: 5.14k]
  ------------------
  620|  77.5k|		const char *name;
  621|       |
  622|  77.5k|		chn->idx = i;
  623|       |
  624|       |		/* apply filter */
  625|  77.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: 77.5k]
  ------------------
  626|      0|			continue;
  627|       |
  628|       |		/* apply checks from idinfo */
  629|  77.5k|		rc = idinfo_probe(pr, idinfos[i], chn);
  630|  77.5k|		if (rc < 0)
  ------------------
  |  Branch (630:7): [True: 0, False: 77.5k]
  ------------------
  631|      0|			break;
  632|  77.5k|		if (rc != BLKID_PROBE_OK)
  ------------------
  |  |  465|  77.5k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (632:7): [True: 77.0k, False: 516]
  ------------------
  633|  77.0k|			continue;
  634|       |
  635|    516|		name = idinfos[i]->name;
  636|       |
  637|    516|		if (!chn->binary)
  ------------------
  |  Branch (637:7): [True: 516, 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|    516|			blkid_probe_set_value(pr, "PTTYPE",
  644|    516|						(const unsigned char *) name,
  645|    516|						strlen(name) + 1);
  646|       |
  647|    516|		DBG(LOWPROBE, ul_debug("<-- leaving probing loop (type=%s) [PARTS idx=%d]",
  ------------------
  |  |  358|    516|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    516|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    516|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    516|	do { \
  |  |  |  |  |  |  |  |   76|    516|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    516|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    516|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 516]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    516|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 516]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    516|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    516|		x; \
  |  |  |  |  |  |   85|    516|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  648|    516|			name, chn->idx));
  649|    516|		rc = BLKID_PROBE_OK;
  ------------------
  |  |  465|    516|#define BLKID_PROBE_OK	0
  ------------------
  650|    516|		break;
  651|  77.5k|	}
  652|       |
  653|  5.66k|	if (rc != BLKID_PROBE_OK) {
  ------------------
  |  |  465|  5.66k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (653:6): [True: 5.14k, False: 516]
  ------------------
  654|  5.14k|		DBG(LOWPROBE, ul_debug("<-- leaving probing loop (failed=%d) [PARTS idx=%d]",
  ------------------
  |  |  358|  5.14k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.14k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.14k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.14k|	do { \
  |  |  |  |  |  |  |  |   76|  5.14k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.14k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.14k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.14k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.14k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.14k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.14k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.14k|		x; \
  |  |  |  |  |  |   85|  5.14k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  655|  5.14k|			rc, chn->idx));
  656|  5.14k|	}
  657|       |
  658|  5.67k|details_only:
  659|       |	/*
  660|       |	 * Gather PART_ENTRY_* values if the current device is a partition.
  661|       |	 */
  662|  5.67k|	if ((rc == BLKID_PROBE_OK || rc == BLKID_PROBE_NONE) && !chn->binary &&
  ------------------
  |  |  465|  11.3k|#define BLKID_PROBE_OK	0
  ------------------
              	if ((rc == BLKID_PROBE_OK || rc == BLKID_PROBE_NONE) && !chn->binary &&
  ------------------
  |  |  471|  5.16k|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (662:7): [True: 516, False: 5.16k]
  |  Branch (662:31): [True: 5.16k, False: 0]
  |  Branch (662:58): [True: 5.67k, False: 0]
  ------------------
  663|  5.67k|	    (blkid_partitions_get_flags(pr) & BLKID_PARTS_ENTRY_DETAILS)) {
  ------------------
  |  |  394|  5.67k|#define BLKID_PARTS_ENTRY_DETAILS	(1 << 2)
  ------------------
  |  Branch (663:6): [True: 0, False: 5.67k]
  ------------------
  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.67k|	DBG(LOWPROBE, ul_debug("partitions probe done [rc=%d]",	rc));
  ------------------
  |  |  358|  5.67k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  5.67k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  5.67k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  5.67k|	do { \
  |  |  |  |  |  |  |  |   76|  5.67k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  5.67k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  5.67k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 5.67k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  5.67k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 5.67k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  5.67k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  5.67k|		x; \
  |  |  |  |  |  |   85|  5.67k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  676|  5.67k|	return rc;
  677|  5.66k|}
partitions.c:idinfo_probe:
  550|  77.5k|{
  551|  77.5k|	const struct blkid_idmag *mag = NULL;
  552|  77.5k|	uint64_t off;
  553|  77.5k|	int rc = BLKID_PROBE_NONE;		/* default is nothing */
  ------------------
  |  |  471|  77.5k|#define BLKID_PROBE_NONE	1
  ------------------
  554|       |
  555|  77.5k|	if (pr->size <= 0 || (id->minsz && (unsigned)id->minsz > pr->size))
  ------------------
  |  Branch (555:6): [True: 0, False: 77.5k]
  |  Branch (555:24): [True: 5.48k, False: 72.0k]
  |  Branch (555:37): [True: 0, False: 5.48k]
  ------------------
  556|      0|		goto nothing;	/* the device is too small */
  557|  77.5k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  77.5k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (557:6): [True: 0, False: 77.5k]
  ------------------
  558|      0|		goto nothing;
  559|       |
  560|  77.5k|	rc = blkid_probe_get_idmag(pr, id, &off, &mag);
  561|  77.5k|	if (rc != BLKID_PROBE_OK)
  ------------------
  |  |  465|  77.5k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (561:6): [True: 51.6k, False: 25.9k]
  ------------------
  562|  51.6k|		goto nothing;
  563|       |
  564|       |	/* final check by probing function */
  565|  25.9k|	if (id->probefunc) {
  ------------------
  |  Branch (565:6): [True: 25.9k, False: 0]
  ------------------
  566|  25.9k|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|  25.9k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  25.9k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  25.9k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  25.9k|	do { \
  |  |  |  |  |  |  |  |   76|  25.9k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  25.9k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  25.9k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 25.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  25.9k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 25.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  25.9k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  25.9k|		x; \
  |  |  |  |  |  |   85|  25.9k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  567|  25.9k|			"%s: ---> call probefunc()", id->name));
  568|  25.9k|		errno = 0;
  569|  25.9k|		rc = id->probefunc(pr, mag);
  570|  25.9k|		blkid_probe_prune_buffers(pr);
  571|  25.9k|		if (rc < 0) {
  ------------------
  |  Branch (571:7): [True: 0, False: 25.9k]
  ------------------
  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|  25.9k|		if (rc == BLKID_PROBE_OK && mag && chn && !chn->binary)
  ------------------
  |  |  465|  51.8k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (579:7): [True: 516, False: 25.4k]
  |  Branch (579:31): [True: 181, False: 335]
  |  Branch (579:38): [True: 181, False: 0]
  |  Branch (579:45): [True: 181, False: 0]
  ------------------
  580|    181|			rc = blkid_probe_set_magic(pr, off, mag->len,
  581|    181|					(const unsigned char *) mag->magic);
  582|       |
  583|  25.9k|		DBG(LOWPROBE, ul_debug("%s: <--- (rc = %d)", id->name, rc));
  ------------------
  |  |  358|  25.9k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  25.9k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  25.9k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  25.9k|	do { \
  |  |  |  |  |  |  |  |   76|  25.9k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  25.9k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  25.9k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 25.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  25.9k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 25.9k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  25.9k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  25.9k|		x; \
  |  |  |  |  |  |   85|  25.9k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  584|  25.9k|	}
  585|       |
  586|  25.9k|	return rc;
  587|       |
  588|  51.6k|nothing:
  589|  51.6k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  51.6k|#define BLKID_PROBE_NONE	1
  ------------------
  590|  77.5k|}

sgi.c:probe_sgi_pt:
   20|     73|{
   21|     73|	struct sgi_disklabel *l;
   22|     73|	struct sgi_partition *p;
   23|     73|	blkid_parttable tab = NULL;
   24|     73|	blkid_partlist ls;
   25|     73|	int i;
   26|       |
   27|     73|	l = (struct sgi_disklabel *) blkid_probe_get_sector(pr, 0);
   28|     73|	if (!l) {
  ------------------
  |  Branch (28:6): [True: 0, False: 73]
  ------------------
   29|      0|		if (errno)
  ------------------
  |  Branch (29:7): [True: 0, False: 0]
  ------------------
   30|      0|			return -errno;
   31|      0|		goto nothing;
   32|      0|	}
   33|       |
   34|     73|	if (!blkid_probe_verify_csum(pr, sgi_pt_checksum(l), 0)) {
  ------------------
  |  Branch (34:6): [True: 73, False: 0]
  ------------------
   35|     73|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|     73|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     73|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     73|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     73|	do { \
  |  |  |  |  |  |  |  |   76|     73|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     73|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     73|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 73]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     73|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 73]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     73|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     73|		x; \
  |  |  |  |  |  |   85|     73|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   36|     73|			"detected corrupted sgi disk label -- ignore"));
   37|     73|		goto nothing;
   38|     73|	}
   39|       |
   40|      0|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (40:6): [True: 0, False: 0]
  ------------------
   41|       |		/* caller does not ask for details about partitions */
   42|      0|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      0|#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|     73|nothing:
   72|     73|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     73|#define BLKID_PROBE_NONE	1
  ------------------
   73|      0|err:
   74|       |	return -ENOMEM;
   75|      0|}

solaris_x86.c:probe_solaris_pt:
   63|    379|{
   64|    379|	struct solaris_vtoc *l;	/* disk label */
   65|    379|	struct solaris_slice *p;	/* partition */
   66|    379|	blkid_parttable tab = NULL;
   67|    379|	blkid_partition parent;
   68|    379|	blkid_partlist ls;
   69|    379|	int i;
   70|    379|	uint16_t nparts;
   71|       |
   72|    379|	l = (struct solaris_vtoc *) blkid_probe_get_sector(pr, SOLARIS_SECTOR);
  ------------------
  |  |   31|    379|#define SOLARIS_SECTOR		1			/* in 512-sectors */
  ------------------
   73|    379|	if (!l) {
  ------------------
  |  Branch (73:6): [True: 0, False: 379]
  ------------------
   74|      0|		if (errno)
  ------------------
  |  Branch (74:7): [True: 0, False: 0]
  ------------------
   75|      0|			return -errno;
   76|      0|		goto nothing;
   77|      0|	}
   78|       |
   79|    379|	if (le32_to_cpu(l->v_version) != 1) {
  ------------------
  |  |  137|    379|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (79:6): [True: 378, False: 1]
  ------------------
   80|    378|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|    378|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    378|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    378|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    378|	do { \
  |  |  |  |  |  |  |  |   76|    378|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    378|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    378|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 378]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    378|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 378]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    378|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    378|		x; \
  |  |  |  |  |  |   85|    378|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|    378|			"WARNING: unsupported solaris x86 version %"PRIu32", ignore",
   82|    378|			le32_to_cpu(l->v_version)));
   83|    378|		goto nothing;
   84|    378|	}
   85|       |
   86|      1|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (86:6): [True: 1, False: 0]
  ------------------
   87|       |		/* caller does not ask for details about partitions */
   88|      1|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      1|#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|    378|nothing:
  136|    378|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    378|#define BLKID_PROBE_NONE	1
  ------------------
  137|      0|err:
  138|       |	return -ENOMEM;
  139|      0|}

sun.c:probe_sun_pt:
   20|    394|{
   21|    394|	struct sun_disklabel *l;
   22|    394|	struct sun_partition *p;
   23|    394|	blkid_parttable tab = NULL;
   24|    394|	blkid_partlist ls;
   25|    394|	uint16_t nparts;
   26|    394|	uint64_t spc;
   27|    394|	int i, use_vtoc;
   28|       |
   29|    394|	l = (struct sun_disklabel *) blkid_probe_get_sector(pr, 0);
   30|    394|	if (!l) {
  ------------------
  |  Branch (30:6): [True: 0, False: 394]
  ------------------
   31|      0|		if (errno)
  ------------------
  |  Branch (31:7): [True: 0, False: 0]
  ------------------
   32|      0|			return -errno;
   33|      0|		goto nothing;
   34|      0|	}
   35|       |
   36|    394|	if (!blkid_probe_verify_csum(pr, sun_pt_checksum(l), 0)) {
  ------------------
  |  Branch (36:6): [True: 392, False: 2]
  ------------------
   37|    392|		DBG(LOWPROBE, ul_debug(
  ------------------
  |  |  358|    392|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    392|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    392|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    392|	do { \
  |  |  |  |  |  |  |  |   76|    392|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    392|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    392|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 392]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    392|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 392]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    392|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    392|		x; \
  |  |  |  |  |  |   85|    392|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   38|    392|			"detected corrupted sun disk label -- ignore"));
   39|    392|		goto nothing;
   40|    392|	}
   41|       |
   42|      2|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (42:6): [True: 2, False: 0]
  ------------------
   43|       |		/* caller does not ask for details about partitions */
   44|      2|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      2|#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|    392|nothing:
  105|    392|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    392|#define BLKID_PROBE_NONE	1
  ------------------
  106|      0|err:
  107|       |	return -ENOMEM;
  108|      0|}

ultrix.c:probe_ultrix_pt:
   39|  5.48k|{
   40|  5.48k|	const unsigned char *data;
   41|  5.48k|	const struct ultrix_disklabel *l;
   42|  5.48k|	blkid_parttable tab = NULL;
   43|  5.48k|	blkid_partlist ls;
   44|  5.48k|	int i;
   45|       |
   46|  5.48k|	data = blkid_probe_get_sector(pr, ULTRIX_SECTOR);
  ------------------
  |  |   23|  5.48k|#define ULTRIX_SECTOR		((16384 - sizeof(struct ultrix_disklabel)) >> 9)
  ------------------
   47|  5.48k|	if (!data) {
  ------------------
  |  Branch (47:6): [True: 0, False: 5.48k]
  ------------------
   48|      0|		if (errno)
  ------------------
  |  Branch (48:7): [True: 0, False: 0]
  ------------------
   49|      0|			return -errno;
   50|      0|		goto nothing;
   51|      0|	}
   52|       |
   53|  5.48k|	l = (const struct ultrix_disklabel *) (data + ULTRIX_OFFSET);
  ------------------
  |  |   25|  5.48k|#define ULTRIX_OFFSET		(512 - sizeof(struct ultrix_disklabel))
  ------------------
   54|       |
   55|  5.48k|	if (l->pt_magic != ULTRIX_MAGIC || l->pt_valid != 1)
  ------------------
  |  |   19|  10.9k|#define ULTRIX_MAGIC		0x032957
  ------------------
  |  Branch (55:6): [True: 5.45k, False: 30]
  |  Branch (55:37): [True: 29, False: 1]
  ------------------
   56|  5.48k|		goto nothing;
   57|       |
   58|      1|	if (blkid_probe_set_magic(pr, (ULTRIX_SECTOR << 9) + ULTRIX_OFFSET,
  ------------------
  |  |   23|      1|#define ULTRIX_SECTOR		((16384 - sizeof(struct ultrix_disklabel)) >> 9)
  ------------------
              	if (blkid_probe_set_magic(pr, (ULTRIX_SECTOR << 9) + ULTRIX_OFFSET,
  ------------------
  |  |   25|      1|#define ULTRIX_OFFSET		(512 - sizeof(struct ultrix_disklabel))
  ------------------
  |  Branch (58:6): [True: 0, False: 1]
  ------------------
   59|      1|			sizeof(ULTRIX_MAGIC_STR) - 1,
  ------------------
  |  |   20|      1|#define ULTRIX_MAGIC_STR	"\x02\x29\x57"
  ------------------
   60|      1|			(unsigned char *) ULTRIX_MAGIC_STR))
  ------------------
  |  |   20|      1|#define ULTRIX_MAGIC_STR	"\x02\x29\x57"
  ------------------
   61|      0|		goto err;
   62|       |
   63|      1|	if (blkid_partitions_need_typeonly(pr))
  ------------------
  |  Branch (63:6): [True: 1, False: 0]
  ------------------
   64|       |		/* caller does not ask for details about partitions */
   65|      1|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      1|#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.48k|nothing:
   88|  5.48k|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  5.48k|#define BLKID_PROBE_NONE	1
  ------------------
   89|      0|err:
   90|       |	return -ENOMEM;
   91|      0|}

unixware.c:probe_unixware_pt:
   99|     80|{
  100|     80|	struct unixware_disklabel *l;
  101|     80|	struct unixware_partition *p;
  102|     80|	blkid_parttable tab = NULL;
  103|     80|	blkid_partition parent;
  104|     80|	blkid_partlist ls;
  105|     80|	int i;
  106|       |
  107|     80|	l = (struct unixware_disklabel *)
  108|     80|			blkid_probe_get_sector(pr, UNIXWARE_SECTOR);
  ------------------
  |  |   24|     80|#define UNIXWARE_SECTOR		29
  ------------------
  109|     80|	if (!l) {
  ------------------
  |  Branch (109:6): [True: 0, False: 80]
  ------------------
  110|      0|		if (errno)
  ------------------
  |  Branch (110:7): [True: 0, False: 0]
  ------------------
  111|      0|			return -errno;
  112|      0|		goto nothing;
  113|      0|	}
  114|       |
  115|     80|	if (le32_to_cpu(l->vtoc.v_magic) != UNIXWARE_VTOCMAGIC)
  ------------------
  |  |  137|     80|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(l->vtoc.v_magic) != UNIXWARE_VTOCMAGIC)
  ------------------
  |  |   31|     80|#define UNIXWARE_VTOCMAGIC	0x600DDEEEUL
  ------------------
  |  Branch (115:6): [True: 79, False: 1]
  ------------------
  116|     79|		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|     79|nothing:
  170|     79|	return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     79|#define BLKID_PROBE_NONE	1
  ------------------
  171|      0|err:
  172|       |	return -ENOMEM;
  173|      0|}

blkid_new_probe:
  142|  6.18k|{
  143|  6.18k|	int i;
  144|  6.18k|	blkid_probe pr;
  145|       |
  146|  6.18k|	pr = calloc(1, sizeof(struct blkid_struct_probe));
  147|  6.18k|	if (!pr)
  ------------------
  |  Branch (147:6): [True: 0, False: 6.18k]
  ------------------
  148|      0|		return NULL;
  149|       |
  150|  6.18k|	DBG(LOWPROBE, ul_debug("allocate a new probe"));
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  151|       |
  152|       |	/* initialize chains */
  153|  24.7k|	for (i = 0; i < BLKID_NCHAINS; i++) {
  ------------------
  |  Branch (153:14): [True: 18.5k, False: 6.18k]
  ------------------
  154|  18.5k|		pr->chains[i].driver = chains_drvs[i];
  155|  18.5k|		pr->chains[i].flags = chains_drvs[i]->dflt_flags;
  156|  18.5k|		pr->chains[i].enabled = chains_drvs[i]->dflt_enabled;
  157|  18.5k|	}
  158|  6.18k|	INIT_LIST_HEAD(&pr->buffers);
  ------------------
  |  |   38|  6.18k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  6.18k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  6.18k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 6.18k]
  |  |  ------------------
  ------------------
  159|  6.18k|	INIT_LIST_HEAD(&pr->prunable_buffers);
  ------------------
  |  |   38|  6.18k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  6.18k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  6.18k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 6.18k]
  |  |  ------------------
  ------------------
  160|  6.18k|	INIT_LIST_HEAD(&pr->values);
  ------------------
  |  |   38|  6.18k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  6.18k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  6.18k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 6.18k]
  |  |  ------------------
  ------------------
  161|  6.18k|	INIT_LIST_HEAD(&pr->hints);
  ------------------
  |  |   38|  6.18k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  6.18k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  6.18k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 6.18k]
  |  |  ------------------
  ------------------
  162|  6.18k|	return pr;
  163|  6.18k|}
blkid_probe_open_device:
  230|  6.18k|{
  231|  6.18k|	int fd;
  232|  6.18k|	struct stat sb;
  233|       |
  234|  6.18k|	if (stat(filename, &sb) == 0 && S_ISBLK(sb.st_mode) &&
  ------------------
  |  Branch (234:6): [True: 6.18k, False: 0]
  |  Branch (234:34): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|	if (!flags)
  ------------------
  |  Branch (241:6): [True: 6.18k, False: 0]
  ------------------
  242|  6.18k|		flags = O_RDONLY | O_CLOEXEC | O_NONBLOCK;
  243|       |
  244|  6.18k|	fd = ul_vfs_open(pr->vfs, filename, flags, 0);
  245|  6.18k|	if (fd < 0)
  ------------------
  |  Branch (245:6): [True: 0, False: 6.18k]
  ------------------
  246|      0|		return -errno;
  247|       |
  248|  6.18k|	if (blkid_probe_set_device(pr, fd, 0, 0)) {
  ------------------
  |  Branch (248:6): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|	pr->flags |= BLKID_FL_PRIVATE_FD;
  ------------------
  |  |  241|  6.18k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
  254|  6.18k|	return 0;
  255|  6.18k|}
blkid_new_probe_from_filename:
  271|  6.18k|{
  272|  6.18k|	blkid_probe pr;
  273|       |
  274|  6.18k|	pr = blkid_new_probe();
  275|  6.18k|	if (!pr)
  ------------------
  |  Branch (275:6): [True: 0, False: 6.18k]
  ------------------
  276|      0|		return NULL;
  277|       |
  278|  6.18k|	if (blkid_probe_open_device(pr, filename, 0)) {
  ------------------
  |  Branch (278:6): [True: 0, False: 6.18k]
  ------------------
  279|      0|		blkid_free_probe(pr);
  280|      0|		return NULL;
  281|      0|	}
  282|       |
  283|  6.18k|	return pr;
  284|  6.18k|}
blkid_free_probe:
  294|  12.3k|{
  295|  12.3k|	int i;
  296|       |
  297|  12.3k|	if (!pr)
  ------------------
  |  Branch (297:6): [True: 6.18k, False: 6.18k]
  ------------------
  298|  6.18k|		return;
  299|       |
  300|  24.7k|	for (i = 0; i < BLKID_NCHAINS; i++) {
  ------------------
  |  Branch (300:14): [True: 18.5k, False: 6.18k]
  ------------------
  301|  18.5k|		struct blkid_chain *ch = &pr->chains[i];
  302|       |
  303|  18.5k|		if (ch->driver->free_data)
  ------------------
  |  Branch (303:7): [True: 12.3k, False: 6.18k]
  ------------------
  304|  12.3k|			ch->driver->free_data(pr, ch->data);
  305|  18.5k|		free(ch->fltr);
  306|  18.5k|		ch->fltr = NULL;
  307|  18.5k|	}
  308|       |
  309|  6.18k|	if ((pr->flags & BLKID_FL_PRIVATE_FD) && pr->fd >= 0)
  ------------------
  |  |  241|  6.18k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
  |  Branch (309:6): [True: 6.18k, False: 0]
  |  Branch (309:43): [True: 6.18k, False: 0]
  ------------------
  310|  6.18k|		ul_vfs_close(pr->vfs, pr->fd);
  311|  6.18k|	blkid_probe_reset_buffers(pr);
  312|  6.18k|	blkid_probe_reset_values(pr);
  313|  6.18k|	blkid_probe_reset_hints(pr);
  314|  6.18k|	blkid_free_probe(pr->disk_probe);
  315|       |
  316|  6.18k|	DBG(LOWPROBE, ul_debug("free probe"));
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  317|  6.18k|	free(pr->vfs);
  318|  6.18k|	free(pr);
  319|  6.18k|}
blkid_probe_free_value:
  322|  4.73k|{
  323|  4.73k|	if (!v)
  ------------------
  |  Branch (323:6): [True: 0, False: 4.73k]
  ------------------
  324|      0|		return;
  325|       |
  326|  4.73k|	list_del(&v->prvals);
  327|  4.73k|	free(v->data);
  328|       |
  329|  4.73k|	DBG(LOWPROBE, ul_debug(" free value %s", v->name));
  ------------------
  |  |  358|  4.73k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  4.73k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  4.73k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  4.73k|	do { \
  |  |  |  |  |  |  |  |   76|  4.73k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  4.73k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  4.73k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 4.73k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  4.73k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 4.73k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.73k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  4.73k|		x; \
  |  |  |  |  |  |   85|  4.73k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  330|  4.73k|	free(v);
  331|  4.73k|}
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: 124k, False: 1.92k]
  ------------------
  342|   124k|		return;
  343|       |
  344|  1.92k|	DBG(LOWPROBE, ul_debug("Resetting %s values", chn->driver->name));
  ------------------
  |  |  358|  1.92k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.92k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.92k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.92k|	do { \
  |  |  |  |  |  |  |  |   76|  1.92k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.92k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.92k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.92k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.92k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.92k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.92k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.92k|		x; \
  |  |  |  |  |  |   85|  1.92k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  345|       |
  346|  3.09k|	list_for_each_safe(p, pnext, &pr->values) {
  ------------------
  |  |  208|  5.01k|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 3.09k, False: 1.92k]
  |  |  ------------------
  |  |  209|  3.09k|	     pos = pnext, pnext = pos->next)
  ------------------
  347|  3.09k|		struct blkid_prval *v = list_entry(p,
  ------------------
  |  |  176|  3.09k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  3.09k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  3.09k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  3.09k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  348|  3.09k|						struct blkid_prval, prvals);
  349|       |
  350|  3.09k|		if (v->chain == chn)
  ------------------
  |  Branch (350:7): [True: 1.45k, False: 1.64k]
  ------------------
  351|  1.45k|			blkid_probe_free_value(v);
  352|  3.09k|	}
  353|  1.92k|}
blkid_probe_chain_save_values:
  365|  1.45k|{
  366|  1.45k|	struct list_head *p, *pnext;
  367|  1.45k|	struct blkid_prval *v;
  368|       |
  369|  1.45k|	DBG(LOWPROBE, ul_debug("saving %s values", chn->driver->name));
  ------------------
  |  |  358|  1.45k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.45k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.45k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.45k|	do { \
  |  |  |  |  |  |  |  |   76|  1.45k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.45k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.45k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.45k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.45k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.45k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.45k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.45k|		x; \
  |  |  |  |  |  |   85|  1.45k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  370|       |
  371|  2.46k|	list_for_each_safe(p, pnext, &pr->values) {
  ------------------
  |  |  208|  3.91k|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 2.46k, False: 1.45k]
  |  |  ------------------
  |  |  209|  2.46k|	     pos = pnext, pnext = pos->next)
  ------------------
  372|       |
  373|  2.46k|		v = list_entry(p, struct blkid_prval, prvals);
  ------------------
  |  |  176|  2.46k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  2.46k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  2.46k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  2.46k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  374|  2.46k|		if (v->chain != chn)
  ------------------
  |  Branch (374:7): [True: 0, False: 2.46k]
  ------------------
  375|      0|			continue;
  376|       |
  377|  2.46k|		list_del_init(&v->prvals);
  378|  2.46k|		list_add_tail(&v->prvals, vals);
  379|  2.46k|	}
  380|  1.45k|	return 0;
  381|  1.45k|}
blkid_probe_append_values_list:
  387|    983|{
  388|    983|	DBG(LOWPROBE, ul_debug("appending values"));
  ------------------
  |  |  358|    983|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    983|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    983|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    983|	do { \
  |  |  |  |  |  |  |  |   76|    983|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    983|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    983|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 983]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    983|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 983]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    983|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    983|		x; \
  |  |  |  |  |  |   85|    983|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  389|       |
  390|    983|	list_splice(vals, &pr->values);
  391|    983|	INIT_LIST_HEAD(vals);
  ------------------
  |  |   38|    983|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|    983|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|    983|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 983]
  |  |  ------------------
  ------------------
  392|    983|}
blkid_probe_free_values_list:
  396|  6.18k|{
  397|  6.18k|	if (!vals)
  ------------------
  |  Branch (397:6): [True: 0, False: 6.18k]
  ------------------
  398|      0|		return;
  399|       |
  400|  6.18k|	DBG(LOWPROBE, ul_debug("freeing values list"));
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  401|       |
  402|  7.04k|	while (!list_empty(vals)) {
  ------------------
  |  Branch (402:9): [True: 857, False: 6.18k]
  ------------------
  403|       |		struct blkid_prval *v = list_entry(vals->next, struct blkid_prval, prvals);
  ------------------
  |  |  176|    857|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|    857|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|    857|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|    857|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  404|    857|		blkid_probe_free_value(v);
  405|    857|	}
  406|  6.18k|}
blkid_probe_get_chain:
  409|  30.1k|{
  410|  30.1k|	return pr->cur_chain;
  411|  30.1k|}
blkid_reset_probe:
  466|  6.18k|{
  467|  6.18k|	int i;
  468|       |
  469|  6.18k|	blkid_probe_reset_values(pr);
  470|  6.18k|	blkid_probe_set_wiper(pr, 0, 0);
  471|       |
  472|  6.18k|	pr->cur_chain = NULL;
  473|       |
  474|  24.7k|	for (i = 0; i < BLKID_NCHAINS; i++)
  ------------------
  |  Branch (474:14): [True: 18.5k, False: 6.18k]
  ------------------
  475|  18.5k|		blkid_probe_chain_reset_position(&pr->chains[i]);
  476|  6.18k|}
blkid_probe_get_filter:
  509|  6.18k|{
  510|  6.18k|	struct blkid_chain *chn;
  511|       |
  512|  6.18k|	if (chain < 0 || chain >= BLKID_NCHAINS)
  ------------------
  |  Branch (512:6): [True: 0, False: 6.18k]
  |  Branch (512:19): [True: 0, False: 6.18k]
  ------------------
  513|      0|		return NULL;
  514|       |
  515|  6.18k|	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|  6.18k|	blkid_probe_chain_reset_position(chn);
  521|  6.18k|	pr->cur_chain = NULL;
  522|       |
  523|  6.18k|	if (!chn->driver->has_fltr || (!chn->fltr && !create))
  ------------------
  |  Branch (523:6): [True: 0, False: 6.18k]
  |  Branch (523:33): [True: 6.18k, False: 0]
  |  Branch (523:47): [True: 0, False: 6.18k]
  ------------------
  524|      0|		return NULL;
  525|       |
  526|  6.18k|	if (!chn->fltr)
  ------------------
  |  Branch (526:6): [True: 6.18k, False: 0]
  ------------------
  527|  6.18k|		chn->fltr = calloc(1, blkid_bmp_nbytes(chn->driver->nidinfos));
  ------------------
  |  |  583|  6.18k|		(blkid_bmp_nwords(max_items) * sizeof(unsigned long))
  |  |  ------------------
  |  |  |  |  580|  6.18k|		(((max_items) + blkid_bmp_wordsize) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  6.18k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  |  |               		(((max_items) + blkid_bmp_wordsize) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  6.18k|#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|  6.18k|	return chn->fltr;
  533|  6.18k|}
__blkid_probe_filter_types:
  562|  6.18k|{
  563|  6.18k|	unsigned long *fltr;
  564|  6.18k|	struct blkid_chain *chn;
  565|  6.18k|	size_t i;
  566|       |
  567|  6.18k|	fltr = blkid_probe_get_filter(pr, chain, TRUE);
  ------------------
  |  |  198|  6.18k|# define TRUE 1
  ------------------
  568|  6.18k|	if (!fltr)
  ------------------
  |  Branch (568:6): [True: 0, False: 6.18k]
  ------------------
  569|      0|		return -1;
  570|       |
  571|  6.18k|	chn = &pr->chains[chain];
  572|       |
  573|   513k|	for (i = 0; i < chn->driver->nidinfos; i++) {
  ------------------
  |  Branch (573:14): [True: 507k, False: 6.18k]
  ------------------
  574|   507k|		int has = 0;
  575|   507k|		const struct blkid_idinfo *id = chn->driver->idinfos[i];
  576|   507k|		char **n;
  577|       |
  578|  1.00M|		for (n = names; *n; n++) {
  ------------------
  |  Branch (578:19): [True: 507k, False: 494k]
  ------------------
  579|   507k|			if (!strcmp(id->name, *n)) {
  ------------------
  |  Branch (579:8): [True: 12.3k, False: 494k]
  ------------------
  580|  12.3k|				has = 1;
  581|  12.3k|				break;
  582|  12.3k|			}
  583|   507k|		}
  584|   507k|		if (has) {
  ------------------
  |  Branch (584:7): [True: 12.3k, False: 494k]
  ------------------
  585|  12.3k|			if (flag & BLKID_FLTR_NOTIN)
  ------------------
  |  |  336|  12.3k|#define BLKID_FLTR_NOTIN		1
  ------------------
  |  Branch (585:8): [True: 12.3k, False: 0]
  ------------------
  586|  12.3k|				blkid_bmp_set_item(fltr, i);
  ------------------
  |  |  571|  12.3k|		((bmp)[ blkid_bmp_idx_byte(item) ] |= blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  568|  12.3k|#define blkid_bmp_idx_byte(item)	((item) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  12.3k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		((bmp)[ blkid_bmp_idx_byte(item) ] |= blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  567|  12.3k|#define blkid_bmp_idx_bit(item)		(1UL << ((item) % blkid_bmp_wordsize))
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|  12.3k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  587|   494k|		} else if (flag & BLKID_FLTR_ONLYIN)
  ------------------
  |  |  340|   494k|#define BLKID_FLTR_ONLYIN		2
  ------------------
  |  Branch (587:14): [True: 0, False: 494k]
  ------------------
  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|   507k|	}
  590|       |
  591|  6.18k|	DBG(LOWPROBE, ul_debug("%s: a new probing type-filter initialized",
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  592|  6.18k|		chn->driver->name));
  593|       |	/* blkid_probe_dump_filter(pr, chain); */
  594|  6.18k|	return 0;
  595|  6.18k|}
blkid_probe_prune_buffers:
  707|   152k|{
  708|   152k|	struct list_head *p, *next;
  709|       |
  710|   152k|	list_for_each_safe(p, next, &pr->prunable_buffers) {
  ------------------
  |  |  208|   229k|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 76.7k, False: 152k]
  |  |  ------------------
  |  |  209|   152k|	     pos = pnext, pnext = pos->next)
  ------------------
  711|  76.7k|		struct blkid_bufinfo *x =
  712|  76.7k|				list_entry(p, struct blkid_bufinfo, bufs);
  ------------------
  |  |  176|  76.7k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  76.7k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  76.7k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  76.7k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  713|       |
  714|  76.7k|		remove_buffer(x);
  715|  76.7k|	}
  716|   152k|}
blkid_probe_get_buffer:
  765|  1.23M|{
  766|  1.23M|	struct blkid_bufinfo *bf = NULL;
  767|  1.23M|	uint64_t real_off, bias, len_align;
  768|       |
  769|  1.23M|	bias = off % pr->io_size;
  770|  1.23M|	off -= bias;
  771|  1.23M|	len += bias;
  772|       |
  773|  1.23M|	if (len % pr->io_size) {
  ------------------
  |  Branch (773:6): [True: 1.00M, False: 223k]
  ------------------
  774|  1.00M|		len_align = pr->io_size - (len % pr->io_size);
  775|       |
  776|  1.00M|		if (pr->off + off + len + len_align <= pr->size)
  ------------------
  |  Branch (776:7): [True: 1.00M, False: 920]
  ------------------
  777|  1.00M|			len += len_align;
  778|  1.00M|	}
  779|       |
  780|  1.23M|	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.23M|	if (pr->size == 0 || pr->io_size == 0) {
  ------------------
  |  Branch (786:6): [True: 0, False: 1.23M]
  |  Branch (786:23): [True: 0, False: 1.23M]
  ------------------
  787|      0|		errno = EINVAL;
  788|      0|		return NULL;
  789|      0|	}
  790|       |
  791|  1.23M|	if (UINT64_MAX - len < off || UINT64_MAX - len < real_off) {
  ------------------
  |  Branch (791:6): [True: 24, False: 1.23M]
  |  Branch (791:32): [True: 0, False: 1.23M]
  ------------------
  792|     24|		DBG(BUFFER, ul_debug("\t  read-buffer overflow (ignore)"));
  ------------------
  |  |  358|     24|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     24|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     24|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     24|	do { \
  |  |  |  |  |  |  |  |   76|     24|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|     24|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     24|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 24]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     24|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 24]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     24|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     24|		x; \
  |  |  |  |  |  |   85|     24|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  793|     24|		return NULL;
  794|     24|	}
  795|       |
  796|  1.23M|	if (len > 8388608 /* 8 Mib */ ) {
  ------------------
  |  Branch (796:6): [True: 126, False: 1.23M]
  ------------------
  797|    126|		DBG(BUFFER, ul_debug("\t  too large read request (ignore)"));
  ------------------
  |  |  358|    126|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    126|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    126|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    126|	do { \
  |  |  |  |  |  |  |  |   76|    126|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|    126|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    126|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 126]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    126|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 126]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    126|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    126|		x; \
  |  |  |  |  |  |   85|    126|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  798|    126|		return NULL;
  799|    126|	}
  800|       |
  801|  1.23M|	if (len == 0
  ------------------
  |  Branch (801:6): [True: 47, False: 1.23M]
  ------------------
  802|  1.23M|	    || (!S_ISCHR(pr->mode) && (pr->size < off || pr->size < len))
  ------------------
  |  Branch (802:10): [True: 1.23M, False: 0]
  |  Branch (802:33): [True: 3.32k, False: 1.22M]
  |  Branch (802:51): [True: 0, False: 1.22M]
  ------------------
  803|  1.22M|	    || (!S_ISCHR(pr->mode) && (pr->off + pr->size < real_off + len))) {
  ------------------
  |  Branch (803:10): [True: 1.22M, False: 0]
  |  Branch (803:32): [True: 358, False: 1.22M]
  ------------------
  804|  3.72k|		DBG(BUFFER, ul_debug("\t  read-buffer out of probing area (ignore)"));
  ------------------
  |  |  358|  3.72k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  3.72k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  3.72k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  3.72k|	do { \
  |  |  |  |  |  |  |  |   76|  3.72k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|  3.72k|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  3.72k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 3.72k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  3.72k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 3.72k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  3.72k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  3.72k|		x; \
  |  |  |  |  |  |   85|  3.72k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  805|  3.72k|		errno = 0;
  806|  3.72k|		return NULL;
  807|  3.72k|	}
  808|       |
  809|  1.22M|	if (pr->parent &&
  ------------------
  |  Branch (809:6): [True: 0, False: 1.22M]
  ------------------
  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.22M|	bf = get_cached_buffer(pr, off, len);
  826|  1.22M|	if (!bf) {
  ------------------
  |  Branch (826:6): [True: 226k, False: 1.00M]
  ------------------
  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.22M|	assert(bf->off <= real_off);
  ------------------
  |  Branch (835:2): [True: 0, False: 1.22M]
  |  Branch (835:2): [True: 1.22M, False: 0]
  ------------------
  836|  1.22M|	assert(bf->off + bf->len >= real_off + len);
  ------------------
  |  Branch (836:2): [True: 0, False: 1.22M]
  |  Branch (836:2): [True: 1.22M, False: 0]
  ------------------
  837|       |
  838|  1.22M|	errno = 0;
  839|  1.22M|	return real_off ? bf->data + (real_off - bf->off + bias) : bf->data + bias;
  ------------------
  |  Branch (839:9): [True: 883k, False: 345k]
  ------------------
  840|  1.22M|}
blkid_probe_get_buffer_direct:
  849|  1.07k|{
  850|  1.07k|	const unsigned char *ret = NULL;
  851|  1.07k|	int flags, rc, olderrno;
  852|       |
  853|  1.07k|	flags = fcntl(pr->fd, F_GETFL);
  854|  1.07k|	rc = fcntl(pr->fd, F_SETFL, flags | O_DIRECT);
  855|  1.07k|	if (rc) {
  ------------------
  |  Branch (855:6): [True: 0, False: 1.07k]
  ------------------
  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|  1.07k|	ret = blkid_probe_get_buffer(pr, off, len);
  861|  1.07k|	olderrno = errno;
  862|  1.07k|	rc = fcntl(pr->fd, F_SETFL, flags);
  863|  1.07k|	if (rc) {
  ------------------
  |  Branch (863:6): [True: 0, False: 1.07k]
  ------------------
  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|  1.07k|	return ret;
  868|  1.07k|}
blkid_probe_reset_buffers:
  885|  13.4k|{
  886|  13.4k|	uint64_t ct = 0, len = 0;
  887|       |
  888|  13.4k|	pr->flags &= ~BLKID_FL_MODIF_BUFF;
  ------------------
  |  |  245|  13.4k|#define BLKID_FL_MODIF_BUFF	(1 << 5)	/* cached buffers has been modified */
  ------------------
  889|       |
  890|  13.4k|	blkid_probe_prune_buffers(pr);
  891|       |
  892|  13.4k|	if (list_empty(&pr->buffers))
  ------------------
  |  Branch (892:6): [True: 6.18k, False: 7.25k]
  ------------------
  893|  6.18k|		return 0;
  894|       |
  895|  7.25k|	DBG(BUFFER, ul_debug("Resetting probing buffers"));
  ------------------
  |  |  358|  7.25k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  7.25k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  7.25k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  7.25k|	do { \
  |  |  |  |  |  |  |  |   76|  7.25k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|  7.25k|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  7.25k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 7.25k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  7.25k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 7.25k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  7.25k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  7.25k|		x; \
  |  |  |  |  |  |   85|  7.25k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  896|       |
  897|   157k|	while (!list_empty(&pr->buffers)) {
  ------------------
  |  Branch (897:9): [True: 150k, False: 7.25k]
  ------------------
  898|   150k|		struct blkid_bufinfo *bf = list_entry(pr->buffers.next,
  ------------------
  |  |  176|   150k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|   150k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|   150k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|   150k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  899|   150k|						struct blkid_bufinfo, bufs);
  900|   150k|		ct++;
  901|   150k|		len += bf->len;
  902|       |
  903|   150k|		remove_buffer(bf);
  904|   150k|	}
  905|       |
  906|  7.25k|	DBG(LOWPROBE, ul_debug(" buffers summary: %"PRIu64" bytes by %"PRIu64" read() calls",
  ------------------
  |  |  358|  7.25k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  7.25k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  7.25k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  7.25k|	do { \
  |  |  |  |  |  |  |  |   76|  7.25k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  7.25k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  7.25k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 7.25k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  7.25k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 7.25k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  7.25k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  7.25k|		x; \
  |  |  |  |  |  |   85|  7.25k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  907|  7.25k|			len, ct));
  908|       |
  909|  7.25k|	INIT_LIST_HEAD(&pr->buffers);
  ------------------
  |  |   38|  7.25k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  7.25k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  7.25k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 7.25k]
  |  |  ------------------
  ------------------
  910|       |
  911|  7.25k|	return 0;
  912|  13.4k|}
blkid_probe_is_tiny:
  963|   119k|{
  964|   119k|	return (pr->flags & BLKID_FL_TINY_DEV);
  ------------------
  |  |  242|   119k|#define BLKID_FL_TINY_DEV	(1 << 2)	/* <= 1.47MiB (floppy or so) */
  ------------------
  965|   119k|}
blkid_probe_is_cdrom:
  971|   166k|{
  972|   166k|	return (pr->flags & BLKID_FL_CDROM_DEV);
  ------------------
  |  |  243|   166k|#define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
  ------------------
  973|   166k|}
blkid_probe_set_device:
 1097|  6.18k|{
 1098|  6.18k|	struct stat sb;
 1099|  6.18k|	uint64_t devsiz = 0;
 1100|  6.18k|	char *dm_uuid = NULL;
 1101|  6.18k|	int is_floppy = 0;
 1102|       |
 1103|  6.18k|	blkid_reset_probe(pr);
 1104|  6.18k|	blkid_probe_reset_buffers(pr);
 1105|       |
 1106|  6.18k|	if ((pr->flags & BLKID_FL_PRIVATE_FD) && pr->fd >= 0)
  ------------------
  |  |  241|  6.18k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
  |  Branch (1106:6): [True: 0, False: 6.18k]
  |  Branch (1106:43): [True: 0, False: 0]
  ------------------
 1107|      0|		ul_vfs_close(pr->vfs, pr->fd);
 1108|       |
 1109|  6.18k|	if (pr->disk_probe) {
  ------------------
  |  Branch (1109:6): [True: 0, False: 6.18k]
  ------------------
 1110|      0|		blkid_free_probe(pr->disk_probe);
 1111|      0|		pr->disk_probe = NULL;
 1112|      0|	}
 1113|       |
 1114|  6.18k|	pr->flags &= ~BLKID_FL_PRIVATE_FD;
  ------------------
  |  |  241|  6.18k|#define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
  ------------------
 1115|  6.18k|	pr->flags &= ~BLKID_FL_TINY_DEV;
  ------------------
  |  |  242|  6.18k|#define BLKID_FL_TINY_DEV	(1 << 2)	/* <= 1.47MiB (floppy or so) */
  ------------------
 1116|  6.18k|	pr->flags &= ~BLKID_FL_CDROM_DEV;
  ------------------
  |  |  243|  6.18k|#define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
  ------------------
 1117|  6.18k|	pr->prob_flags = 0;
 1118|  6.18k|	pr->fd = fd;
 1119|  6.18k|	pr->off = (uint64_t) off;
 1120|  6.18k|	pr->size = 0;
 1121|  6.18k|	pr->io_size = DEFAULT_SECTOR_SIZE;
  ------------------
  |  |   24|  6.18k|#define DEFAULT_SECTOR_SIZE       512
  ------------------
 1122|  6.18k|	pr->devno = 0;
 1123|  6.18k|	pr->disk_devno = 0;
 1124|  6.18k|	pr->mode = 0;
 1125|  6.18k|	pr->blkssz = 0;
 1126|  6.18k|	pr->wipe_off = 0;
 1127|  6.18k|	pr->wipe_size = 0;
 1128|  6.18k|	pr->wipe_chain = NULL;
 1129|  6.18k|	pr->zone_size = 0;
 1130|       |
 1131|  6.18k|	if (fd < 0)
  ------------------
  |  Branch (1131:6): [True: 0, False: 6.18k]
  ------------------
 1132|      0|		return 1;
 1133|       |
 1134|       |
 1135|  6.18k|#if defined(POSIX_FADV_RANDOM) && defined(HAVE_POSIX_FADVISE)
 1136|       |	/* Disable read-ahead */
 1137|  6.18k|	posix_fadvise(fd, 0, 0, POSIX_FADV_RANDOM);
 1138|  6.18k|#endif
 1139|  6.18k|	if (fstat(fd, &sb))
  ------------------
  |  Branch (1139:6): [True: 0, False: 6.18k]
  ------------------
 1140|      0|		goto err;
 1141|       |
 1142|  6.18k|	if (!S_ISBLK(sb.st_mode) && !S_ISCHR(sb.st_mode) && !S_ISREG(sb.st_mode)) {
  ------------------
  |  Branch (1142:6): [True: 6.18k, False: 0]
  |  Branch (1142:30): [True: 6.18k, False: 0]
  |  Branch (1142:54): [True: 0, False: 6.18k]
  ------------------
 1143|      0|		errno = EINVAL;
 1144|      0|		goto err;
 1145|      0|	}
 1146|       |
 1147|  6.18k|	pr->mode = sb.st_mode;
 1148|  6.18k|	if (S_ISBLK(sb.st_mode) || S_ISCHR(sb.st_mode))
  ------------------
  |  Branch (1148:6): [True: 0, False: 6.18k]
  |  Branch (1148:29): [True: 0, False: 6.18k]
  ------------------
 1149|      0|		pr->devno = sb.st_rdev;
 1150|       |
 1151|  6.18k|	if (S_ISBLK(sb.st_mode)) {
  ------------------
  |  Branch (1151:6): [True: 0, False: 6.18k]
  ------------------
 1152|      0|		if (blkdev_get_size(fd, &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|  6.18k|	} else if (S_ISCHR(sb.st_mode)) {
  ------------------
  |  Branch (1156:13): [True: 0, False: 6.18k]
  ------------------
 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|  6.18k|	} else if (S_ISREG(sb.st_mode))
  ------------------
  |  Branch (1166:13): [True: 6.18k, False: 0]
  ------------------
 1167|  6.18k|		devsiz = sb.st_size;	/* regular file */
 1168|       |
 1169|  6.18k|	pr->size = size ? (uint64_t)size : devsiz;
  ------------------
  |  Branch (1169:13): [True: 0, False: 6.18k]
  ------------------
 1170|       |
 1171|  6.18k|	if (off && size == 0)
  ------------------
  |  Branch (1171:6): [True: 0, False: 6.18k]
  |  Branch (1171:13): [True: 0, False: 0]
  ------------------
 1172|       |		/* only offset without size specified */
 1173|      0|		pr->size -= (uint64_t) off;
 1174|       |
 1175|  6.18k|	if (pr->off + pr->size > devsiz) {
  ------------------
  |  Branch (1175:6): [True: 0, False: 6.18k]
  ------------------
 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|  6.18k|	if (pr->size <= 1440 * 1024 && !S_ISCHR(sb.st_mode))
  ------------------
  |  Branch (1181:6): [True: 0, False: 6.18k]
  |  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|  6.18k|#ifdef FDGETFDCSTAT
 1185|  6.18k|	if (S_ISBLK(sb.st_mode)) {
  ------------------
  |  Branch (1185:6): [True: 0, False: 6.18k]
  ------------------
 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|  6.18k|#endif
 1214|  6.18k|	if (S_ISBLK(sb.st_mode) &&
  ------------------
  |  Branch (1214:6): [True: 0, False: 6.18k]
  ------------------
 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|  6.18k|#ifdef CDROM_GET_CAPABILITY
 1222|  6.18k|	else if (S_ISBLK(sb.st_mode) &&
  ------------------
  |  Branch (1222:11): [True: 0, False: 6.18k]
  ------------------
 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|  6.18k|#endif
 1274|  6.18k|	free(dm_uuid);
 1275|       |
 1276|  6.18k|# ifdef BLKGETZONESZ
 1277|  6.18k|	if (S_ISBLK(sb.st_mode) && !is_floppy) {
  ------------------
  |  Branch (1277:6): [True: 0, False: 6.18k]
  |  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|  6.18k|# endif
 1284|       |
 1285|  6.18k|	if (S_ISBLK(sb.st_mode) && !is_floppy && !blkid_probe_is_tiny(pr))
  ------------------
  |  Branch (1285:6): [True: 0, False: 6.18k]
  |  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|  6.18k|	DBG(LOWPROBE, ul_debug("ready for low-probing, offset=%"PRIu64", size=%"PRIu64", zonesize=%"PRIu64", iosize=%"PRIu64,
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1289|  6.18k|				pr->off, pr->size, pr->zone_size, pr->io_size));
 1290|  6.18k|	DBG(LOWPROBE, ul_debug("whole-disk: %s, regfile: %s",
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1291|  6.18k|		blkid_probe_is_wholedisk(pr) ?"YES" : "NO",
 1292|  6.18k|		S_ISREG(pr->mode) ? "YES" : "NO"));
 1293|       |
 1294|  6.18k|	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|  6.18k|}
blkid_probe_get_sb_buffer:
 1328|  16.8k|{
 1329|  16.8k|	uint64_t hint_offset, off;
 1330|       |
 1331|  16.8k|	if (mag->kboff >= 0) {
  ------------------
  |  Branch (1331:6): [True: 16.8k, False: 0]
  ------------------
 1332|  16.8k|		if (!mag->hoff || blkid_probe_get_hint(pr, mag->hoff, &hint_offset) < 0)
  ------------------
  |  Branch (1332:7): [True: 16.8k, False: 0]
  |  Branch (1332:21): [True: 0, False: 0]
  ------------------
 1333|  16.8k|			hint_offset = 0;
 1334|       |
 1335|  16.8k|		off = hint_offset + (mag->kboff << 10);
 1336|  16.8k|	} else {
 1337|      0|		off = pr->size - (-mag->kboff << 10);
 1338|      0|	}
 1339|       |
 1340|  16.8k|	return blkid_probe_get_buffer(pr, off, size);
 1341|  16.8k|}
blkid_probe_get_idmag_off:
 1344|    400|{
 1345|    400|	if (mag->kboff >= 0)
  ------------------
  |  Branch (1345:6): [True: 400, False: 0]
  ------------------
 1346|    400|		return mag->kboff << 10;
 1347|      0|	else
 1348|      0|		return pr->size - (-mag->kboff << 10);
 1349|    400|}
blkid_probe_get_idmag:
 1358|   550k|{
 1359|   550k|	const struct blkid_idmag *mag = NULL;
 1360|   550k|	uint64_t off = 0;
 1361|       |
 1362|   550k|	if (id)
  ------------------
  |  Branch (1362:6): [True: 550k, False: 0]
  ------------------
 1363|   550k|		mag = &id->magics[0];
 1364|   550k|	if (res)
  ------------------
  |  Branch (1364:6): [True: 550k, False: 0]
  ------------------
 1365|   550k|		*res = NULL;
 1366|       |
 1367|       |	/* try to detect by magic string */
 1368|  1.43M|	while(mag && mag->magic) {
  ------------------
  |  Branch (1368:8): [True: 1.43M, False: 0]
  |  Branch (1368:15): [True: 912k, False: 525k]
  ------------------
 1369|   912k|		const unsigned char *buf;
 1370|   912k|		long kboff;
 1371|   912k|		uint64_t hint_offset;
 1372|       |
 1373|   912k|		if (!mag->hoff || blkid_probe_get_hint(pr, mag->hoff, &hint_offset) < 0)
  ------------------
  |  Branch (1373:7): [True: 860k, False: 51.8k]
  |  Branch (1373:21): [True: 51.8k, False: 0]
  ------------------
 1374|   912k|			hint_offset = 0;
 1375|       |
 1376|       |		/* If the magic is for zoned device, skip non-zoned device */
 1377|   912k|		if (mag->is_zoned && !pr->zone_size) {
  ------------------
  |  Branch (1377:7): [True: 12.2k, False: 900k]
  |  Branch (1377:24): [True: 12.2k, False: 0]
  ------------------
 1378|  12.2k|			mag++;
 1379|  12.2k|			continue;
 1380|  12.2k|		}
 1381|       |
 1382|   900k|		if (!mag->is_zoned)
  ------------------
  |  Branch (1382:7): [True: 900k, False: 0]
  ------------------
 1383|   900k|			kboff = mag->kboff;
 1384|      0|		else
 1385|      0|			kboff = ((mag->zonenum * pr->zone_size) >> 10) + mag->kboff_inzone;
 1386|       |
 1387|   900k|		if (kboff >= 0)
  ------------------
  |  Branch (1387:7): [True: 875k, False: 24.2k]
  ------------------
 1388|   875k|			off = hint_offset + (kboff << 10) + mag->sboff;
 1389|  24.2k|		else
 1390|  24.2k|			off = pr->size - (-kboff << 10) + mag->sboff;
 1391|   900k|		buf = blkid_probe_get_buffer(pr, off, mag->len);
 1392|       |
 1393|   900k|		if (!buf && errno)
  ------------------
  |  Branch (1393:7): [True: 0, False: 900k]
  |  Branch (1393:15): [True: 0, False: 0]
  ------------------
 1394|      0|			return -errno;
 1395|       |
 1396|   900k|		if (buf && !memcmp(mag->magic, buf, mag->len)) {
  ------------------
  |  Branch (1396:7): [True: 900k, False: 0]
  |  Branch (1396:14): [True: 25.2k, False: 874k]
  ------------------
 1397|  25.2k|			DBG(LOWPROBE, ul_debug("\tmagic sboff=%u, kboff=%ld",
  ------------------
  |  |  358|  25.2k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  25.2k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  25.2k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  25.2k|	do { \
  |  |  |  |  |  |  |  |   76|  25.2k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  25.2k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  25.2k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 25.2k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  25.2k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 25.2k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  25.2k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  25.2k|		x; \
  |  |  |  |  |  |   85|  25.2k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1398|  25.2k|				mag->sboff, kboff));
 1399|  25.2k|			if (offset)
  ------------------
  |  Branch (1399:8): [True: 24.8k, False: 421]
  ------------------
 1400|  24.8k|				*offset = off;
 1401|  25.2k|			if (res)
  ------------------
  |  Branch (1401:8): [True: 25.2k, False: 0]
  ------------------
 1402|  25.2k|				*res = mag;
 1403|  25.2k|			return BLKID_PROBE_OK;
  ------------------
  |  |  465|  25.2k|#define BLKID_PROBE_OK	0
  ------------------
 1404|  25.2k|		}
 1405|   874k|		mag++;
 1406|   874k|	}
 1407|       |
 1408|   525k|	if (id && id->magics[0].magic)
  ------------------
  |  Branch (1408:6): [True: 525k, False: 0]
  |  Branch (1408:12): [True: 411k, False: 114k]
  ------------------
 1409|       |		/* magic string(s) defined, but not found */
 1410|   411k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|   411k|#define BLKID_PROBE_NONE	1
  ------------------
 1411|       |
 1412|   114k|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|   114k|#define BLKID_PROBE_OK	0
  ------------------
 1413|   525k|}
blkid_do_safeprobe:
 1840|  6.18k|{
 1841|  6.18k|	int i, count = 0, rc = 0;
 1842|       |
 1843|  6.18k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  6.18k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (1843:6): [True: 0, False: 6.18k]
  ------------------
 1844|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
 1845|       |
 1846|  6.18k|	blkid_probe_start(pr);
 1847|  6.18k|	pr->prob_flags |= BLKID_PROBE_FL_SAFEPROBE;
  ------------------
  |  |  251|  6.18k|#define BLKID_PROBE_FL_SAFEPROBE (1 << 2)	/* safeprobe mode */
  ------------------
 1848|       |
 1849|  23.2k|	for (i = 0; i < BLKID_NCHAINS; i++) {
  ------------------
  |  Branch (1849:14): [True: 17.5k, False: 5.67k]
  ------------------
 1850|  17.5k|		struct blkid_chain *chn;
 1851|       |
 1852|  17.5k|		chn = pr->cur_chain = &pr->chains[i];
 1853|  17.5k|		chn->binary = FALSE;		/* for sure... */
  ------------------
  |  |  202|  17.5k|# define FALSE 0
  ------------------
 1854|       |
 1855|  17.5k|		DBG(LOWPROBE, ul_debug("chain safeprobe %s %s",
  ------------------
  |  |  358|  17.5k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  17.5k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  17.5k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  17.5k|	do { \
  |  |  |  |  |  |  |  |   76|  17.5k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  17.5k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  17.5k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 17.5k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (77:4): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  17.5k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 17.5k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  17.5k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  17.5k|		x; \
  |  |  |  |  |  |   85|  17.5k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1856|  17.5k|				chn->driver->name,
 1857|  17.5k|				chn->enabled? "ENABLED" : "DISABLED"));
 1858|       |
 1859|  17.5k|		if (!chn->enabled)
  ------------------
  |  Branch (1859:7): [True: 5.67k, False: 11.8k]
  ------------------
 1860|  5.67k|			continue;
 1861|       |
 1862|  11.8k|		blkid_probe_chain_reset_position(chn);
 1863|       |
 1864|  11.8k|		rc = chn->driver->safeprobe(pr, chn);
 1865|       |
 1866|  11.8k|		blkid_probe_chain_reset_position(chn);
 1867|       |
 1868|       |		/* rc: -2 ambivalent, -1 = error, 0 = success, 1 = no result */
 1869|  11.8k|		if (rc < 0)
  ------------------
  |  Branch (1869:7): [True: 504, False: 11.3k]
  ------------------
 1870|    504|			goto done;	/* error */
 1871|  11.3k|		if (rc == 0)
  ------------------
  |  Branch (1871:7): [True: 1.53k, False: 9.82k]
  ------------------
 1872|  1.53k|			count++;	/* success */
 1873|  11.3k|	}
 1874|       |
 1875|  6.18k|done:
 1876|  6.18k|	blkid_probe_end(pr);
 1877|  6.18k|	if (rc < 0)
  ------------------
  |  Branch (1877:6): [True: 504, False: 5.67k]
  ------------------
 1878|    504|		return BLKID_PROBE_ERROR;
  ------------------
  |  |  477|    504|#define BLKID_PROBE_ERROR	-1
  ------------------
 1879|       |
 1880|  5.67k|	return count == 0 ? BLKID_PROBE_NONE : BLKID_PROBE_OK;
  ------------------
  |  |  471|  4.31k|#define BLKID_PROBE_NONE	1
  ------------------
              	return count == 0 ? BLKID_PROBE_NONE : BLKID_PROBE_OK;
  ------------------
  |  |  465|  1.36k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (1880:9): [True: 4.31k, False: 1.36k]
  ------------------
 1881|  6.18k|}
blkid_probe_get_sector:
 1940|  19.9k|{
 1941|  19.9k|	return blkid_probe_get_buffer(pr, ((uint64_t) sector) << 9, 0x200);
 1942|  19.9k|}
blkid_probe_assign_value:
 1945|  4.73k|{
 1946|  4.73k|	struct blkid_prval *v;
 1947|       |
 1948|  4.73k|	v = calloc(1, sizeof(struct blkid_prval));
 1949|  4.73k|	if (!v)
  ------------------
  |  Branch (1949:6): [True: 0, False: 4.73k]
  ------------------
 1950|      0|		return NULL;
 1951|       |
 1952|  4.73k|	INIT_LIST_HEAD(&v->prvals);
  ------------------
  |  |   38|  4.73k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  4.73k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  4.73k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 4.73k]
  |  |  ------------------
  ------------------
 1953|  4.73k|	v->name = name;
 1954|  4.73k|	v->chain = pr->cur_chain;
 1955|  4.73k|	list_add_tail(&v->prvals, &pr->values);
 1956|       |
 1957|  4.73k|	DBG(LOWPROBE, ul_debug("assigning %s [%s]", name, v->chain->driver->name));
  ------------------
  |  |  358|  4.73k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  4.73k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  4.73k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  4.73k|	do { \
  |  |  |  |  |  |  |  |   76|  4.73k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  4.73k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  4.73k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 4.73k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  4.73k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 4.73k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  4.73k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  4.73k|		x; \
  |  |  |  |  |  |   85|  4.73k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1958|  4.73k|	return v;
 1959|  4.73k|}
blkid_probe_value_set_data:
 1968|  3.39k|{
 1969|  3.39k|	v->data = calloc(1, len + 1);	/* always terminate by \0 */
 1970|       |
 1971|  3.39k|	if (!v->data)
  ------------------
  |  Branch (1971:6): [True: 0, False: 3.39k]
  ------------------
 1972|      0|		return -ENOMEM;
 1973|  3.39k|	memcpy(v->data, data, len);
 1974|  3.39k|	v->len = len;
 1975|  3.39k|	return 0;
 1976|  3.39k|}
blkid_probe_set_value:
 1980|  3.39k|{
 1981|  3.39k|	struct blkid_prval *v;
 1982|       |
 1983|  3.39k|	v = blkid_probe_assign_value(pr, name);
 1984|  3.39k|	if (!v)
  ------------------
  |  Branch (1984:6): [True: 0, False: 3.39k]
  ------------------
 1985|      0|		return -1;
 1986|       |
 1987|  3.39k|	return blkid_probe_value_set_data(v, data, len);
 1988|  3.39k|}
blkid_probe_vsprintf_value:
 1992|  1.28k|{
 1993|  1.28k|	struct blkid_prval *v;
 1994|  1.28k|	ssize_t len;
 1995|       |
 1996|  1.28k|	v = blkid_probe_assign_value(pr, name);
 1997|  1.28k|	if (!v)
  ------------------
  |  Branch (1997:6): [True: 0, False: 1.28k]
  ------------------
 1998|      0|		return -ENOMEM;
 1999|       |
 2000|  1.28k|	len = vasprintf((char **) &v->data, fmt, ap);
 2001|       |
 2002|  1.28k|	if (len <= 0) {
  ------------------
  |  Branch (2002:6): [True: 0, False: 1.28k]
  ------------------
 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.28k|	v->len = len + 1;
 2007|  1.28k|	return 0;
 2008|  1.28k|}
blkid_probe_sprintf_value:
 2012|  1.28k|{
 2013|  1.28k|	int rc;
 2014|  1.28k|	va_list ap;
 2015|       |
 2016|  1.28k|	va_start(ap, fmt);
 2017|  1.28k|	rc = blkid_probe_vsprintf_value(pr, name, fmt, ap);
 2018|  1.28k|	va_end(ap);
 2019|       |
 2020|  1.28k|	return rc;
 2021|  1.28k|}
blkid_probe_set_magic:
 2025|  2.91k|{
 2026|  2.91k|	int rc = 0;
 2027|  2.91k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
 2028|       |
 2029|  2.91k|	if (!chn || !len || chn->binary)
  ------------------
  |  Branch (2029:6): [True: 0, False: 2.91k]
  |  Branch (2029:14): [True: 0, False: 2.91k]
  |  Branch (2029:22): [True: 0, False: 2.91k]
  ------------------
 2030|      0|		return 0;
 2031|       |
 2032|  2.91k|	switch (chn->driver->id) {
 2033|  2.39k|	case BLKID_CHAIN_SUBLKS:
  ------------------
  |  Branch (2033:2): [True: 2.39k, False: 516]
  ------------------
 2034|  2.39k|		if (!(chn->flags & BLKID_SUBLKS_MAGIC))
  ------------------
  |  |  319|  2.39k|#define BLKID_SUBLKS_MAGIC	(1 << 9) /* define SBMAGIC and SBMAGIC_OFFSET */
  ------------------
  |  Branch (2034:7): [True: 2.39k, False: 0]
  ------------------
 2035|  2.39k|			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|    516|	case BLKID_CHAIN_PARTS:
  ------------------
  |  Branch (2041:2): [True: 516, False: 2.39k]
  ------------------
 2042|    516|		if (!(chn->flags & BLKID_PARTS_MAGIC))
  ------------------
  |  |  395|    516|#define BLKID_PARTS_MAGIC		(1 << 3)
  ------------------
  |  Branch (2042:7): [True: 516, False: 0]
  ------------------
 2043|    516|			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.91k]
  ------------------
 2050|      0|		break;
 2051|  2.91k|	}
 2052|       |
 2053|      0|	return rc;
 2054|  2.91k|}
blkid_probe_verify_csum_buf:
 2078|  4.12k|{
 2079|  4.12k|	if (memcmp(csum, expected, n) != 0) {
  ------------------
  |  Branch (2079:6): [True: 4.07k, False: 42]
  ------------------
 2080|  4.07k|		struct blkid_chain *chn = blkid_probe_get_chain(pr);
 2081|       |
 2082|  4.07k|		ON_DBG(LOWPROBE, blkid_probe_log_csum_mismatch(pr, n, csum, expected));
  ------------------
  |  |  360|  4.07k|#define ON_DBG(m, x)		__UL_DBG_CALL(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   75|  4.07k|	do { \
  |  |  |  |   76|  4.07k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |  350|  4.07k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  ------------------
  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  4.07k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:7): [True: 0, False: 4.07k]
  |  |  |  |  ------------------
  |  |  |  |   77|      0|			x; \
  |  |  |  |   78|      0|		} \
  |  |  |  |   79|  4.07k|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (79:11): [Folded, False: 4.07k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2083|       |
 2084|       |		/*
 2085|       |		 * Accept bad checksum if BLKID_SUBLKS_BADCSUM flags is set
 2086|       |		 */
 2087|  4.07k|		if (chn && chn->driver->id == BLKID_CHAIN_SUBLKS
  ------------------
  |  Branch (2087:7): [True: 4.07k, False: 0]
  |  Branch (2087:14): [True: 3.60k, False: 474]
  ------------------
 2088|  3.60k|		    && (chn->flags & BLKID_SUBLKS_BADCSUM)) {
  ------------------
  |  |  320|  3.60k|#define BLKID_SUBLKS_BADCSUM	(1 << 10) /* allow a bad checksum */
  ------------------
  |  Branch (2088:10): [True: 0, False: 3.60k]
  ------------------
 2089|      0|			blkid_probe_set_value(pr, "SBBADCSUM", (unsigned char *) "1", 2);
 2090|      0|			goto accept;
 2091|      0|		}
 2092|  4.07k|		return 0;	/* bad checksum */
 2093|  4.07k|	}
 2094|       |
 2095|     42|accept:
 2096|     42|	return 1;
 2097|  4.12k|}
blkid_probe_verify_csum:
 2100|  4.12k|{
 2101|  4.12k|	return blkid_probe_verify_csum_buf(pr, sizeof(csum), &csum, &expected);
 2102|  4.12k|}
blkid_probe_get_size:
 2213|  11.7k|{
 2214|  11.7k|	return (blkid_loff_t) pr->size;
 2215|  11.7k|}
blkid_probe_get_sectorsize:
 2248|  24.7k|{
 2249|  24.7k|	if (pr->blkssz)
  ------------------
  |  Branch (2249:6): [True: 18.6k, False: 6.17k]
  ------------------
 2250|  18.6k|		return pr->blkssz;
 2251|       |
 2252|  6.17k|	if (S_ISBLK(pr->mode) &&
  ------------------
  |  Branch (2252:6): [True: 0, False: 6.17k]
  ------------------
 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|  6.17k|	pr->blkssz = DEFAULT_SECTOR_SIZE;
  ------------------
  |  |   24|  6.17k|#define DEFAULT_SECTOR_SIZE       512
  ------------------
 2257|  6.17k|	return pr->blkssz;
 2258|  6.17k|}
blkid_probe_lookup_value:
 2389|  3.59k|{
 2390|  3.59k|	struct blkid_prval *v = __blkid_probe_lookup_value(pr, name);
 2391|       |
 2392|  3.59k|	if (!v)
  ------------------
  |  Branch (2392:6): [True: 853, False: 2.73k]
  ------------------
 2393|    853|		return -1;
 2394|  2.73k|	if (data)
  ------------------
  |  Branch (2394:6): [True: 1.36k, False: 1.36k]
  ------------------
 2395|  1.36k|		*data = (char *) v->data;
 2396|  2.73k|	if (len)
  ------------------
  |  Branch (2396:6): [True: 0, False: 2.73k]
  ------------------
 2397|      0|		*len = v->len;
 2398|  2.73k|	return 0;
 2399|  3.59k|}
blkid_probe_has_value:
 2409|  2.22k|{
 2410|  2.22k|	if (blkid_probe_lookup_value(pr, name, NULL, NULL) == 0)
  ------------------
  |  Branch (2410:6): [True: 1.36k, False: 853]
  ------------------
 2411|  1.36k|		return 1;
 2412|    853|	return 0;
 2413|  2.22k|}
__blkid_probe_lookup_value:
 2432|  3.68k|{
 2433|  3.68k|	struct list_head *p;
 2434|       |
 2435|  3.68k|	if (list_empty(&pr->values))
  ------------------
  |  Branch (2435:6): [True: 60, False: 3.62k]
  ------------------
 2436|     60|		return NULL;
 2437|       |
 2438|  6.29k|	list_for_each(p, &pr->values) {
  ------------------
  |  |  190|  7.14k|	for (pos = (head)->next; pos != (head); pos = pos->next)
  |  |  ------------------
  |  |  |  Branch (190:27): [True: 6.29k, False: 853]
  |  |  ------------------
  ------------------
 2439|  6.29k|		struct blkid_prval *v = list_entry(p, struct blkid_prval,
  ------------------
  |  |  176|  6.29k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  6.29k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  6.29k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  6.29k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
 2440|  6.29k|						prvals);
 2441|       |
 2442|  6.29k|		if (v->name && strcmp(name, v->name) == 0) {
  ------------------
  |  Branch (2442:7): [True: 6.29k, False: 0]
  |  Branch (2442:18): [True: 2.77k, False: 3.52k]
  ------------------
 2443|  2.77k|			DBG(LOWPROBE, ul_debug("returning %s value", v->name));
  ------------------
  |  |  358|  2.77k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  2.77k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  2.77k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  2.77k|	do { \
  |  |  |  |  |  |  |  |   76|  2.77k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  2.77k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  2.77k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 2.77k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  2.77k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 2.77k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.77k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  2.77k|		x; \
  |  |  |  |  |  |   85|  2.77k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2444|  2.77k|			return v;
 2445|  2.77k|		}
 2446|  6.29k|	}
 2447|    853|	return NULL;
 2448|  3.62k|}
blkid_unparse_uuid:
 2454|     59|{
 2455|     59|	snprintf(str, len,
 2456|     59|		"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
 2457|     59|		uuid[0], uuid[1], uuid[2], uuid[3],
 2458|     59|		uuid[4], uuid[5],
 2459|     59|		uuid[6], uuid[7],
 2460|     59|		uuid[8], uuid[9],
 2461|     59|		uuid[10], uuid[11], uuid[12], uuid[13], uuid[14],uuid[15]);
 2462|     59|}
blkid_uuid_is_empty:
 2466|  1.39k|{
 2467|  1.39k|	size_t i;
 2468|       |
 2469|  5.60k|	for (i = 0; i < len; i++)
  ------------------
  |  Branch (2469:14): [True: 5.40k, False: 203]
  ------------------
 2470|  5.40k|		if (buf[i])
  ------------------
  |  Branch (2470:7): [True: 1.19k, False: 4.20k]
  ------------------
 2471|  1.19k|			return 0;
 2472|    203|	return 1;
 2473|  1.39k|}
blkid_probe_set_wiper:
 2522|  18.6k|{
 2523|  18.6k|	struct blkid_chain *chn;
 2524|       |
 2525|  18.6k|	if (!size) {
  ------------------
  |  Branch (2525:6): [True: 18.5k, False: 88]
  ------------------
 2526|  18.5k|		DBG(LOWPROBE, ul_debug("zeroize wiper"));
  ------------------
  |  |  358|  18.5k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  18.5k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  18.5k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  18.5k|	do { \
  |  |  |  |  |  |  |  |   76|  18.5k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  18.5k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  18.5k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 18.5k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  18.5k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 18.5k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  18.5k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  18.5k|		x; \
  |  |  |  |  |  |   85|  18.5k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2527|  18.5k|		pr->wipe_size = pr->wipe_off = 0;
 2528|  18.5k|		pr->wipe_chain = NULL;
 2529|  18.5k|		return;
 2530|  18.5k|	}
 2531|       |
 2532|     88|	chn = pr->cur_chain;
 2533|       |
 2534|     88|	if (!chn || !chn->driver ||
  ------------------
  |  Branch (2534:6): [True: 0, False: 88]
  |  Branch (2534:14): [True: 0, False: 88]
  ------------------
 2535|     88|	    chn->idx < 0 || (size_t) chn->idx >= chn->driver->nidinfos)
  ------------------
  |  Branch (2535:6): [True: 0, False: 88]
  |  Branch (2535:22): [True: 0, False: 88]
  ------------------
 2536|      0|		return;
 2537|       |
 2538|     88|	pr->wipe_size = size;
 2539|     88|	pr->wipe_off = off;
 2540|     88|	pr->wipe_chain = chn;
 2541|       |
 2542|     88|	DBG(LOWPROBE,
  ------------------
  |  |  358|     88|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     88|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     88|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     88|	do { \
  |  |  |  |  |  |  |  |   76|     88|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     88|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     88|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 88]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     88|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 88]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     88|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     88|		x; \
  |  |  |  |  |  |   85|     88|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2543|     88|		ul_debug("wiper set to %s::%s off=%"PRIu64" size=%"PRIu64"",
 2544|     88|			chn->driver->name,
 2545|     88|			chn->driver->idinfos[chn->idx]->name,
 2546|     88|			pr->wipe_off, pr->wipe_size));
 2547|     88|}
blkid_probe_is_wiped:
 2553|     95|{
 2554|     95|	if (!size)
  ------------------
  |  Branch (2554:6): [True: 0, False: 95]
  ------------------
 2555|      0|		return 0;
 2556|       |
 2557|     95|	if (pr->wipe_off <= off && off + size <= pr->wipe_off + pr->wipe_size) {
  ------------------
  |  Branch (2557:6): [True: 95, False: 0]
  |  Branch (2557:29): [True: 5, False: 90]
  ------------------
 2558|      5|		*chn = pr->wipe_chain;
 2559|      5|		return 1;
 2560|      5|	}
 2561|     90|	return 0;
 2562|     95|}
blkid_probe_use_wiper:
 2569|     95|{
 2570|     95|	struct blkid_chain *chn = NULL;
 2571|       |
 2572|     95|	if (blkid_probe_is_wiped(pr, &chn, off, size) && chn) {
  ------------------
  |  Branch (2572:6): [True: 5, False: 90]
  |  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|     95|}
blkid_probe_get_hint:
 2666|  53.3k|{
 2667|  53.3k|	struct blkid_hint *h = get_hint(pr, name);
 2668|       |
 2669|  53.3k|	if (!h)
  ------------------
  |  Branch (2669:6): [True: 53.3k, False: 0]
  ------------------
 2670|  53.3k|		return -EINVAL;
 2671|      0|	if (value)
  ------------------
  |  Branch (2671:6): [True: 0, False: 0]
  ------------------
 2672|      0|		*value = h->value;
 2673|      0|	return 0;
 2674|  53.3k|}
blkid_probe_reset_hints:
 2683|  6.18k|{
 2684|  6.18k|	if (list_empty(&pr->hints))
  ------------------
  |  Branch (2684:6): [True: 6.18k, False: 0]
  ------------------
 2685|  6.18k|		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|  48.4k|{
  357|  48.4k|	chn->idx = -1;
  358|  48.4k|}
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.22M|{
  669|  1.22M|	uint64_t real_off = pr->off + off;
  670|  1.22M|	struct list_head *p;
  671|       |
  672|  23.6M|	list_for_each(p, &pr->buffers) {
  ------------------
  |  |  190|  23.9M|	for (pos = (head)->next; pos != (head); pos = pos->next)
  |  |  ------------------
  |  |  |  Branch (190:27): [True: 23.6M, False: 226k]
  |  |  ------------------
  ------------------
  673|  23.6M|		struct blkid_bufinfo *x =
  674|  23.6M|				list_entry(p, struct blkid_bufinfo, bufs);
  ------------------
  |  |  176|  23.6M|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  23.6M|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  23.6M|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  23.6M|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  675|       |
  676|  23.6M|		if (real_off >= x->off && real_off + len <= x->off + x->len) {
  ------------------
  |  Branch (676:7): [True: 3.51M, False: 20.1M]
  |  Branch (676:29): [True: 1.00M, False: 2.51M]
  ------------------
  677|  1.00M|			DBG(BUFFER, ul_debug("\treuse: off=%"PRIu64" len=%"PRIu64" (for off=%"PRIu64" len=%"PRIu64")",
  ------------------
  |  |  358|  1.00M|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.00M|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.00M|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.00M|	do { \
  |  |  |  |  |  |  |  |   76|  1.00M|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  355|  1.00M|#define BLKID_DEBUG_BUFFER	(1 << 13)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.00M|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.00M]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.00M|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.00M]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.00M|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.00M|		x; \
  |  |  |  |  |  |   85|  1.00M|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  678|  1.00M|						x->off, x->len, real_off, len));
  679|  1.00M|			return x;
  680|  1.00M|		}
  681|  23.6M|	}
  682|   226k|	return NULL;
  683|  1.22M|}
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.73M|	list_for_each_safe(p, next, &pr->buffers) {
  ------------------
  |  |  208|  3.96M|	for (pos = (head)->next, pnext = pos->next; pos != (head); \
  |  |  ------------------
  |  |  |  Branch (208:46): [True: 3.73M, False: 226k]
  |  |  ------------------
  |  |  209|  3.73M|	     pos = pnext, pnext = pos->next)
  ------------------
  693|  3.73M|		struct blkid_bufinfo *x =
  694|  3.73M|				list_entry(p, struct blkid_bufinfo, bufs);
  ------------------
  |  |  176|  3.73M|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  3.73M|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  3.73M|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  3.73M|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  695|       |
  696|  3.73M|		if (bf->off <= x->off && bf->off + bf->len >= x->off + x->len) {
  ------------------
  |  Branch (696:7): [True: 2.75M, False: 981k]
  |  Branch (696:28): [True: 76.7k, False: 2.67M]
  ------------------
  697|  76.7k|			list_del(&x->bufs);
  698|  76.7k|			list_add(&x->bufs, &pr->prunable_buffers);
  699|  76.7k|		}
  700|  3.73M|	}
  701|   226k|}
probe.c:blkid_probe_reset_values:
  944|  12.3k|{
  945|  12.3k|	if (list_empty(&pr->values))
  ------------------
  |  Branch (945:6): [True: 10.9k, False: 1.37k]
  ------------------
  946|  10.9k|		return;
  947|       |
  948|  1.37k|	DBG(LOWPROBE, ul_debug("resetting results"));
  ------------------
  |  |  358|  1.37k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.37k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.37k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.37k|	do { \
  |  |  |  |  |  |  |  |   76|  1.37k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.37k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.37k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.37k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.37k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.37k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.37k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.37k|		x; \
  |  |  |  |  |  |   85|  1.37k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  949|       |
  950|  3.79k|	while (!list_empty(&pr->values)) {
  ------------------
  |  Branch (950:9): [True: 2.42k, False: 1.37k]
  ------------------
  951|  2.42k|		struct blkid_prval *v = list_entry(pr->values.next,
  ------------------
  |  |  176|  2.42k|#define list_entry(ptr, type, member)	container_of(ptr, type, member)
  |  |  ------------------
  |  |  |  |  270|  2.42k|#define container_of(ptr, type, member) __extension__ ({	\
  |  |  |  |  271|  2.42k|	const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
  |  |  |  |  272|  2.42k|	(type *)( (char *)__mptr - offsetof(type,member) );})
  |  |  ------------------
  ------------------
  952|  2.42k|						struct blkid_prval, prvals);
  953|  2.42k|		blkid_probe_free_value(v);
  954|  2.42k|	}
  955|       |
  956|  1.37k|	INIT_LIST_HEAD(&pr->values);
  ------------------
  |  |   38|  1.37k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  1.37k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  1.37k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 1.37k]
  |  |  ------------------
  ------------------
  957|  1.37k|}
probe.c:blkid_probe_start:
 1416|  6.18k|{
 1417|  6.18k|	DBG(LOWPROBE, ul_debug("start probe"));
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1418|       |	pr->cur_chain = NULL;
 1419|  6.18k|	pr->prob_flags = 0;
 1420|  6.18k|	blkid_probe_set_wiper(pr, 0, 0);
 1421|  6.18k|}
probe.c:blkid_probe_end:
 1424|  6.18k|{
 1425|  6.18k|	DBG(LOWPROBE, ul_debug("end probe"));
  ------------------
  |  |  358|  6.18k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.18k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.18k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.18k|	do { \
  |  |  |  |  |  |  |  |   76|  6.18k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.18k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.18k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.18k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.18k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.18k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.18k|		x; \
  |  |  |  |  |  |   85|  6.18k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1426|       |	pr->cur_chain = NULL;
 1427|  6.18k|	pr->prob_flags = 0;
 1428|  6.18k|	blkid_probe_set_wiper(pr, 0, 0);
 1429|  6.18k|}
probe.c:get_hint:
 2581|  53.3k|{
 2582|  53.3k|	struct list_head *p;
 2583|       |
 2584|  53.3k|	if (list_empty(&pr->hints))
  ------------------
  |  Branch (2584:6): [True: 53.3k, False: 0]
  ------------------
 2585|  53.3k|		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|  6.17k|{
   79|  6.17k|	uint64_t off;
   80|  6.17k|	struct adaptec_metadata *ad;
   81|       |
   82|  6.17k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (82:6): [True: 0, False: 6.17k]
  |  Branch (82:28): [True: 0, False: 0]
  ------------------
   83|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
   84|       |
   85|  6.17k|	off = ((pr->size / 0x200)-1) * 0x200;
   86|  6.17k|	ad = (struct adaptec_metadata *)
   87|  6.17k|			blkid_probe_get_buffer(pr,
   88|  6.17k|					off,
   89|  6.17k|					sizeof(struct adaptec_metadata));
   90|  6.17k|	if (!ad)
  ------------------
  |  Branch (90:6): [True: 0, False: 6.17k]
  ------------------
   91|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (91:10): [True: 0, False: 0]
  ------------------
   92|       |
   93|  6.17k|	if (ad->smagic != be32_to_cpu(AD_SIGNATURE))
  ------------------
  |  |  141|  6.17k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (93:6): [True: 6.17k, False: 0]
  ------------------
   94|  6.17k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  6.17k|#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|    776|{
   73|    776|	const struct apfs_super_block *sb;
   74|       |
   75|    776|	sb = blkid_probe_get_sb(pr, mag, struct apfs_super_block);
  ------------------
  |  |  451|    776|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   76|    776|	if (!sb)
  ------------------
  |  Branch (76:6): [True: 0, False: 776]
  ------------------
   77|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (77:10): [True: 0, False: 0]
  ------------------
   78|       |
   79|    776|	if (!apfs_verify_checksum(pr, sb))
  ------------------
  |  Branch (79:6): [True: 762, False: 14]
  ------------------
   80|    762|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    762|#define BLKID_PROBE_NONE	1
  ------------------
   81|       |
   82|     14|	if (le16_to_cpu(sb->type) != APFS_CONTAINER_SUPERBLOCK_TYPE)
  ------------------
  |  |  136|     14|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(sb->type) != APFS_CONTAINER_SUPERBLOCK_TYPE)
  ------------------
  |  |   10|     14|#define APFS_CONTAINER_SUPERBLOCK_TYPE 1
  ------------------
  |  Branch (82:6): [True: 11, False: 3]
  ------------------
   83|     11|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     11|#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|    776|{
   62|    776|	const size_t csummed_start_offset = offsetof(__typeof__(*sb), oid);
   63|    776|	uint64_t csum;
   64|       |
   65|    776|	csum = apfs_fletcher64(((const uint8_t *)sb) + csummed_start_offset,
   66|    776|			       sizeof(*sb) - csummed_start_offset);
   67|       |
   68|       |	return blkid_probe_verify_csum(pr, csum, le64_to_cpu(sb->checksum));
  ------------------
  |  |  138|    776|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
   69|    776|}
apfs.c:apfs_fletcher64:
   43|    776|{
   44|    776|	uint64_t lo32 = 0, hi32 = 0, csum_hi;
   45|    776|	uint32_t csum_low;
   46|    776|	size_t i;
   47|       |
   48|   793k|	for (i = 0; i < size / 4; i++) {
  ------------------
  |  Branch (48:14): [True: 793k, False: 776]
  ------------------
   49|   793k|		lo32 += le32_to_cpu(((uint32_t *)buf)[i]);
  ------------------
  |  |  137|   793k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   50|   793k|		hi32 += lo32;
   51|   793k|	}
   52|       |
   53|    776|	csum_low = ~((lo32 + hi32) % UINT32_MAX);
   54|    776|	csum_hi = ~((lo32 + csum_low) % UINT32_MAX);
   55|       |
   56|    776|	return csum_hi << 32 | csum_low;
   57|    776|}

bcache.c:probe_bcache:
  227|    216|{
  228|    216|	const struct bcache_super_block *bcs;
  229|       |
  230|    216|	bcs = blkid_probe_get_sb(pr, mag, struct bcache_super_block);
  ------------------
  |  |  451|    216|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  231|    216|	if (!bcs)
  ------------------
  |  Branch (231:6): [True: 0, False: 216]
  ------------------
  232|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (232:10): [True: 0, False: 0]
  ------------------
  233|       |
  234|    216|	if (!bcache_verify_checksum(pr, mag, bcs))
  ------------------
  |  Branch (234:6): [True: 212, False: 4]
  ------------------
  235|    212|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    212|#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|    216|{
  208|    216|	const unsigned char *csummed;
  209|    216|	size_t csummed_size;
  210|    216|	uint64_t csum;
  211|       |
  212|    216|	if (le16_to_cpu(bcs->keys) > ARRAY_SIZE(bcs->d))
  ------------------
  |  |  136|    216|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(bcs->keys) > ARRAY_SIZE(bcs->d))
  ------------------
  |  |  182|    216|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (212:6): [True: 156, False: 60]
  ------------------
  213|    156|		return 0;
  214|       |
  215|       |	/* up to the end of bcs->d[] */
  216|     60|	csummed_size = offsetof(__typeof__(*bcs), d) +
  217|     60|		sizeof(bcs->d[0]) * le16_to_cpu(bcs->keys);
  ------------------
  |  |  136|     60|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  218|     60|	csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
  219|     60|	if (!csummed)
  ------------------
  |  Branch (219:6): [True: 0, False: 60]
  ------------------
  220|      0|		return 0;
  221|     60|	csum = ul_crc64_we(csummed + BCACHE_SB_CSUMMED_START,
  ------------------
  |  |  184|     60|#define BCACHE_SB_CSUMMED_START 8U
  ------------------
  222|     60|			   csummed_size - BCACHE_SB_CSUMMED_START);
  ------------------
  |  |  184|     60|#define BCACHE_SB_CSUMMED_START 8U
  ------------------
  223|       |	return blkid_probe_verify_csum(pr, csum, le64_to_cpu(bcs->csum));
  ------------------
  |  |  138|     60|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  224|     60|}
bcache.c:probe_bcachefs:
  450|    400|{
  451|    400|	const struct bcachefs_super_block *bcs;
  452|    400|	const unsigned char *sb, *sb_end;
  453|    400|	uint64_t sb_size, blocksize, offset_sectors;
  454|    400|	uint16_t version;
  455|       |
  456|    400|	bcs = blkid_probe_get_sb(pr, mag, struct bcachefs_super_block);
  ------------------
  |  |  451|    400|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  457|    400|	if (!bcs)
  ------------------
  |  Branch (457:6): [True: 0, False: 400]
  ------------------
  458|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (458:10): [True: 0, False: 0]
  ------------------
  459|       |
  460|    400|	offset_sectors = blkid_probe_get_idmag_off(pr, mag) / BCACHEFS_SECTOR_SIZE;
  ------------------
  |  |  186|    400|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  461|    400|	if (le64_to_cpu(bcs->offset) != offset_sectors)
  ------------------
  |  |  138|    400|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (461:6): [True: 235, False: 165]
  ------------------
  462|    235|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    235|#define BLKID_PROBE_NONE	1
  ------------------
  463|       |
  464|    165|	if (bcs->nr_devices == 0 || bcs->dev_idx >= bcs->nr_devices)
  ------------------
  |  Branch (464:6): [True: 4, False: 161]
  |  Branch (464:30): [True: 10, False: 151]
  ------------------
  465|     14|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     14|#define BLKID_PROBE_NONE	1
  ------------------
  466|       |
  467|    151|	sb_size = BCACHEFS_SB_FIELDS_OFF + BYTES(bcs);
  ------------------
  |  |  190|    151|#define BCACHEFS_SB_FIELDS_OFF offsetof(struct bcachefs_super_block, _start)
  ------------------
              	sb_size = BCACHEFS_SB_FIELDS_OFF + BYTES(bcs);
  ------------------
  |  |  203|    151|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|    151|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  468|       |
  469|    151|	if (bcs->layout.sb_max_size_bits > BCACHEFS_SB_MAX_SIZE_SHIFT)
  ------------------
  |  |  188|    151|#define BCACHEFS_SB_MAX_SIZE_SHIFT   0x10U
  ------------------
  |  Branch (469:6): [True: 9, False: 142]
  ------------------
  470|      9|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      9|#define BLKID_PROBE_NONE	1
  ------------------
  471|       |
  472|    142|	if (sb_size > (BCACHEFS_SECTOR_SIZE << bcs->layout.sb_max_size_bits))
  ------------------
  |  |  186|    142|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  |  Branch (472:6): [True: 27, False: 115]
  ------------------
  473|     27|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     27|#define BLKID_PROBE_NONE	1
  ------------------
  474|       |
  475|    115|	sb = blkid_probe_get_sb_buffer(pr, mag, sb_size);
  476|    115|	if (!sb)
  ------------------
  |  Branch (476:6): [True: 3, False: 112]
  ------------------
  477|      3|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      3|#define BLKID_PROBE_NONE	1
  ------------------
  478|    112|	sb_end = sb + sb_size;
  479|       |
  480|    112|	if (!bcachefs_validate_checksum(pr, bcs, sb, sb_end))
  ------------------
  |  Branch (480:6): [True: 25, False: 87]
  ------------------
  481|     25|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     25|#define BLKID_PROBE_NONE	1
  ------------------
  482|       |
  483|     87|	blkid_probe_set_uuid(pr, bcs->user_uuid);
  484|     87|	blkid_probe_set_label(pr, bcs->label, sizeof(bcs->label));
  485|     87|	version = le16_to_cpu(bcs->version);
  ------------------
  |  |  136|     87|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  486|     87|	blkid_probe_sprintf_version(pr, "%"PRIu16".%"PRIu16,
  487|     87|				    BCH_VERSION_MAJOR(version),
  ------------------
  |  |  200|     87|#define BCH_VERSION_MAJOR(_v)           ((uint16_t) ((_v) >> 10))
  ------------------
  488|     87|				    BCH_VERSION_MINOR(version));
  ------------------
  |  |  201|     87|#define BCH_VERSION_MINOR(_v)           ((uint16_t) ((_v) & ~(~0U << 10)))
  ------------------
  489|     87|	blocksize = le16_to_cpu(bcs->block_size);
  ------------------
  |  |  136|     87|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  490|     87|	blkid_probe_set_block_size(pr, blocksize * BCACHEFS_SECTOR_SIZE);
  ------------------
  |  |  186|     87|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  491|     87|	blkid_probe_set_fsblocksize(pr, blocksize * BCACHEFS_SECTOR_SIZE);
  ------------------
  |  |  186|     87|#define BCACHEFS_SECTOR_SIZE   512U
  ------------------
  492|     87|	blkid_probe_set_wiper(pr, 0, BCACHE_SB_OFF);
  ------------------
  |  |  178|     87|#define BCACHE_SB_OFF       0x1000U
  ------------------
  493|       |
  494|     87|	probe_bcachefs_sb_fields(pr, bcs, sb, sb_end);
  495|       |
  496|     87|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|     87|#define BLKID_PROBE_OK	0
  ------------------
  497|    112|}
bcache.c:bcachefs_validate_checksum:
  423|    112|{
  424|    112|	uint8_t checksum_type = be64_to_cpu(bcs->flags[0]) >> 58;
  ------------------
  |  |  142|    112|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  425|    112|	const unsigned char *checksummed_data_start = sb + sizeof(bcs->csum);
  426|    112|	size_t checksummed_data_size = sb_end - checksummed_data_start;
  427|       |
  428|    112|	switch (checksum_type) {
  429|      5|		case BCACHEFS_SB_CSUM_TYPE_NONE:
  ------------------
  |  Branch (429:3): [True: 5, False: 107]
  ------------------
  430|      5|			return 1;
  431|      4|		case BCACHEFS_SB_CSUM_TYPE_CRC32C: {
  ------------------
  |  Branch (431:3): [True: 4, False: 108]
  ------------------
  432|      4|			uint32_t crc = crc32c(~0LL, checksummed_data_start, checksummed_data_size) ^ ~0LL;
  433|      4|			return blkid_probe_verify_csum(pr, crc, le32_to_cpu(bcs->csum.crc32c));
  ------------------
  |  |  137|      4|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  434|      0|		}
  435|      4|		case BCACHEFS_SB_CSUM_TYPE_CRC64: {
  ------------------
  |  Branch (435:3): [True: 4, False: 108]
  ------------------
  436|      4|			uint64_t crc = ul_crc64_we(checksummed_data_start, checksummed_data_size);
  437|      4|			return blkid_probe_verify_csum(pr, crc, le64_to_cpu(bcs->csum.crc64));
  ------------------
  |  |  138|      4|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  438|      0|		}
  439|     17|		case BCACHEFS_SB_CSUM_TYPE_XXHASH: {
  ------------------
  |  Branch (439:3): [True: 17, False: 95]
  ------------------
  440|     17|			XXH64_hash_t xxh64 = XXH64(checksummed_data_start, checksummed_data_size, 0);
  ------------------
  |  |  282|     17|#  define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64)
  |  |  ------------------
  |  |  |  |  269|     17|#  define XXH_NAME2(A,B) XXH_CAT(A,B)
  |  |  |  |  ------------------
  |  |  |  |  |  |  268|     17|#  define XXH_CAT(A,B) A##B
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|     17|			return blkid_probe_verify_csum(pr, xxh64, le64_to_cpu(bcs->csum.xxh64));
  ------------------
  |  |  138|     17|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  442|      0|		}
  443|     82|		default:
  ------------------
  |  Branch (443:3): [True: 82, False: 30]
  ------------------
  444|     82|			DBG(LOWPROBE, ul_debug("bcachefs: unknown checksum type %d, ignoring.", checksum_type));
  ------------------
  |  |  358|     82|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     82|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     82|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     82|	do { \
  |  |  |  |  |  |  |  |   76|     82|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     82|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     82|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 82]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     82|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 82]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     82|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     82|		x; \
  |  |  |  |  |  |   85|     82|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  445|     82|			return 1;
  446|    112|	}
  447|    112|}
bcache.c:probe_bcachefs_sb_fields:
  372|     87|{
  373|     87|	const unsigned char *field_addr = sb_start + BCACHEFS_SB_FIELDS_OFF;
  ------------------
  |  |  190|     87|#define BCACHEFS_SB_FIELDS_OFF offsetof(struct bcachefs_super_block, _start)
  ------------------
  374|     87|	const struct bcachefs_sb_field_disk_groups *disk_groups = NULL;
  375|     87|	uint8_t current_member_group = 0;	/* 0 means unset */
  376|       |
  377|    477|	while (1) {
  ------------------
  |  Branch (377:9): [True: 477, Folded]
  ------------------
  378|    477|		struct bcachefs_sb_field *field = (struct bcachefs_sb_field *) field_addr;
  379|    477|		uint64_t field_size;
  380|    477|		uint32_t type;
  381|       |
  382|    477|		if (!is_within_range(field, sizeof(*field), sb_end))
  ------------------
  |  Branch (382:7): [True: 1, False: 476]
  ------------------
  383|      1|			break;
  384|       |
  385|    476|		field_size = BYTES(field);
  ------------------
  |  |  203|    476|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|    476|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  386|       |
  387|    476|		if (field_size < sizeof(*field))
  ------------------
  |  Branch (387:7): [True: 13, False: 463]
  ------------------
  388|     13|			break;
  389|       |
  390|    463|		if (!is_within_range(field, field_size, sb_end))
  ------------------
  |  Branch (390:7): [True: 71, False: 392]
  ------------------
  391|     71|			break;
  392|       |
  393|    392|		type = le32_to_cpu(field->type);
  ------------------
  |  |  137|    392|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  394|    392|		if (!type)
  ------------------
  |  Branch (394:7): [True: 2, False: 390]
  ------------------
  395|      2|			break;
  396|       |
  397|    390|		if (type == BCACHEFS_SB_FIELD_TYPE_MEMBERS_V1) {
  ------------------
  |  |  192|    390|#define BCACHEFS_SB_FIELD_TYPE_MEMBERS_V1 1
  ------------------
  |  Branch (397:7): [True: 50, False: 340]
  ------------------
  398|     50|			struct bcachefs_sb_field_members_v1 *members = (struct bcachefs_sb_field_members_v1 *) field;
  399|     50|			probe_bcachefs_sb_members(pr, bcs, field, members->members,
  400|     50|				BCACHEFS_SB_FIELD_MEMBERS_V1_BYTES, offsetof(__typeof__(*members), members),
  ------------------
  |  |  194|     50|#define BCACHEFS_SB_FIELD_MEMBERS_V1_BYTES 56
  ------------------
  401|     50|				&current_member_group);
  402|     50|		}
  403|       |
  404|    390|		if (type == BCACHEFS_SB_FIELD_TYPE_MEMBERS_V2) {
  ------------------
  |  |  196|    390|#define BCACHEFS_SB_FIELD_TYPE_MEMBERS_V2 11
  ------------------
  |  Branch (404:7): [True: 16, False: 374]
  ------------------
  405|     16|			struct bcachefs_sb_field_members_v2 *members = (struct bcachefs_sb_field_members_v2 *) field;
  406|     16|			probe_bcachefs_sb_members(pr, bcs, field, members->members,
  407|     16|				le16_to_cpu(members->member_bytes), offsetof(__typeof__(*members), members),
  ------------------
  |  |  136|     16|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  408|     16|				&current_member_group);
  409|     16|		}
  410|       |
  411|    390|		if (type == BCACHEFS_SB_FIELD_TYPE_DISK_GROUPS)
  ------------------
  |  |  198|    390|#define BCACHEFS_SB_FIELD_TYPE_DISK_GROUPS 5
  ------------------
  |  Branch (411:7): [True: 10, False: 380]
  ------------------
  412|     10|			disk_groups = (const struct bcachefs_sb_field_disk_groups *) field;
  413|       |
  414|    390|		field_addr += BYTES(field);
  ------------------
  |  |  203|    390|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|    390|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  415|    390|	}
  416|       |
  417|     87|	if (disk_groups && current_member_group)
  ------------------
  |  Branch (417:6): [True: 6, False: 81]
  |  Branch (417:21): [True: 0, False: 6]
  ------------------
  418|      0|		probe_bcachefs_device_label(pr, &disk_groups->field, current_member_group - 1);
  419|     87|}
bcache.c:is_within_range:
  360|    940|{
  361|    940|	ptrdiff_t diff;
  362|       |
  363|    940|	if (start >= end)
  ------------------
  |  Branch (363:6): [True: 1, False: 939]
  ------------------
  364|      1|		return 0; // should not happen
  365|       |
  366|    939|	diff = (unsigned char *) end - (unsigned char *) start;
  367|    939|	return size <= (uint64_t) diff;
  368|    940|}
bcache.c:probe_bcachefs_sb_members:
  273|     66|{
  274|     66|	uint64_t sectors = 0;
  275|     66|	uint8_t i;
  276|     66|	const struct bcachefs_sb_member *current;
  277|       |
  278|     66|	if (BYTES(field) != member_array_offset + bcs->nr_devices * member_bytes)
  ------------------
  |  |  203|     66|#define BYTES(f) ((((uint64_t) le32_to_cpu((f)->u64s)) * 8))
  |  |  ------------------
  |  |  |  |  137|     66|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (278:6): [True: 66, False: 0]
  ------------------
  279|     66|		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:
  489|  2.16k|{
  490|  2.16k|	struct befs_super_block *bs;
  491|  2.16k|	const char *version = NULL;
  492|  2.16k|	uint64_t volume_id = 0;
  493|  2.16k|	uint32_t block_size, block_shift;
  494|  2.16k|	int fs_le, ret;
  495|       |
  496|  2.16k|	bs = (struct befs_super_block *) blkid_probe_get_buffer(pr,
  497|  2.16k|					mag->sboff - B_OS_NAME_LENGTH,
  ------------------
  |  |   21|  2.16k|#define B_OS_NAME_LENGTH	0x20
  ------------------
  498|  2.16k|					sizeof(struct befs_super_block));
  499|  2.16k|	if (!bs)
  ------------------
  |  Branch (499:6): [True: 0, False: 2.16k]
  ------------------
  500|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (500:10): [True: 0, False: 0]
  ------------------
  501|       |
  502|  2.16k|	if (le32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |  137|  2.16k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |   22|  4.32k|#define SUPER_BLOCK_MAGIC1	0x42465331	/* BFS1 */
  ------------------
  |  Branch (502:6): [True: 1.62k, False: 539]
  ------------------
  503|  1.62k|		&& le32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |  137|  1.62k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		&& le32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |   23|  3.78k|#define SUPER_BLOCK_MAGIC2	0xdd121031
  ------------------
  |  Branch (503:6): [True: 1.14k, False: 472]
  ------------------
  504|  1.14k|		&& le32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |  137|  1.14k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		&& le32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |   24|  3.30k|#define SUPER_BLOCK_MAGIC3	0x15b6830e
  ------------------
  |  Branch (504:6): [True: 1.11k, False: 33]
  ------------------
  505|  1.11k|		&& le32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |  137|  1.11k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		&& le32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |   25|  1.11k|#define SUPER_BLOCK_FS_ENDIAN	0x42494745	/* BIGE */
  ------------------
  |  Branch (505:6): [True: 1.03k, False: 80]
  ------------------
  506|  1.03k|		fs_le = 1;
  507|  1.03k|		version = "little-endian";
  508|  1.12k|	} else if (be32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |  141|  1.12k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              	} else if (be32_to_cpu(bs->magic1) == SUPER_BLOCK_MAGIC1
  ------------------
  |  |   22|  2.24k|#define SUPER_BLOCK_MAGIC1	0x42465331	/* BFS1 */
  ------------------
  |  Branch (508:13): [True: 539, False: 585]
  ------------------
  509|    539|		&& be32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |  141|    539|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              		&& be32_to_cpu(bs->magic2) == SUPER_BLOCK_MAGIC2
  ------------------
  |  |   23|  1.66k|#define SUPER_BLOCK_MAGIC2	0xdd121031
  ------------------
  |  Branch (509:6): [True: 55, False: 484]
  ------------------
  510|     55|		&& be32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |  141|     55|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              		&& be32_to_cpu(bs->magic3) == SUPER_BLOCK_MAGIC3
  ------------------
  |  |   24|  1.17k|#define SUPER_BLOCK_MAGIC3	0x15b6830e
  ------------------
  |  Branch (510:6): [True: 31, False: 24]
  ------------------
  511|     31|		&& be32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |  141|     31|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              		&& be32_to_cpu(bs->fs_byte_order) == SUPER_BLOCK_FS_ENDIAN) {
  ------------------
  |  |   25|     31|#define SUPER_BLOCK_FS_ENDIAN	0x42494745	/* BIGE */
  ------------------
  |  Branch (511:6): [True: 17, False: 14]
  ------------------
  512|     17|		fs_le = 0;
  513|     17|		version = "big-endian";
  514|     17|	} else
  515|  1.10k|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|  1.10k|#define BLKID_PROBE_NONE	1
  ------------------
  516|       |
  517|  1.05k|	block_size = FS32_TO_CPU(bs->block_size, fs_le);
  ------------------
  |  |   36|  1.05k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.03k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.03k, False: 17]
  |  |  ------------------
  |  |   37|  1.05k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|     17|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  518|  1.05k|	block_shift = FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|  1.05k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  1.03k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 1.03k, False: 17]
  |  |  ------------------
  |  |   37|  1.05k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|     17|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  519|       |
  520|  1.05k|	if (block_shift < 10 || block_shift > 13 ||
  ------------------
  |  Branch (520:6): [True: 6, False: 1.04k]
  |  Branch (520:26): [True: 79, False: 968]
  ------------------
  521|    968|	    block_size != 1U << block_shift)
  ------------------
  |  Branch (521:6): [True: 73, False: 895]
  ------------------
  522|    158|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    158|#define BLKID_PROBE_NONE	1
  ------------------
  523|       |
  524|       |	/* get_block_run() shifts uint64 left by ag_shift + block_shift,
  525|       |	 * so the combined value must stay below 64 to avoid UB */
  526|    895|	if ((uint64_t)FS32_TO_CPU(bs->ag_shift, fs_le) + block_shift >= 64)
  ------------------
  |  |   36|    895|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    895|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 895, False: 0]
  |  |  ------------------
  |  |   37|    895|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (526:6): [True: 41, False: 854]
  ------------------
  527|     41|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     41|#define BLKID_PROBE_NONE	1
  ------------------
  528|       |
  529|    854|	ret = get_uuid(pr, bs, &volume_id, fs_le);
  530|       |
  531|    854|	if (ret != 0)
  ------------------
  |  Branch (531:6): [True: 853, False: 1]
  ------------------
  532|    853|		return ret;
  533|       |
  534|       |	/*
  535|       |	 * all checks pass, set LABEL, VERSION and UUID
  536|       |	 */
  537|      1|	if (*bs->name != '\0')
  ------------------
  |  Branch (537:6): [True: 1, False: 0]
  ------------------
  538|      1|		blkid_probe_set_label(pr, (unsigned char *) bs->name,
  539|      1|							sizeof(bs->name));
  540|      1|	if (version)
  ------------------
  |  Branch (540:6): [True: 1, False: 0]
  ------------------
  541|      1|		blkid_probe_set_version(pr, version);
  542|       |
  543|      1|	if (volume_id)
  ------------------
  |  Branch (543:6): [True: 0, False: 1]
  ------------------
  544|      0|		blkid_probe_sprintf_uuid(pr, (unsigned char *) &volume_id,
  545|      0|					sizeof(volume_id), "%016" PRIx64,
  546|      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))
  |  |  ------------------
  ------------------
  547|       |
  548|      1|	blkid_probe_set_fsblocksize(pr, block_size);
  549|      1|	blkid_probe_set_block_size(pr, block_size);
  550|      1|	blkid_probe_set_fsendianness(pr,
  551|      1|			fs_le ? BLKID_ENDIANNESS_LITTLE : BLKID_ENDIANNESS_BIG);
  ------------------
  |  Branch (551:4): [True: 1, False: 0]
  ------------------
  552|       |
  553|      1|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      1|#define BLKID_PROBE_OK	0
  ------------------
  554|    854|}
befs.c:get_uuid:
  394|    854|{
  395|    854|	struct befs_inode *bi;
  396|    854|	struct small_data *sd;
  397|    854|	uint64_t bi_size, offset, sd_size, sd_total_size;
  398|       |
  399|    854|	bi = (struct befs_inode *) get_block_run(pr, bs, &bs->root_dir, fs_le);
  400|    854|	if (!bi)
  ------------------
  |  Branch (400:6): [True: 10, False: 844]
  ------------------
  401|     10|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|     10|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (401:10): [True: 0, False: 10]
  ------------------
  402|       |
  403|    844|	if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   36|    844|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    844|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 844, False: 0]
  |  |  ------------------
  |  |   37|    844|							: 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|    844|#define INODE_MAGIC1		0x3bbe0ad9
  ------------------
  |  Branch (403:6): [True: 61, False: 783]
  ------------------
  404|     61|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     61|#define BLKID_PROBE_NONE	1
  ------------------
  405|       |
  406|    783|	bi_size = (uint64_t)FS16_TO_CPU(bs->root_dir.len, fs_le) <<
  ------------------
  |  |   34|    783|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    783|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 783, False: 0]
  |  |  ------------------
  |  |   35|    783|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  407|    783|		FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|    783|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    783|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 783, False: 0]
  |  |  ------------------
  |  |   37|    783|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  408|    783|	sd_total_size = min(bi_size - sizeof(struct befs_inode),
  ------------------
  |  |  206|    783|# define min(x, y) __extension__ ({		\
  |  |  207|    783|	__typeof__(x) _min1 = (x);		\
  |  |  208|  1.56k|	__typeof__(y) _min2 = (y);		\
  |  |  ------------------
  |  |  |  Branch (208:25): [True: 783, False: 0]
  |  |  ------------------
  |  |  209|    783|	(void) (&_min1 == &_min2);		\
  |  |  210|    783|	_min1 < _min2 ? _min1 : _min2; })
  |  |  ------------------
  |  |  |  Branch (210:2): [True: 729, False: 54]
  |  |  ------------------
  ------------------
  409|    783|			    (uint64_t)FS32_TO_CPU(bi->inode_size, fs_le));
  410|       |
  411|    783|	offset = 0;
  412|       |
  413|  4.54k|	while (offset + sizeof(struct small_data) <= sd_total_size) {
  ------------------
  |  Branch (413:9): [True: 4.53k, False: 17]
  ------------------
  414|  4.53k|		sd = (struct small_data *) ((uint8_t *)bi->small_data + offset);
  415|  4.53k|		sd_size = sizeof(struct small_data)
  416|  4.53k|			+ FS16_TO_CPU(sd->name_size, fs_le) + 3
  ------------------
  |  |   34|  4.53k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  4.53k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 4.53k, False: 0]
  |  |  ------------------
  |  |   35|  4.53k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  417|  4.53k|			+ FS16_TO_CPU(sd->data_size, fs_le) + 1;
  ------------------
  |  |   34|  4.53k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  4.53k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 4.53k, False: 0]
  |  |  ------------------
  |  |   35|  4.53k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  418|       |
  419|  4.53k|		if (offset + sd_size > sd_total_size)
  ------------------
  |  Branch (419:7): [True: 57, False: 4.47k]
  ------------------
  420|     57|			break;
  421|       |
  422|  4.47k|		if (FS32_TO_CPU(sd->type, fs_le) == B_UINT64_TYPE
  ------------------
  |  |   36|  4.47k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  4.47k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 4.47k, False: 0]
  |  |  ------------------
  |  |   37|  4.47k|							: 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.94k|#define B_UINT64_TYPE		0x554c4c47	/* ULLG */
  ------------------
  |  Branch (422:7): [True: 11, False: 4.46k]
  ------------------
  423|     11|			&& FS16_TO_CPU(sd->name_size, fs_le) == strlen(KEY_NAME)
  ------------------
  |  |   34|     11|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     11|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 11, False: 0]
  |  |  ------------------
  |  |   35|     11|							: 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|     11|#define KEY_NAME		"be:volume_id"
  ------------------
  |  Branch (423:7): [True: 0, False: 11]
  ------------------
  424|      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.47k|#define KEY_SIZE		8
  ------------------
  |  Branch (424:7): [True: 0, False: 0]
  ------------------
  425|      0|			&& strcmp(sd->name, KEY_NAME) == 0) {
  ------------------
  |  |   31|      0|#define KEY_NAME		"be:volume_id"
  ------------------
  |  Branch (425:7): [True: 0, False: 0]
  ------------------
  426|       |
  427|      0|			memcpy(uuid,
  428|      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))
  |  |  ------------------
  ------------------
  429|      0|			       sizeof(uint64_t));
  430|       |
  431|      0|			break;
  432|      0|		}
  433|       |
  434|  4.47k|		if (FS32_TO_CPU(sd->type, fs_le) == 0
  ------------------
  |  |   36|  4.47k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  4.47k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 4.47k, False: 0]
  |  |  ------------------
  |  |   37|  4.47k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (434:7): [True: 1.11k, False: 3.36k]
  ------------------
  435|  1.11k|				&& FS16_TO_CPU(sd->name_size, fs_le) == 0
  ------------------
  |  |   34|  1.11k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  1.11k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 1.11k, False: 0]
  |  |  ------------------
  |  |   35|  1.11k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (435:8): [True: 921, False: 191]
  ------------------
  436|    921|				&& FS16_TO_CPU(sd->data_size, fs_le) == 0)
  ------------------
  |  |   34|    921|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    921|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 921, False: 0]
  |  |  ------------------
  |  |   35|    921|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (436:8): [True: 709, False: 212]
  ------------------
  437|    709|			break;
  438|       |
  439|  3.76k|		offset += sd_size;
  440|  3.76k|	}
  441|       |
  442|    783|	if (*uuid == 0
  ------------------
  |  Branch (442:6): [True: 783, False: 0]
  ------------------
  443|    783|		&& (FS32_TO_CPU(bi->attributes.allocation_group, fs_le) != 0
  ------------------
  |  |   36|    783|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    783|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 783, False: 0]
  |  |  ------------------
  |  |   37|    783|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  |  Branch (443:7): [True: 746, False: 37]
  ------------------
  444|     37|			|| FS16_TO_CPU(bi->attributes.start, fs_le) != 0
  ------------------
  |  |   34|     37|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     37|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 37, False: 0]
  |  |  ------------------
  |  |   35|     37|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (444:7): [True: 6, False: 31]
  ------------------
  445|    782|			|| FS16_TO_CPU(bi->attributes.len, fs_le) != 0)) {
  ------------------
  |  |   34|     31|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     31|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 31, False: 0]
  |  |  ------------------
  |  |   35|     31|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (445:7): [True: 30, False: 1]
  ------------------
  446|    782|		int64_t value;
  447|       |
  448|    782|		bi = (struct befs_inode *) get_block_run(pr, bs,
  449|    782|							&bi->attributes, fs_le);
  450|    782|		if (!bi)
  ------------------
  |  Branch (450:7): [True: 84, False: 698]
  ------------------
  451|     84|			return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|     84|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (451:11): [True: 0, False: 84]
  ------------------
  452|       |
  453|    698|		if (FS32_TO_CPU(bi->magic1, fs_le) != INODE_MAGIC1)
  ------------------
  |  |   36|    698|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    698|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 698, False: 0]
  |  |  ------------------
  |  |   37|    698|							: 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|    698|#define INODE_MAGIC1		0x3bbe0ad9
  ------------------
  |  Branch (453:7): [True: 40, False: 658]
  ------------------
  454|     40|			return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     40|#define BLKID_PROBE_NONE	1
  ------------------
  455|       |
  456|    658|		value = get_key_value(pr, bs, bi, KEY_NAME, fs_le);
  ------------------
  |  |   31|    658|#define KEY_NAME		"be:volume_id"
  ------------------
  457|    658|		if (value < 0)
  ------------------
  |  Branch (457:7): [True: 658, False: 0]
  ------------------
  458|    658|			return value == -ENOENT ? BLKID_PROBE_NONE : value;
  ------------------
  |  |  471|    658|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (458:11): [True: 658, False: 0]
  ------------------
  459|       |
  460|      0|		if (value > 0) {
  ------------------
  |  Branch (460:7): [True: 0, False: 0]
  ------------------
  461|      0|			bi = (struct befs_inode *) blkid_probe_get_buffer(pr,
  462|      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))
  |  |  ------------------
  ------------------
  463|      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))
  |  |  ------------------
  ------------------
  464|      0|			if (!bi)
  ------------------
  |  Branch (464:8): [True: 0, False: 0]
  ------------------
  465|      0|				return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (465:12): [True: 0, False: 0]
  ------------------
  466|       |
  467|      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 (467:8): [True: 0, False: 0]
  ------------------
  468|      0|				return 1;
  469|       |
  470|      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 (470:8): [True: 0, False: 0]
  ------------------
  471|      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 (471:8): [True: 0, False: 0]
  ------------------
  472|      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 (472:8): [True: 0, False: 0]
  ------------------
  473|      0|									== 1) {
  474|      0|				uint64_t *attr_data;
  475|       |
  476|      0|				attr_data = (uint64_t *) get_block_run(pr, bs,
  477|      0|						&bi->data.direct[0], fs_le);
  478|      0|				if (!attr_data)
  ------------------
  |  Branch (478:9): [True: 0, False: 0]
  ------------------
  479|      0|					return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (479:13): [True: 0, False: 0]
  ------------------
  480|       |
  481|      0|				*uuid = *attr_data;
  482|      0|			}
  483|      0|		}
  484|      0|	}
  485|      1|	return 0;
  486|    783|}
befs.c:get_block_run:
  127|  2.15k|{
  128|  2.15k|	return blkid_probe_get_buffer(pr,
  129|  2.15k|			((uint64_t) FS32_TO_CPU(br->allocation_group, fs_le)
  ------------------
  |  |   36|  2.15k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  2.15k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   37|  2.15k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  130|  2.15k|					<< FS32_TO_CPU(bs->ag_shift, fs_le)
  ------------------
  |  |   36|  2.15k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  2.15k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   37|  2.15k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  131|  2.15k|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|  2.15k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  2.15k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   37|  2.15k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  132|  2.15k|				+ ((uint64_t) FS16_TO_CPU(br->start, fs_le)
  ------------------
  |  |   34|  2.15k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  2.15k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   35|  2.15k|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  133|  2.15k|					<< FS32_TO_CPU(bs->block_shift, fs_le)),
  ------------------
  |  |   36|  2.15k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  2.15k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   37|  2.15k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  134|  2.15k|			(uint64_t) FS16_TO_CPU(br->len, fs_le)
  ------------------
  |  |   34|  2.15k|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  2.15k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   35|  2.15k|							: 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|  2.15k|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  2.15k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 2.15k, False: 0]
  |  |  ------------------
  |  |   37|  2.15k|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  136|  2.15k|}
befs.c:get_key_value:
  280|    658|{
  281|    658|	struct bplustree_header *bh;
  282|    658|	struct bplustree_node *bn;
  283|    658|	uint16_t *keylengths;
  284|    658|	int64_t *values;
  285|    658|	int64_t node_pointer;
  286|    658|	uint32_t bn_size, all_key_count, all_key_length;
  287|    658|	uint32_t keylengths_offset, values_offset;
  288|    658|	int32_t first, last, mid, cmp;
  289|    658|	int loop_detect = 0;
  290|       |
  291|    658|	errno = 0;
  292|    658|	bh = (struct bplustree_header *) get_tree_node(pr, bs, &bi->data, 0,
  293|    658|					sizeof(struct bplustree_header), fs_le);
  294|    658|	if (!bh)
  ------------------
  |  Branch (294:6): [True: 624, False: 34]
  ------------------
  295|    624|		return errno ? -errno : -ENOENT;
  ------------------
  |  Branch (295:10): [True: 0, False: 624]
  ------------------
  296|       |
  297|     34|	if ((int32_t) FS32_TO_CPU(bh->magic, fs_le) != BPLUSTREE_MAGIC)
  ------------------
  |  |   36|     34|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|     34|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 34, False: 0]
  |  |  ------------------
  |  |   37|     34|							: 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|     34|#define BPLUSTREE_MAGIC		0x69f6c2e8
  ------------------
  |  Branch (297:6): [True: 34, False: 0]
  ------------------
  298|     34|		return -ENOENT;
  299|       |
  300|      0|	node_pointer = FS64_TO_CPU(bh->root_node_pointer, 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))
  |  |  ------------------
  ------------------
  301|      0|	bn_size = FS32_TO_CPU(bh->node_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))
  |  |  ------------------
  ------------------
  302|       |
  303|      0|	if (bn_size < sizeof(struct bplustree_node))
  ------------------
  |  Branch (303:6): [True: 0, False: 0]
  ------------------
  304|      0|		return -ENOENT; /* Corrupt? */
  305|       |
  306|      0|	do {
  307|      0|		errno = 0;
  308|       |
  309|      0|		bn = (struct bplustree_node *) get_tree_node(pr, bs, &bi->data,
  310|      0|			node_pointer, bn_size, fs_le);
  311|      0|		if (!bn)
  ------------------
  |  Branch (311:7): [True: 0, False: 0]
  ------------------
  312|      0|			return errno ? -errno : -ENOENT;
  ------------------
  |  Branch (312:11): [True: 0, False: 0]
  ------------------
  313|       |
  314|      0|		all_key_count = FS16_TO_CPU(bn->all_key_count, 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))
  |  |  ------------------
  ------------------
  315|      0|		all_key_length = FS16_TO_CPU(bn->all_key_length, 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))
  |  |  ------------------
  ------------------
  316|       |
  317|      0|		if (all_key_count == 0)
  ------------------
  |  Branch (317:7): [True: 0, False: 0]
  ------------------
  318|      0|			return -ENOENT; /* Corrupt? */
  319|       |
  320|      0|		keylengths_offset =
  321|      0|			(sizeof(struct bplustree_node) + all_key_length
  322|      0|			 + sizeof(int64_t) - 1) & ~(sizeof(int64_t) - 1);
  323|      0|		values_offset = keylengths_offset +
  324|      0|			all_key_count * sizeof(uint16_t);
  325|       |
  326|      0|		if (values_offset + all_key_count * sizeof(uint64_t) > bn_size)
  ------------------
  |  Branch (326:7): [True: 0, False: 0]
  ------------------
  327|      0|			return -ENOENT; /* Corrupt? */
  328|       |
  329|      0|		keylengths = (uint16_t *) ((uint8_t *) bn + keylengths_offset);
  330|      0|		values = (int64_t *) ((uint8_t *) bn + values_offset);
  331|       |
  332|       |		 /* Misaligned offset comes only from corrupt metadata. */
  333|      0|		if ((uintptr_t) keylengths % sizeof(*keylengths))
  ------------------
  |  Branch (333:7): [True: 0, False: 0]
  ------------------
  334|      0|			return -ENOENT; /* Corrupt? */
  335|       |
  336|      0|		first = 0;
  337|      0|		mid = 0;
  338|      0|		last = all_key_count - 1;
  339|       |
  340|      0|		cmp = compare_keys(bn->name, keylengths, last, key,
  341|      0|				   strlen(key), all_key_length, fs_le);
  342|      0|		if (cmp == BAD_KEYS)
  ------------------
  |  |  248|      0|#define BAD_KEYS -2
  ------------------
  |  Branch (342:7): [True: 0, False: 0]
  ------------------
  343|      0|			return -ENOENT;
  344|       |
  345|      0|		if (cmp == 0) {
  ------------------
  |  Branch (345:7): [True: 0, False: 0]
  ------------------
  346|      0|			if ((int64_t) FS64_TO_CPU(bn->overflow_link, 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))
  |  |  ------------------
  ------------------
  |  Branch (346:8): [True: 0, False: 0]
  ------------------
  347|      0|							== BPLUSTREE_NULL)
  ------------------
  |  |   28|      0|#define BPLUSTREE_NULL		-1LL
  ------------------
  348|      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))
  |  |  ------------------
  ------------------
  349|       |
  350|      0|			node_pointer = 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))
  |  |  ------------------
  ------------------
  351|      0|		} else if (cmp < 0)
  ------------------
  |  Branch (351:14): [True: 0, False: 0]
  ------------------
  352|      0|			node_pointer = FS64_TO_CPU(bn->overflow_link, 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))
  |  |  ------------------
  ------------------
  353|      0|		else {
  354|      0|			while (first <= last) {
  ------------------
  |  Branch (354:11): [True: 0, False: 0]
  ------------------
  355|      0|				mid = (first + last) / 2;
  356|       |
  357|      0|				cmp = compare_keys(bn->name, keylengths, mid,
  358|      0|						   key, strlen(key),
  359|      0|						   all_key_length, fs_le);
  360|      0|				if (cmp == BAD_KEYS)
  ------------------
  |  |  248|      0|#define BAD_KEYS -2
  ------------------
  |  Branch (360:9): [True: 0, False: 0]
  ------------------
  361|      0|					return -ENOENT;
  362|       |
  363|      0|				if (cmp == 0) {
  ------------------
  |  Branch (363:9): [True: 0, False: 0]
  ------------------
  364|      0|					if ((int64_t) 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))
  |  |  ------------------
  ------------------
  |  Branch (364:10): [True: 0, False: 0]
  ------------------
  365|      0|						fs_le) == BPLUSTREE_NULL)
  ------------------
  |  |   28|      0|#define BPLUSTREE_NULL		-1LL
  ------------------
  366|      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))
  |  |  ------------------
  ------------------
  367|      0|									fs_le);
  368|      0|					break;
  369|      0|				}
  370|       |
  371|      0|				if (cmp < 0)
  ------------------
  |  Branch (371:9): [True: 0, False: 0]
  ------------------
  372|      0|					first = mid + 1;
  373|      0|				else
  374|      0|					last = mid - 1;
  375|      0|			}
  376|      0|			if (cmp < 0) {
  ------------------
  |  Branch (376:8): [True: 0, False: 0]
  ------------------
  377|      0|				if (mid + 1U < all_key_count)
  ------------------
  |  Branch (377:9): [True: 0, False: 0]
  ------------------
  378|      0|					node_pointer = FS64_TO_CPU(values[mid + 1],
  ------------------
  |  |   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))
  |  |  ------------------
  ------------------
  379|      0|									fs_le);
  380|      0|				else
  381|      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))
  |  |  ------------------
  ------------------
  382|      0|									fs_le);
  383|      0|			} else
  384|      0|				node_pointer = FS64_TO_CPU(values[mid], 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))
  |  |  ------------------
  ------------------
  385|      0|		}
  386|      0|	} while (++loop_detect < 100 &&
  ------------------
  |  Branch (386:11): [True: 0, False: 0]
  ------------------
  387|      0|		(int64_t) FS64_TO_CPU(bn->overflow_link, 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))
  |  |  ------------------
  ------------------
  |  Branch (387:3): [True: 0, False: 0]
  ------------------
  388|      0|						!= BPLUSTREE_NULL);
  ------------------
  |  |   28|      0|#define BPLUSTREE_NULL		-1LL
  ------------------
  389|      0|	return 0;
  390|      0|}
befs.c:get_tree_node:
  160|    658|{
  161|    658|	if (start < (int64_t) FS64_TO_CPU(ds->max_direct_range, fs_le)) {
  ------------------
  |  |   38|    658|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    658|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 658, False: 0]
  |  |  ------------------
  |  |   39|    658|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (161:6): [True: 41, False: 617]
  ------------------
  162|     41|		int64_t br_len;
  163|     41|		size_t i;
  164|       |
  165|     97|		for (i = 0; i < NUM_DIRECT_BLOCKS; i++) {
  ------------------
  |  |   29|     97|#define NUM_DIRECT_BLOCKS	12
  ------------------
  |  Branch (165:15): [True: 97, False: 0]
  ------------------
  166|     97|			br_len = (int64_t) FS16_TO_CPU(ds->direct[i].len, fs_le)
  ------------------
  |  |   34|     97|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     97|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 97, False: 0]
  |  |  ------------------
  |  |   35|     97|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  167|     97|					<< FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|     97|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|     97|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 97, False: 0]
  |  |  ------------------
  |  |   37|     97|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  168|     97|			if (start < br_len)
  ------------------
  |  Branch (168:8): [True: 41, False: 56]
  ------------------
  169|     41|				return get_custom_block_run(pr, bs,
  170|     41|							&ds->direct[i],
  171|     41|							start, length, fs_le);
  172|     56|			start -= br_len;
  173|     56|			if (start < 0)
  ------------------
  |  Branch (173:8): [True: 0, False: 56]
  ------------------
  174|      0|				return NULL; /* Corrupt? */
  175|     56|		}
  176|    617|	} else if (start < (int64_t) FS64_TO_CPU(ds->max_indirect_range, fs_le)) {
  ------------------
  |  |   38|    617|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    617|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 617, False: 0]
  |  |  ------------------
  |  |   39|    617|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (176:13): [True: 315, False: 302]
  ------------------
  177|    315|		struct block_run *br;
  178|    315|		int64_t max_br, br_len, i;
  179|       |
  180|    315|		start -= FS64_TO_CPU(ds->max_direct_range, fs_le);
  ------------------
  |  |   38|    315|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    315|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 315, False: 0]
  |  |  ------------------
  |  |   39|    315|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  181|    315|		if (start < 0)
  ------------------
  |  Branch (181:7): [True: 0, False: 315]
  ------------------
  182|      0|			return NULL; /* Corrupt? */
  183|       |
  184|    315|		max_br = ((int64_t) FS16_TO_CPU(ds->indirect.len, fs_le)
  ------------------
  |  |   34|    315|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    315|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 315, False: 0]
  |  |  ------------------
  |  |   35|    315|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  185|    315|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|    315|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    315|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 315, False: 0]
  |  |  ------------------
  |  |   37|    315|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  186|    315|				/ sizeof(struct block_run);
  187|       |
  188|    315|		br = (struct block_run *) get_block_run(pr, bs, &ds->indirect,
  189|    315|									fs_le);
  190|    315|		if (!br)
  ------------------
  |  Branch (190:7): [True: 45, False: 270]
  ------------------
  191|     45|			return NULL;
  192|       |
  193|  13.6M|		for (i = 0; i < max_br; i++) {
  ------------------
  |  Branch (193:15): [True: 13.6M, False: 93]
  ------------------
  194|  13.6M|			br_len = (int64_t) FS16_TO_CPU(br[i].len, fs_le)
  ------------------
  |  |   34|  13.6M|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|  13.6M|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 13.6M, False: 0]
  |  |  ------------------
  |  |   35|  13.6M|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  195|  13.6M|					<< FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|  13.6M|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|  13.6M|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 13.6M, False: 0]
  |  |  ------------------
  |  |   37|  13.6M|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  196|  13.6M|			if (start < br_len)
  ------------------
  |  Branch (196:8): [True: 177, False: 13.6M]
  ------------------
  197|    177|				return get_custom_block_run(pr, bs, &br[i],
  198|    177|							start, length, fs_le);
  199|  13.6M|			start -= br_len;
  200|  13.6M|		}
  201|    302|	} else if (start < (int64_t) FS64_TO_CPU(ds->max_double_indirect_range, fs_le)) {
  ------------------
  |  |   38|    302|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    302|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 302, False: 0]
  |  |  ------------------
  |  |   39|    302|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  |  Branch (201:13): [True: 228, False: 74]
  ------------------
  202|    228|		struct block_run *br;
  203|    228|		int64_t max_br, di_br_size, br_per_di_br, di_index, i_index;
  204|       |
  205|    228|		start -= (int64_t) FS64_TO_CPU(ds->max_indirect_range, fs_le);
  ------------------
  |  |   38|    228|#define FS64_TO_CPU(value, fs_is_le) (fs_is_le ? le64_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  138|    228|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  |  |  ------------------
  |  |  |  Branch (38:39): [True: 228, False: 0]
  |  |  ------------------
  |  |   39|    228|							: be64_to_cpu(value))
  |  |  ------------------
  |  |  |  |  142|      0|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  |  |  ------------------
  ------------------
  206|    228|		if (start < 0)
  ------------------
  |  Branch (206:7): [True: 0, False: 228]
  ------------------
  207|      0|			return NULL; /* Corrupt? */
  208|       |
  209|    228|		di_br_size = (int64_t) FS16_TO_CPU(ds->double_indirect.len,
  ------------------
  |  |   34|    228|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    228|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 228, False: 0]
  |  |  ------------------
  |  |   35|    228|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  210|    228|				fs_le) << FS32_TO_CPU(bs->block_shift, fs_le);
  ------------------
  |  |   36|    228|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    228|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 228, False: 0]
  |  |  ------------------
  |  |   37|    228|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  211|    228|		if (di_br_size == 0)
  ------------------
  |  Branch (211:7): [True: 41, False: 187]
  ------------------
  212|     41|			return NULL;
  213|       |
  214|    187|		br_per_di_br = di_br_size / sizeof(struct block_run);
  215|    187|		if (br_per_di_br == 0)
  ------------------
  |  Branch (215:7): [True: 0, False: 187]
  ------------------
  216|      0|			return NULL;
  217|       |
  218|    187|		di_index = start / (br_per_di_br * di_br_size);
  219|    187|		i_index = (start % (br_per_di_br * di_br_size)) / di_br_size;
  220|    187|		start = (start % (br_per_di_br * di_br_size)) % di_br_size;
  221|       |
  222|    187|		if (di_index >= br_per_di_br)
  ------------------
  |  Branch (222:7): [True: 48, False: 139]
  ------------------
  223|     48|			return NULL; /* Corrupt? */
  224|       |
  225|    139|		br = (struct block_run *) get_block_run(pr, bs,
  226|    139|						&ds->double_indirect, fs_le);
  227|    139|		if (!br)
  ------------------
  |  Branch (227:7): [True: 52, False: 87]
  ------------------
  228|     52|			return NULL;
  229|       |
  230|     87|		max_br = ((int64_t)FS16_TO_CPU(br[di_index].len, fs_le)
  ------------------
  |  |   34|     87|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|     87|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 87, False: 0]
  |  |  ------------------
  |  |   35|     87|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  231|     87|			  << FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|     87|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|     87|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 87, False: 0]
  |  |  ------------------
  |  |   37|     87|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  232|     87|			/ sizeof(struct block_run);
  233|       |
  234|     87|		if (i_index >= max_br)
  ------------------
  |  Branch (234:7): [True: 21, False: 66]
  ------------------
  235|     21|			return NULL; /* Corrupt? */
  236|       |
  237|     66|		br = (struct block_run *) get_block_run(pr, bs, &br[di_index],
  238|     66|									fs_le);
  239|     66|		if (!br)
  ------------------
  |  Branch (239:7): [True: 36, False: 30]
  ------------------
  240|     36|			return NULL;
  241|       |
  242|     30|		return get_custom_block_run(pr, bs, &br[i_index], start, length,
  243|     30|									fs_le);
  244|     66|	}
  245|    167|	return NULL;
  246|    658|}
befs.c:get_custom_block_run:
  142|    248|{
  143|    248|	if (offset + length > (int64_t) FS16_TO_CPU(br->len, fs_le)
  ------------------
  |  |   34|    248|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    248|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 248, False: 0]
  |  |  ------------------
  |  |   35|    248|							: be16_to_cpu(value))
  |  |  ------------------
  |  |  |  |  140|      0|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  |  |  ------------------
  ------------------
  |  Branch (143:6): [True: 16, False: 232]
  ------------------
  144|    248|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|    248|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    248|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 248, False: 0]
  |  |  ------------------
  |  |   37|    248|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  145|     16|		return NULL;
  146|       |
  147|    232|	return blkid_probe_get_buffer(pr,
  148|    232|			((uint64_t) FS32_TO_CPU(br->allocation_group, fs_le)
  ------------------
  |  |   36|    232|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    232|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 232, False: 0]
  |  |  ------------------
  |  |   37|    232|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  149|    232|					<< FS32_TO_CPU(bs->ag_shift, fs_le)
  ------------------
  |  |   36|    232|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    232|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 232, False: 0]
  |  |  ------------------
  |  |   37|    232|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  150|    232|					<< FS32_TO_CPU(bs->block_shift, fs_le))
  ------------------
  |  |   36|    232|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    232|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 232, False: 0]
  |  |  ------------------
  |  |   37|    232|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  151|    232|				+ ((uint64_t) FS16_TO_CPU(br->start, fs_le)
  ------------------
  |  |   34|    232|#define FS16_TO_CPU(value, fs_is_le) (fs_is_le ? le16_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  136|    232|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (34:39): [True: 232, False: 0]
  |  |  ------------------
  |  |   35|    232|							: 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|    232|#define FS32_TO_CPU(value, fs_is_le) (fs_is_le ? le32_to_cpu(value) \
  |  |  ------------------
  |  |  |  |  137|    232|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (36:39): [True: 232, False: 0]
  |  |  ------------------
  |  |   37|    232|							: be32_to_cpu(value))
  |  |  ------------------
  |  |  |  |  141|      0|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  |  |  ------------------
  ------------------
  153|    232|				+ offset,
  154|    232|			length);
  155|    248|}

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

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

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

cs_fvault2.c:probe_cs_fvault2:
   67|    350|{
   68|    350|	const struct cs_fvault2_sb *sb;
   69|       |
   70|    350|	sb = blkid_probe_get_sb(pr, mag, struct cs_fvault2_sb);
  ------------------
  |  |  451|    350|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   71|    350|	if (!sb)
  ------------------
  |  Branch (71:6): [True: 0, False: 350]
  ------------------
   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|    350|	if (le16_to_cpu(sb->version) != 1 ||
  ------------------
  |  |  136|    350|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (75:6): [True: 290, False: 60]
  ------------------
   76|     60|	    le32_to_cpu(sb->checksum_algo) != 1)
  ------------------
  |  |  137|     60|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (76:6): [True: 57, False: 3]
  ------------------
   77|    347|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    347|#define BLKID_PROBE_NONE	1
  ------------------
   78|       |
   79|      3|	if (!cs_fvault2_verify_csum(pr, sb))
  ------------------
  |  Branch (79:6): [True: 3, False: 0]
  ------------------
   80|      3|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      3|#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|      3|{
   58|      3|	uint32_t seed = le32_to_cpu(sb->checksum.seed);
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   59|      3|	uint32_t crc = le32_to_cpu(sb->checksum.value);
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   60|      3|	unsigned char *buf = (unsigned char *)sb + sizeof(sb->checksum);
   61|      3|	size_t buf_size = sizeof(*sb) - sizeof(sb->checksum);
   62|       |
   63|      3|	return blkid_probe_verify_csum(pr, crc32c(seed, buf, buf_size), crc);
   64|      3|}

ddf_raid.c:probe_ddf:
   92|  6.17k|{
   93|  6.17k|	int hdrs[] = { 1, 257 };
   94|  6.17k|	size_t i;
   95|  6.17k|	const struct ddf_header *ddf = NULL;
   96|  6.17k|	char version[DDF_REV_LENGTH + 1];
   97|  6.17k|	uint64_t off = 0, lba;
   98|       |
   99|  18.5k|	for (i = 0; i < ARRAY_SIZE(hdrs); i++) {
  ------------------
  |  |  182|  18.5k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (99:14): [True: 12.3k, False: 6.17k]
  ------------------
  100|  12.3k|		off = ((pr->size / 0x200) - hdrs[i]) * 0x200;
  101|       |
  102|  12.3k|		ddf = (const struct ddf_header *) blkid_probe_get_buffer(pr,
  103|  12.3k|					off,
  104|  12.3k|					sizeof(struct ddf_header));
  105|  12.3k|		if (!ddf)
  ------------------
  |  Branch (105:7): [True: 0, False: 12.3k]
  ------------------
  106|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (106:11): [True: 0, False: 0]
  ------------------
  107|  12.3k|		if (ddf->signature == cpu_to_be32(DDF_MAGIC) && ddf_verify_csum(pr, ddf))
  ------------------
  |  |  133|  24.7k|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (107:7): [True: 0, False: 12.3k]
  |  Branch (107:51): [True: 0, False: 0]
  ------------------
  108|      0|			break;
  109|  12.3k|		ddf = NULL;
  110|  12.3k|	}
  111|       |
  112|  6.17k|	if (!ddf)
  ------------------
  |  Branch (112:6): [True: 6.17k, False: 0]
  ------------------
  113|  6.17k|		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|     54|{
   44|     54|	struct drbdmanage_hdr *hdr;
   45|     54|	unsigned char *cp;
   46|     54|	struct drbdmanage_pers *prs;
   47|       |
   48|     54|	hdr = (struct drbdmanage_hdr*)
   49|     54|		blkid_probe_get_buffer(pr, 0, sizeof(*hdr));
   50|     54|	if (!hdr)
  ------------------
  |  Branch (50:6): [True: 0, False: 54]
  ------------------
   51|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (51:10): [True: 0, False: 0]
  ------------------
   52|       |
   53|    267|	for(cp=hdr->uuid; cp<&hdr->lf; cp++)
  ------------------
  |  Branch (53:20): [True: 261, False: 6]
  ------------------
   54|    261|		if (!isxdigit(*cp))
  ------------------
  |  Branch (54:7): [True: 48, False: 213]
  ------------------
   55|     48|			return 1;
   56|      6|	if (hdr->lf != '\n')
  ------------------
  |  Branch (56:6): [True: 4, False: 2]
  ------------------
   57|      4|		return 1;
   58|       |
   59|      2|	if (blkid_probe_strncpy_uuid(pr,
  ------------------
  |  Branch (59:6): [True: 0, False: 2]
  ------------------
   60|      2|				hdr->uuid, sizeof(hdr->uuid)))
   61|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (61:10): [True: 0, False: 0]
  ------------------
   62|       |
   63|      2|	prs = (struct drbdmanage_pers*)
   64|      2|		blkid_probe_get_buffer(pr, 0x1000, sizeof(*prs));
   65|      2|	if (!prs)
  ------------------
  |  Branch (65:6): [True: 0, False: 2]
  ------------------
   66|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (66:10): [True: 0, False: 0]
  ------------------
   67|       |
   68|      2|	if (memcmp(prs->magic, persistence_magic, sizeof(prs->magic)) == 0 &&
  ------------------
  |  Branch (68:6): [True: 1, False: 1]
  ------------------
   69|      1|	    blkid_probe_sprintf_version(pr, "%"PRIu32, be32_to_cpu(prs->version_le)) != 0)
  ------------------
  |  |  141|      1|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  |  Branch (69:6): [True: 0, False: 1]
  ------------------
   70|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (70:10): [True: 0, False: 0]
  ------------------
   71|       |
   72|      2|	return 0;
   73|      2|}

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

erofs.c:probe_erofs:
   76|    297|{
   77|    297|	const struct erofs_super_block *sb;
   78|       |
   79|    297|	sb = blkid_probe_get_sb(pr, mag, struct erofs_super_block);
  ------------------
  |  |  451|    297|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   80|    297|	if (!sb)
  ------------------
  |  Branch (80:6): [True: 0, False: 297]
  ------------------
   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|    297|	if (sb->blkszbits < 9 || sb->blkszbits > 16)
  ------------------
  |  Branch (84:6): [True: 132, False: 165]
  |  Branch (84:27): [True: 108, False: 57]
  ------------------
   85|    240|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    240|#define BLKID_PROBE_NONE	1
  ------------------
   86|       |
   87|     57|	if (!erofs_verify_checksum(pr, mag, sb))
  ------------------
  |  Branch (87:6): [True: 51, False: 6]
  ------------------
   88|     51|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     51|#define BLKID_PROBE_NONE	1
  ------------------
   89|       |
   90|      6|	if (sb->volume_name[0])
  ------------------
  |  Branch (90:6): [True: 4, False: 2]
  ------------------
   91|      4|		blkid_probe_set_label(pr, (unsigned char *)sb->volume_name,
   92|      4|				      sizeof(sb->volume_name));
   93|       |
   94|      6|	blkid_probe_set_uuid(pr, sb->uuid);
   95|      6|	blkid_probe_set_fsblocksize(pr, 1U << sb->blkszbits);
   96|      6|	blkid_probe_set_block_size(pr, 1U << sb->blkszbits);
   97|      6|	blkid_probe_set_fssize(pr, (uint64_t) (1U << sb->blkszbits) * le32_to_cpu(sb->blocks));
  ------------------
  |  |  137|      6|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   98|       |
   99|      6|	return BLKID_PROBE_OK;
  ------------------
  |  |  465|      6|#define BLKID_PROBE_OK	0
  ------------------
  100|     57|}
erofs.c:erofs_verify_checksum:
   46|     57|{
   47|     57|	uint32_t expected, csum;
   48|     57|	size_t csummed_size;
   49|     57|	const unsigned char *csummed;
   50|       |
   51|     57|	if (!(le32_to_cpu(sb->feature_compat) & EROFS_FEATURE_SB_CSUM))
  ------------------
  |  |  137|     57|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (!(le32_to_cpu(sb->feature_compat) & EROFS_FEATURE_SB_CSUM))
  ------------------
  |  |   17|     57|#define EROFS_FEATURE_SB_CSUM	(1 << 0)
  ------------------
  |  Branch (51:6): [True: 6, False: 51]
  ------------------
   52|      6|		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: 3, False: 48]
  ------------------
   60|      3|		return 0;
   61|       |
   62|     48|	csummed_size = (1U << sb->blkszbits) - EROFS_SUPER_OFFSET;
  ------------------
  |  |   15|     48|#define EROFS_SUPER_OFFSET      1024
  ------------------
   63|       |
   64|     48|	csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
   65|     48|	if (!csummed)
  ------------------
  |  Branch (65:6): [True: 0, False: 48]
  ------------------
   66|      0|		return 0;
   67|       |
   68|     48|	csum = ul_crc32c_exclude_offset(~0L, csummed, csummed_size,
   69|     48|			                offsetof(struct erofs_super_block, checksum),
   70|     48|					sizeof_member(struct erofs_super_block, checksum));
  ------------------
  |  |  260|     48|#define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER)
  ------------------
   71|       |
   72|     48|	return blkid_probe_verify_csum(pr, csum, expected);
   73|     48|}

blkid_probe_is_exfat:
  226|    113|{
  227|    113|	const struct exfat_super_block *sb;
  228|    113|	const struct blkid_idmag *mag = NULL;
  229|    113|	int rc;
  230|       |
  231|    113|	rc = blkid_probe_get_idmag(pr, &vfat_idinfo, NULL, &mag);
  232|    113|	if (rc < 0)
  ------------------
  |  Branch (232:6): [True: 0, False: 113]
  ------------------
  233|      0|		return rc;	/* error */
  234|    113|	if (rc != BLKID_PROBE_OK || !mag)
  ------------------
  |  |  465|    226|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (234:6): [True: 0, False: 113]
  |  Branch (234:30): [True: 0, False: 113]
  ------------------
  235|      0|		return 0;
  236|       |
  237|    113|	sb = blkid_probe_get_sb(pr, mag, struct exfat_super_block);
  ------------------
  |  |  451|    113|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  238|    113|	if (!sb)
  ------------------
  |  Branch (238:6): [True: 0, False: 113]
  ------------------
  239|      0|		return 0;
  240|       |
  241|    113|	if (memcmp(sb->FileSystemName, "EXFAT   ", 8) != 0)
  ------------------
  |  Branch (241:6): [True: 89, False: 24]
  ------------------
  242|     89|		return 0;
  243|       |
  244|     24|	return exfat_valid_superblock(pr, sb);
  245|    113|}
exfat.c:exfat_valid_superblock:
  167|    407|{
  168|    407|	if (le16_to_cpu(sb->BootSignature) != 0xAA55)
  ------------------
  |  |  136|    407|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (168:6): [True: 116, False: 291]
  ------------------
  169|    116|		return 0;
  170|       |
  171|    291|	if (!CLUSTER_SIZE(sb))
  ------------------
  |  |   44|    291|#define CLUSTER_SIZE(sb) ((sb)->SectorsPerClusterShift < 32 ? (BLOCK_SIZE(sb) << (sb)->SectorsPerClusterShift) : 0)
  |  |  ------------------
  |  |  |  |   43|    251|#define BLOCK_SIZE(sb) ((sb)->BytesPerSectorShift < 32 ? (1u << (sb)->BytesPerSectorShift) : 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:25): [True: 221, False: 30]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (44:27): [True: 251, False: 40]
  |  |  ------------------
  ------------------
  |  Branch (171:6): [True: 72, False: 219]
  ------------------
  172|     72|		return 0;
  173|       |
  174|    219|	if (memcmp(sb->JumpBoot, "\xEB\x76\x90", 3) != 0)
  ------------------
  |  Branch (174:6): [True: 39, False: 180]
  ------------------
  175|     39|		return 0;
  176|       |
  177|    180|	if (memcmp(sb->FileSystemName, "EXFAT   ", 8) != 0)
  ------------------
  |  Branch (177:6): [True: 0, False: 180]
  ------------------
  178|      0|		return 0;
  179|       |
  180|  8.45k|	for (size_t i = 0; i < sizeof(sb->MustBeZero); i++)
  ------------------
  |  Branch (180:21): [True: 8.29k, False: 154]
  ------------------
  181|  8.29k|		if (sb->MustBeZero[i] != 0x00)
  ------------------
  |  Branch (181:7): [True: 26, False: 8.27k]
  ------------------
  182|     26|			return 0;
  183|       |
  184|    154|	if (!in_range_inclusive(sb->NumberOfFats, 1, 2))
  ------------------
  |  |  164|    154|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 151, False: 3]
  |  |  |  Branch (164:63): [True: 147, False: 4]
  |  |  ------------------
  ------------------
  185|      7|		return 0;
  186|       |
  187|    147|	if (!in_range_inclusive(sb->BytesPerSectorShift, 9, 12))
  ------------------
  |  |  164|    147|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 143, False: 4]
  |  |  |  Branch (164:63): [True: 140, False: 3]
  |  |  ------------------
  ------------------
  188|      7|		return 0;
  189|       |
  190|    140|	if (!in_range_inclusive(sb->SectorsPerClusterShift,
  ------------------
  |  |  164|    140|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 140, False: 0]
  |  |  |  Branch (164:63): [True: 140, False: 0]
  |  |  ------------------
  ------------------
  191|    140|				0,
  192|    140|				25 - sb->BytesPerSectorShift))
  193|      0|		return 0;
  194|       |
  195|    140|	if (!in_range_inclusive(le32_to_cpu(sb->FatOffset),
  ------------------
  |  |  164|    140|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 131, False: 9]
  |  |  |  Branch (164:63): [True: 100, False: 31]
  |  |  ------------------
  ------------------
  196|    140|				24,
  197|    140|				le32_to_cpu(sb->ClusterHeapOffset) -
  198|    140|					(le32_to_cpu(sb->FatLength) * sb->NumberOfFats)))
  199|     40|		return 0;
  200|       |
  201|    100|	if (!in_range_inclusive(le32_to_cpu(sb->ClusterHeapOffset),
  ------------------
  |  |  164|    100|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 88, False: 12]
  |  |  |  Branch (164:63): [True: 69, False: 19]
  |  |  ------------------
  ------------------
  202|    100|				le32_to_cpu(sb->FatOffset) +
  203|    100|					le32_to_cpu(sb->FatLength) * sb->NumberOfFats,
  204|    100|				1U << (32 - 1)))
  205|     31|		return 0;
  206|       |
  207|     69|	if (!in_range_inclusive(le32_to_cpu(sb->FirstClusterOfRootDirectory),
  ------------------
  |  |  164|     69|#define in_range_inclusive(val, start, stop) (val >= start && val <= stop)
  |  |  ------------------
  |  |  |  Branch (164:47): [True: 62, False: 7]
  |  |  |  Branch (164:63): [True: 31, False: 31]
  |  |  ------------------
  ------------------
  208|     69|				2,
  209|     69|				le32_to_cpu(sb->ClusterCount) + 1))
  210|     38|		return 0;
  211|       |
  212|     31|	if (!exfat_validate_checksum(pr, sb))
  ------------------
  |  Branch (212:6): [True: 31, False: 0]
  ------------------
  213|     31|		return 0;
  214|       |
  215|      0|	return 1;
  216|     31|}
exfat.c:exfat_validate_checksum:
  143|     31|{
  144|     31|	size_t sector_size = BLOCK_SIZE(sb);
  ------------------
  |  |   43|     31|#define BLOCK_SIZE(sb) ((sb)->BytesPerSectorShift < 32 ? (1u << (sb)->BytesPerSectorShift) : 0)
  |  |  ------------------
  |  |  |  Branch (43:25): [True: 31, False: 0]
  |  |  ------------------
  ------------------
  145|       |	/* 11 sectors will be checksummed, the 12th contains the expected */
  146|     31|	const unsigned char *data = blkid_probe_get_buffer(pr, 0, sector_size * 12);
  147|     31|	if (!data)
  ------------------
  |  Branch (147:6): [True: 0, False: 31]
  ------------------
  148|      0|		return 0;
  149|       |
  150|     31|	uint32_t checksum = exfat_boot_checksum(data, sector_size);
  151|       |
  152|       |	/* The expected checksum is repeated, check all of them */
  153|     31|	for (size_t i = 0; i < sector_size / sizeof(uint32_t); i++) {
  ------------------
  |  Branch (153:21): [True: 31, False: 0]
  ------------------
  154|     31|		size_t offset = sector_size * 11 + i * 4;
  155|     31|		uint32_t *expected_addr = (uint32_t *) &data[offset];
  156|     31|		uint32_t expected = le32_to_cpu(*expected_addr);
  ------------------
  |  |  137|     31|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  157|     31|		if (!blkid_probe_verify_csum(pr, checksum, expected))
  ------------------
  |  Branch (157:7): [True: 31, False: 0]
  ------------------
  158|     31|			return 0;
  159|     31|	};
  160|       |
  161|      0|	return 1;
  162|     31|}
exfat.c:exfat_boot_checksum:
  126|     31|{
  127|     31|	uint32_t n_bytes = sector_size * 11;
  128|     31|	uint32_t checksum = 0;
  129|       |
  130|   174k|	for (size_t i = 0; i < n_bytes; i++) {
  ------------------
  |  Branch (130:21): [True: 174k, False: 31]
  ------------------
  131|   174k|		if ((i == 106) || (i == 107) || (i == 112))
  ------------------
  |  Branch (131:7): [True: 31, False: 174k]
  |  Branch (131:21): [True: 31, False: 174k]
  |  Branch (131:35): [True: 31, False: 174k]
  ------------------
  132|     93|			continue;
  133|       |
  134|   174k|		checksum = ((checksum & 1) ? 0x80000000 : 0) + (checksum >> 1)
  ------------------
  |  Branch (134:15): [True: 87.8k, False: 86.6k]
  ------------------
  135|   174k|			+ (uint32_t) sectors[i];
  136|   174k|	}
  137|       |
  138|     31|	return checksum;
  139|     31|}
exfat.c:probe_exfat:
  248|    383|{
  249|    383|	const struct exfat_super_block *sb;
  250|    383|	struct exfat_entry_label *label;
  251|       |
  252|    383|	sb = blkid_probe_get_sb(pr, mag, struct exfat_super_block);
  ------------------
  |  |  451|    383|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  253|    383|	if (!sb)
  ------------------
  |  Branch (253:6): [True: 0, False: 383]
  ------------------
  254|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (254:10): [True: 0, False: 0]
  ------------------
  255|       |
  256|    383|	if (!exfat_valid_superblock(pr, sb))
  ------------------
  |  Branch (256:6): [True: 383, False: 0]
  ------------------
  257|    383|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|    383|#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|    401|{
  161|    401|	const struct exfs_super_block *xs;
  162|       |
  163|    401|	xs = blkid_probe_get_sb(pr, mag, struct exfs_super_block);
  ------------------
  |  |  451|    401|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  164|    401|	if (!xs)
  ------------------
  |  Branch (164:6): [True: 0, False: 401]
  ------------------
  165|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (165:10): [True: 0, False: 0]
  ------------------
  166|       |
  167|    401|	if (!exfs_verify_sb(xs))
  ------------------
  |  Branch (167:6): [True: 396, False: 5]
  ------------------
  168|    396|		return 1;
  169|       |
  170|      5|	if (*xs->sb_fname != '\0')
  ------------------
  |  Branch (170:6): [True: 2, False: 3]
  ------------------
  171|      2|		blkid_probe_set_label(pr, (unsigned char *) xs->sb_fname,
  172|      2|				sizeof(xs->sb_fname));
  173|       |
  174|      5|	blkid_probe_set_uuid(pr, xs->sb_uuid);
  175|       |
  176|      5|	blkid_probe_set_fsblocksize(pr, be32_to_cpu(xs->sb_blocksize));
  ------------------
  |  |  141|      5|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  177|      5|	blkid_probe_set_block_size(pr, be32_to_cpu(xs->sb_blocksize));
  ------------------
  |  |  141|      5|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  178|       |
  179|      5|	return 0;
  180|    401|}
exfs.c:exfs_verify_sb:
  125|    401|{
  126|    401|	struct exfs_super_block sb, *sbp = &sb;
  127|       |
  128|       |	/* beXX_to_cpu(), but don't convert UUID and fsname! */
  129|    401|	sb_from_disk(ondisk, sbp);
  130|       |
  131|       |	/* sanity checks, we don't want to rely on magic string only */
  132|    401|	if (sbp->sb_agcount <= 0					||
  ------------------
  |  Branch (132:6): [True: 7, False: 394]
  ------------------
  133|    394|	    sbp->sb_sectsize < EXFS_MIN_SECTORSIZE			||
  ------------------
  |  |   70|    795|#define EXFS_MIN_SECTORSIZE	(1 << EXFS_MIN_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   68|    394|#define EXFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (133:6): [True: 24, False: 370]
  ------------------
  134|    370|	    sbp->sb_sectsize > EXFS_MAX_SECTORSIZE			||
  ------------------
  |  |   71|    771|#define EXFS_MAX_SECTORSIZE	(1 << EXFS_MAX_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   69|    370|#define EXFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  |  |  ------------------
  ------------------
  |  Branch (134:6): [True: 32, False: 338]
  ------------------
  135|    338|	    sbp->sb_sectlog < EXFS_MIN_SECTORSIZE_LOG			||
  ------------------
  |  |   68|    739|#define EXFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (135:6): [True: 15, False: 323]
  ------------------
  136|    323|	    sbp->sb_sectlog > EXFS_MAX_SECTORSIZE_LOG			||
  ------------------
  |  |   69|    724|#define EXFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  ------------------
  |  Branch (136:6): [True: 29, False: 294]
  ------------------
  137|    294|	    sbp->sb_sectsize != (1 << sbp->sb_sectlog)			||
  ------------------
  |  Branch (137:6): [True: 16, False: 278]
  ------------------
  138|    278|	    sbp->sb_blocksize < EXFS_MIN_BLOCKSIZE			||
  ------------------
  |  |   66|    679|#define EXFS_MIN_BLOCKSIZE	(1 << EXFS_MIN_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   64|    278|#define EXFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (138:6): [True: 7, False: 271]
  ------------------
  139|    271|	    sbp->sb_blocksize > EXFS_MAX_BLOCKSIZE			||
  ------------------
  |  |   67|    672|#define EXFS_MAX_BLOCKSIZE	(1 << EXFS_MAX_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   65|    271|#define EXFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  |  |  ------------------
  ------------------
  |  Branch (139:6): [True: 30, False: 241]
  ------------------
  140|    241|	    sbp->sb_blocklog < EXFS_MIN_BLOCKSIZE_LOG			||
  ------------------
  |  |   64|    642|#define EXFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (140:6): [True: 4, False: 237]
  ------------------
  141|    237|	    sbp->sb_blocklog > EXFS_MAX_BLOCKSIZE_LOG			||
  ------------------
  |  |   65|    638|#define EXFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  ------------------
  |  Branch (141:6): [True: 3, False: 234]
  ------------------
  142|    234|	    sbp->sb_blocksize != (1ULL << sbp->sb_blocklog)		||
  ------------------
  |  Branch (142:6): [True: 12, False: 222]
  ------------------
  143|    222|	    sbp->sb_inodesize < EXFS_DINODE_MIN_SIZE			||
  ------------------
  |  |   75|    623|#define	EXFS_DINODE_MIN_SIZE	(1 << EXFS_DINODE_MIN_LOG)
  |  |  ------------------
  |  |  |  |   73|    222|#define	EXFS_DINODE_MIN_LOG	8
  |  |  ------------------
  ------------------
  |  Branch (143:6): [True: 3, False: 219]
  ------------------
  144|    219|	    sbp->sb_inodesize > EXFS_DINODE_MAX_SIZE			||
  ------------------
  |  |   76|    620|#define	EXFS_DINODE_MAX_SIZE	(1 << EXFS_DINODE_MAX_LOG)
  |  |  ------------------
  |  |  |  |   74|    219|#define	EXFS_DINODE_MAX_LOG	11
  |  |  ------------------
  ------------------
  |  Branch (144:6): [True: 6, False: 213]
  ------------------
  145|    213|	    sbp->sb_inodelog < EXFS_DINODE_MIN_LOG			||
  ------------------
  |  |   73|    614|#define	EXFS_DINODE_MIN_LOG	8
  ------------------
  |  Branch (145:6): [True: 6, False: 207]
  ------------------
  146|    207|	    sbp->sb_inodelog > EXFS_DINODE_MAX_LOG			||
  ------------------
  |  |   74|    608|#define	EXFS_DINODE_MAX_LOG	11
  ------------------
  |  Branch (146:6): [True: 9, False: 198]
  ------------------
  147|    198|	    sbp->sb_inodesize != (1 << sbp->sb_inodelog)		||
  ------------------
  |  Branch (147:6): [True: 3, False: 195]
  ------------------
  148|    195|	    (sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog)	||
  ------------------
  |  Branch (148:6): [True: 3, False: 192]
  ------------------
  149|    192|	    ((uint64_t) sbp->sb_rextsize * sbp->sb_blocksize > EXFS_MAX_RTEXTSIZE)	||
  ------------------
  |  |   78|    192|#define	EXFS_MAX_RTEXTSIZE	(1024 * 1024 * 1024)	/* 1GB */
  ------------------
  |  Branch (149:6): [True: 27, False: 165]
  ------------------
  150|    165|	    ((uint64_t) sbp->sb_rextsize * sbp->sb_blocksize < EXFS_MIN_RTEXTSIZE)	||
  ------------------
  |  |   80|    165|#define	EXFS_MIN_RTEXTSIZE	(4 * 1024)		/* 4kB */
  ------------------
  |  Branch (150:6): [True: 9, False: 156]
  ------------------
  151|    156|	    (sbp->sb_imax_pct > 100 /* zero sb_imax_pct is valid */)	||
  ------------------
  |  Branch (151:6): [True: 5, False: 151]
  ------------------
  152|    151|	    sbp->sb_dblocks == 0					||
  ------------------
  |  Branch (152:6): [True: 3, False: 148]
  ------------------
  153|    148|	    sbp->sb_dblocks > EXFS_MAX_DBLOCKS(sbp)			||
  ------------------
  |  |   83|    549|#define EXFS_MAX_DBLOCKS(s) ((uint64_t)(s)->sb_agcount * (s)->sb_agblocks)
  ------------------
  |  Branch (153:6): [True: 43, False: 105]
  ------------------
  154|    105|	    sbp->sb_dblocks < EXFS_MIN_DBLOCKS(sbp))
  ------------------
  |  |   84|    105|#define EXFS_MIN_DBLOCKS(s) ((uint64_t)((s)->sb_agcount - 1) *	\
  |  |   85|    105|			 (s)->sb_agblocks + EXFS_MIN_AG_BLOCKS)
  |  |  ------------------
  |  |  |  |   82|    105|#define EXFS_MIN_AG_BLOCKS	64
  |  |  ------------------
  ------------------
  |  Branch (154:6): [True: 100, False: 5]
  ------------------
  155|    396|		return 0;
  156|      5|	return 1;
  157|    401|}
exfs.c:sb_from_disk:
   90|    401|{
   91|       |
   92|    401|	to->sb_magicnum = be32_to_cpu(from->sb_magicnum);
  ------------------
  |  |  141|    401|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   93|    401|	to->sb_blocksize = be32_to_cpu(from->sb_blocksize);
  ------------------
  |  |  141|    401|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   94|    401|	to->sb_dblocks = be64_to_cpu(from->sb_dblocks);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   95|    401|	to->sb_rblocks = be64_to_cpu(from->sb_rblocks);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   96|    401|	to->sb_rextents = be64_to_cpu(from->sb_rextents);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   97|    401|	to->sb_logstart = be64_to_cpu(from->sb_logstart);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   98|    401|	to->sb_rootino = be64_to_cpu(from->sb_rootino);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
   99|    401|	to->sb_rbmino = be64_to_cpu(from->sb_rbmino);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  100|    401|	to->sb_rsumino = be64_to_cpu(from->sb_rsumino);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  101|    401|	to->sb_rextsize = be32_to_cpu(from->sb_rextsize);
  ------------------
  |  |  141|    401|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  102|    401|	to->sb_agblocks = be32_to_cpu(from->sb_agblocks);
  ------------------
  |  |  141|    401|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  103|    401|	to->sb_agcount = be32_to_cpu(from->sb_agcount);
  ------------------
  |  |  141|    401|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  104|    401|	to->sb_rbmblocks = be32_to_cpu(from->sb_rbmblocks);
  ------------------
  |  |  141|    401|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  105|    401|	to->sb_logblocks = be32_to_cpu(from->sb_logblocks);
  ------------------
  |  |  141|    401|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  106|    401|	to->sb_versionnum = be16_to_cpu(from->sb_versionnum);
  ------------------
  |  |  140|    401|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  107|    401|	to->sb_sectsize = be16_to_cpu(from->sb_sectsize);
  ------------------
  |  |  140|    401|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  108|    401|	to->sb_inodesize = be16_to_cpu(from->sb_inodesize);
  ------------------
  |  |  140|    401|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  109|    401|	to->sb_inopblock = be16_to_cpu(from->sb_inopblock);
  ------------------
  |  |  140|    401|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  110|    401|	to->sb_blocklog = from->sb_blocklog;
  111|    401|	to->sb_sectlog = from->sb_sectlog;
  112|    401|	to->sb_inodelog = from->sb_inodelog;
  113|    401|	to->sb_inopblog = from->sb_inopblog;
  114|    401|	to->sb_agblklog = from->sb_agblklog;
  115|    401|	to->sb_rextslog = from->sb_rextslog;
  116|    401|	to->sb_inprogress = from->sb_inprogress;
  117|    401|	to->sb_imax_pct = from->sb_imax_pct;
  118|    401|	to->sb_icount = be64_to_cpu(from->sb_icount);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  119|    401|	to->sb_ifree = be64_to_cpu(from->sb_ifree);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  120|    401|	to->sb_fdblocks = be64_to_cpu(from->sb_fdblocks);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  121|       |	to->sb_frextents = be64_to_cpu(from->sb_frextents);
  ------------------
  |  |  142|    401|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  122|    401|}

ext.c:probe_jbd:
  256|    440|{
  257|    440|	struct ext2_super_block *es;
  258|    440|	uint32_t fi;
  259|       |
  260|    440|	es = ext_get_super(pr, NULL, &fi, NULL);
  261|    440|	if (!es)
  ------------------
  |  Branch (261:6): [True: 330, False: 110]
  ------------------
  262|    330|		return errno ? -errno : 1;
  ------------------
  |  Branch (262:10): [True: 0, False: 330]
  ------------------
  263|    110|	if (!(fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV))
  ------------------
  |  |  112|    110|#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV	0x0008
  ------------------
  |  Branch (263:6): [True: 93, False: 17]
  ------------------
  264|     93|		return 1;
  265|       |
  266|     17|	ext_get_info(pr, 2, es);
  267|     17|	blkid_probe_set_uuid_as(pr, es->s_uuid, "LOGUUID");
  268|       |
  269|     17|	return 0;
  270|    110|}
ext.c:ext_get_super:
  150|  2.20k|{
  151|  2.20k|	struct ext2_super_block *es;
  152|       |
  153|  2.20k|	es = (struct ext2_super_block *)
  154|  2.20k|			blkid_probe_get_buffer(pr, EXT_SB_OFF, sizeof(struct ext2_super_block));
  ------------------
  |  |   85|  2.20k|#define EXT_SB_OFF				0x400
  ------------------
  155|  2.20k|	if (!es)
  ------------------
  |  Branch (155:6): [True: 0, False: 2.20k]
  ------------------
  156|      0|		return NULL;
  157|  2.20k|	if (le32_to_cpu(es->s_feature_ro_compat) & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) {
  ------------------
  |  |  137|  2.20k|#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|  2.20k|#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM	0x0400
  ------------------
  |  Branch (157:6): [True: 1.08k, False: 1.11k]
  ------------------
  158|  1.08k|		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|  1.08k|		if (!blkid_probe_verify_csum(pr, csum, le32_to_cpu(es->s_checksum))) {
  ------------------
  |  |  137|  1.08k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (166:7): [True: 1.07k, False: 10]
  ------------------
  167|  1.07k|#ifdef O_DIRECT
  168|  1.07k|			if (blkid_probe_reset_buffers(pr))
  ------------------
  |  Branch (168:8): [True: 0, False: 1.07k]
  ------------------
  169|      0|				return NULL;
  170|       |
  171|  1.07k|			es = (struct ext2_super_block *)
  172|  1.07k|			    blkid_probe_get_buffer_direct(pr, EXT_SB_OFF, sizeof(struct ext2_super_block));
  ------------------
  |  |   85|  1.07k|#define EXT_SB_OFF				0x400
  ------------------
  173|  1.07k|			if (!es)
  ------------------
  |  Branch (173:8): [True: 0, False: 1.07k]
  ------------------
  174|      0|				return NULL;
  175|       |
  176|  1.07k|			csum = crc32c(~0, es, offsetof(struct ext2_super_block, s_checksum));
  177|  1.07k|			if (!blkid_probe_verify_csum(pr, csum, le32_to_cpu(es->s_checksum)))
  ------------------
  |  |  137|  1.07k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (177:8): [True: 1.07k, False: 0]
  ------------------
  178|  1.07k|				return NULL;
  179|       |#else
  180|       |			return NULL;
  181|       |#endif
  182|  1.07k|		}
  183|  1.11k|	} 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.11k|		if (le32_to_cpu(es->s_log_block_size) >= 256)
  ------------------
  |  |  137|  1.11k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (190:7): [True: 575, False: 540]
  ------------------
  191|    575|			return NULL;
  192|  1.11k|	}
  193|    550|	if (fc)
  ------------------
  |  Branch (193:6): [True: 440, False: 110]
  ------------------
  194|    440|		*fc = le32_to_cpu(es->s_feature_compat);
  ------------------
  |  |  137|    440|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  195|    550|	if (fi)
  ------------------
  |  Branch (195:6): [True: 550, False: 0]
  ------------------
  196|    550|		*fi = le32_to_cpu(es->s_feature_incompat);
  ------------------
  |  |  137|    550|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  197|    550|	if (frc)
  ------------------
  |  Branch (197:6): [True: 440, False: 110]
  ------------------
  198|    440|		*frc = le32_to_cpu(es->s_feature_ro_compat);
  ------------------
  |  |  137|    440|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  199|       |
  200|    550|	return es;
  201|  2.20k|}
ext.c:ext_get_info:
  204|    125|{
  205|    125|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  206|    125|	uint32_t s_feature_incompat = le32_to_cpu(es->s_feature_incompat);
  ------------------
  |  |  137|    125|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  207|       |
  208|    125|	DBG(PROBE, ul_debug("ext2_sb.compat = %08X:%08X:%08X",
  ------------------
  |  |  358|    125|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    125|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    125|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    125|	do { \
  |  |  |  |  |  |  |  |   76|    125|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  351|    125|#define BLKID_DEBUG_PROBE	(1 << 9)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    125|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 125]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    125|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 125]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    125|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    125|		x; \
  |  |  |  |  |  |   85|    125|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|    125|		   le32_to_cpu(es->s_feature_compat),
  210|    125|		   s_feature_incompat,
  211|    125|		   le32_to_cpu(es->s_feature_ro_compat)));
  212|       |
  213|    125|	if (*es->s_volume_name != '\0')
  ------------------
  |  Branch (213:6): [True: 83, False: 42]
  ------------------
  214|     83|		blkid_probe_set_label(pr, (unsigned char *) es->s_volume_name,
  215|     83|					sizeof(es->s_volume_name));
  216|    125|	blkid_probe_set_uuid(pr, es->s_uuid);
  217|       |
  218|    125|	if (le32_to_cpu(es->s_feature_compat) & EXT3_FEATURE_COMPAT_HAS_JOURNAL)
  ------------------
  |  |  137|    125|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(es->s_feature_compat) & EXT3_FEATURE_COMPAT_HAS_JOURNAL)
  ------------------
  |  |   97|    125|#define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
  ------------------
  |  Branch (218:6): [True: 41, False: 84]
  ------------------
  219|     41|		blkid_probe_set_uuid_as(pr, es->s_journal_uuid, "EXT_JOURNAL");
  220|       |
  221|    125|	if (ver != 2 && (chn->flags & BLKID_SUBLKS_SECTYPE) &&
  ------------------
  |  |  316|     88|#define BLKID_SUBLKS_SECTYPE	(1 << 6) /* define compatible fs type (second type) */
  ------------------
  |  Branch (221:6): [True: 88, False: 37]
  |  Branch (221:18): [True: 0, False: 88]
  ------------------
  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|    125|	blkid_probe_sprintf_version(pr, "%u.%u",
  228|    125|		le32_to_cpu(es->s_rev_level),
  ------------------
  |  |  137|    125|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  229|    125|		le16_to_cpu(es->s_minor_rev_level));
  ------------------
  |  |  136|    125|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  230|       |
  231|    125|	uint32_t block_size = 0;
  232|    125|	if (le32_to_cpu(es->s_log_block_size) < 32){
  ------------------
  |  |  137|    125|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (232:6): [True: 111, False: 14]
  ------------------
  233|    111|		block_size = 1024U << le32_to_cpu(es->s_log_block_size);
  ------------------
  |  |  137|    111|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  234|    111|		blkid_probe_set_fsblocksize(pr, block_size);
  235|    111|		blkid_probe_set_block_size(pr, block_size);
  236|    111|	}
  237|       |
  238|    125|	uint64_t fslastblock = le32_to_cpu(es->s_blocks_count) |
  ------------------
  |  |  137|    125|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  239|    125|		((s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ?
  ------------------
  |  |  115|    125|#define EXT4_FEATURE_INCOMPAT_64BIT		0x0080
  ------------------
  |  Branch (239:4): [True: 15, False: 110]
  ------------------
  240|    110|		(uint64_t) le32_to_cpu(es->s_blocks_count_hi) << 32 : 0);
  ------------------
  |  |  137|     15|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  241|    125|	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|    125|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  250|    125|	blkid_probe_set_fssize(pr, fssize);
  251|    125|}
ext.c:probe_ext2:
  274|    440|{
  275|    440|	struct ext2_super_block *es;
  276|    440|	uint32_t fc, frc, fi;
  277|       |
  278|    440|	es = ext_get_super(pr, &fc, &fi, &frc);
  279|    440|	if (!es)
  ------------------
  |  Branch (279:6): [True: 330, False: 110]
  ------------------
  280|    330|		return errno ? -errno : 1;
  ------------------
  |  Branch (280:10): [True: 0, False: 330]
  ------------------
  281|       |
  282|       |	/* Distinguish between ext3 and ext2 */
  283|    110|	if (fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL)
  ------------------
  |  |   97|    110|#define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
  ------------------
  |  Branch (283:6): [True: 37, False: 73]
  ------------------
  284|     37|		return 1;
  285|       |
  286|       |	/* Any features which ext2 doesn't understand */
  287|     73|	if ((frc & EXT2_FEATURE_RO_COMPAT_UNSUPPORTED) ||
  ------------------
  |  |  125|     73|#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED	~EXT2_FEATURE_RO_COMPAT_SUPP
  |  |  ------------------
  |  |  |  |  119|     73|#define EXT2_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     73|#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
  |  |  |  |  ------------------
  |  |  |  |  120|     73|					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|     73|#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE	0x0002
  |  |  |  |  ------------------
  |  |  |  |  121|     73|					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|     73|#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR	0x0004
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (287:6): [True: 42, False: 31]
  ------------------
  288|     31|	    (fi  & EXT2_FEATURE_INCOMPAT_UNSUPPORTED))
  ------------------
  |  |  124|     31|#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED	~EXT2_FEATURE_INCOMPAT_SUPP
  |  |  ------------------
  |  |  |  |  122|     31|#define EXT2_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|     31|#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
  |  |  |  |  ------------------
  |  |  |  |  123|     31|					 EXT2_FEATURE_INCOMPAT_META_BG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|     31|#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (288:6): [True: 11, False: 20]
  ------------------
  289|     53|		return 1;
  290|       |
  291|     20|	ext_get_info(pr, 2, es);
  292|     20|	return 0;
  293|     73|}
ext.c:probe_ext3:
  297|    440|{
  298|    440|	struct ext2_super_block *es;
  299|    440|	uint32_t fc, frc, fi;
  300|       |
  301|    440|	es = ext_get_super(pr, &fc, &fi, &frc);
  302|    440|	if (!es)
  ------------------
  |  Branch (302:6): [True: 330, False: 110]
  ------------------
  303|    330|		return errno ? -errno : 1;
  ------------------
  |  Branch (303:10): [True: 0, False: 330]
  ------------------
  304|       |
  305|       |	/* ext3 requires journal */
  306|    110|	if (!(fc & EXT3_FEATURE_COMPAT_HAS_JOURNAL))
  ------------------
  |  |   97|    110|#define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
  ------------------
  |  Branch (306:6): [True: 73, False: 37]
  ------------------
  307|     73|		return 1;
  308|       |
  309|       |	/* Any features which ext3 doesn't understand */
  310|     37|	if ((frc & EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) ||
  ------------------
  |  |  134|     37|#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED	~EXT3_FEATURE_RO_COMPAT_SUPP
  |  |  ------------------
  |  |  |  |  127|     37|#define EXT3_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     37|#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
  |  |  |  |  ------------------
  |  |  |  |  128|     37|					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|     37|#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE	0x0002
  |  |  |  |  ------------------
  |  |  |  |  129|     37|					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|     37|#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR	0x0004
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (310:6): [True: 27, False: 10]
  ------------------
  311|     10|	    (fi  & EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
  ------------------
  |  |  133|     10|#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED	~EXT3_FEATURE_INCOMPAT_SUPP
  |  |  ------------------
  |  |  |  |  130|     10|#define EXT3_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|     10|#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
  |  |  |  |  ------------------
  |  |  |  |  131|     10|					 EXT3_FEATURE_INCOMPAT_RECOVER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  111|     10|#define EXT3_FEATURE_INCOMPAT_RECOVER		0x0004
  |  |  |  |  ------------------
  |  |  |  |  132|     10|					 EXT2_FEATURE_INCOMPAT_META_BG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|     10|#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (311:6): [True: 6, False: 4]
  ------------------
  312|     33|		return 1;
  313|       |
  314|      4|	ext_get_info(pr, 3, es);
  315|      4|	return 0;
  316|     37|}
ext.c:probe_ext4:
  342|    440|{
  343|    440|	struct ext2_super_block *es;
  344|    440|	uint32_t fc, frc, fi;
  345|       |
  346|    440|	es = ext_get_super(pr, &fc, &fi, &frc);
  347|    440|	if (!es)
  ------------------
  |  Branch (347:6): [True: 330, False: 110]
  ------------------
  348|    330|		return errno ? -errno : 1;
  ------------------
  |  Branch (348:10): [True: 0, False: 330]
  ------------------
  349|       |
  350|       |	/* Distinguish from jbd */
  351|    110|	if (fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
  ------------------
  |  |  112|    110|#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV	0x0008
  ------------------
  |  Branch (351:6): [True: 17, False: 93]
  ------------------
  352|     17|		return 1;
  353|       |
  354|       |	/* Ext4 has at least one feature which ext3 doesn't understand */
  355|     93|	if (!(frc & EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) &&
  ------------------
  |  |  134|     93|#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED	~EXT3_FEATURE_RO_COMPAT_SUPP
  |  |  ------------------
  |  |  |  |  127|     93|#define EXT3_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  100|     93|#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
  |  |  |  |  ------------------
  |  |  |  |  128|     93|					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  101|     93|#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE	0x0002
  |  |  |  |  ------------------
  |  |  |  |  129|     93|					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  102|     93|#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR	0x0004
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (355:6): [True: 34, False: 59]
  ------------------
  356|     34|	    !(fi  & EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
  ------------------
  |  |  133|     34|#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED	~EXT3_FEATURE_INCOMPAT_SUPP
  |  |  ------------------
  |  |  |  |  130|     34|#define EXT3_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  110|     34|#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
  |  |  |  |  ------------------
  |  |  |  |  131|     34|					 EXT3_FEATURE_INCOMPAT_RECOVER| \
  |  |  |  |  ------------------
  |  |  |  |  |  |  111|     34|#define EXT3_FEATURE_INCOMPAT_RECOVER		0x0004
  |  |  |  |  ------------------
  |  |  |  |  132|     34|					 EXT2_FEATURE_INCOMPAT_META_BG)
  |  |  |  |  ------------------
  |  |  |  |  |  |  113|     34|#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (356:6): [True: 26, False: 8]
  ------------------
  357|     26|		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|     67|	if (le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)
  ------------------
  |  |  137|     67|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)
  ------------------
  |  |   94|     67|#define EXT2_FLAGS_TEST_FILESYS		0x0004
  ------------------
  |  Branch (369:6): [True: 35, False: 32]
  ------------------
  370|     35|		return 1;
  371|       |
  372|     32|	ext_get_info(pr, 4, es);
  373|     32|	return 0;
  374|     67|}
ext.c:probe_ext4dev:
  321|    440|{
  322|    440|	struct ext2_super_block *es;
  323|    440|	uint32_t fc, frc, fi;
  324|       |
  325|    440|	es = ext_get_super(pr, &fc, &fi, &frc);
  326|    440|	if (!es)
  ------------------
  |  Branch (326:6): [True: 330, False: 110]
  ------------------
  327|    330|		return errno ? -errno : 1;
  ------------------
  |  Branch (327:10): [True: 0, False: 330]
  ------------------
  328|       |
  329|       |	/* Distinguish from jbd */
  330|    110|	if (fi & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
  ------------------
  |  |  112|    110|#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV	0x0008
  ------------------
  |  Branch (330:6): [True: 17, False: 93]
  ------------------
  331|     17|		return 1;
  332|       |
  333|     93|	if (!(le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS))
  ------------------
  |  |  137|     93|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (!(le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS))
  ------------------
  |  |   94|     93|#define EXT2_FLAGS_TEST_FILESYS		0x0004
  ------------------
  |  Branch (333:6): [True: 41, False: 52]
  ------------------
  334|     41|		return 1;
  335|       |
  336|     52|	ext_get_info(pr, 4, es);
  337|     52|	return 0;
  338|     93|}

f2fs.c:probe_f2fs:
   87|    316|{
   88|    316|	const struct f2fs_super_block *sb;
   89|    316|	uint16_t vermaj, vermin;
   90|       |
   91|    316|	sb = blkid_probe_get_sb(pr, mag, struct f2fs_super_block);
  ------------------
  |  |  451|    316|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   92|    316|	if (!sb)
  ------------------
  |  Branch (92:6): [True: 0, False: 316]
  ------------------
   93|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (93:10): [True: 0, False: 0]
  ------------------
   94|       |
   95|    316|	vermaj = le16_to_cpu(sb->major_ver);
  ------------------
  |  |  136|    316|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   96|    316|	vermin = le16_to_cpu(sb->minor_ver);
  ------------------
  |  |  136|    316|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   97|       |
   98|       |	/* For version 1.0 we cannot know the correct sb structure */
   99|    316|	if (vermaj == 1 && vermin == 0)
  ------------------
  |  Branch (99:6): [True: 9, False: 307]
  |  Branch (99:21): [True: 4, False: 5]
  ------------------
  100|      4|		return 0;
  101|       |
  102|    312|	if (!f2fs_validate_checksum(pr, mag->kboff << 10, sb))
  ------------------
  |  Branch (102:6): [True: 256, False: 56]
  ------------------
  103|    256|		return 1;
  104|       |
  105|     56|	if (*((unsigned char *) sb->volume_name))
  ------------------
  |  Branch (105:6): [True: 22, False: 34]
  ------------------
  106|     22|		blkid_probe_set_utf8label(pr, (unsigned char *) sb->volume_name,
  107|     22|						sizeof(sb->volume_name),
  108|     22|						UL_ENCODE_UTF16LE);
  109|       |
  110|     56|	blkid_probe_set_uuid(pr, sb->uuid);
  111|     56|	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|     56|	if (le32_to_cpu(sb->log_blocksize) <= 16){
  ------------------
  |  |  137|     56|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (114:6): [True: 21, False: 35]
  ------------------
  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|     56|	return 0;
  121|    312|}
f2fs.c:f2fs_validate_checksum:
   61|    312|{
   62|    312|	uint32_t csum_off = le32_to_cpu(sb->checksum_offset);
  ------------------
  |  |  137|    312|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   63|    312|	if (!csum_off)
  ------------------
  |  Branch (63:6): [True: 52, False: 260]
  ------------------
   64|     52|		return 1;
   65|    260|	if (csum_off % sizeof(uint32_t) != 0)
  ------------------
  |  Branch (65:6): [True: 77, False: 183]
  ------------------
   66|     77|		return 0;
   67|    183|	if (csum_off + sizeof(uint32_t) > 4096)
  ------------------
  |  Branch (67:6): [True: 140, False: 43]
  ------------------
   68|    140|		return 0;
   69|       |
   70|     43|	const unsigned char *csum_data = blkid_probe_get_buffer(pr,
   71|     43|			sb_off + csum_off, sizeof(uint32_t));
   72|     43|	if (!csum_data)
  ------------------
  |  Branch (72:6): [True: 0, False: 43]
  ------------------
   73|      0|		return 0;
   74|       |
   75|     43|	uint32_t expected = le32_to_cpu(*(uint32_t *) csum_data);
  ------------------
  |  |  137|     43|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   76|       |
   77|     43|	const unsigned char *csummed = blkid_probe_get_buffer(pr, sb_off, csum_off);
   78|     43|	if (!csummed)
  ------------------
  |  Branch (78:6): [True: 0, False: 43]
  ------------------
   79|      0|		return 0;
   80|       |
   81|     43|	uint32_t csum = ul_crc32(0xF2F52010, csummed, csum_off);
   82|       |
   83|     43|	return blkid_probe_verify_csum(pr, csum, expected);
   84|     43|}

hfs.c:probe_hfs:
  156|    421|{
  157|    421|	const struct hfs_mdb	*hfs;
  158|    421|	int size;
  159|       |
  160|    421|	hfs = blkid_probe_get_sb(pr, mag, struct hfs_mdb);
  ------------------
  |  |  451|    421|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  161|    421|	if (!hfs)
  ------------------
  |  Branch (161:6): [True: 0, False: 421]
  ------------------
  162|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (162:10): [True: 0, False: 0]
  ------------------
  163|       |
  164|    421|	if ((memcmp(hfs->embed_sig, "H+", 2) == 0) ||
  ------------------
  |  Branch (164:6): [True: 13, False: 408]
  ------------------
  165|    408|	    (memcmp(hfs->embed_sig, "HX", 2) == 0))
  ------------------
  |  Branch (165:6): [True: 130, False: 278]
  ------------------
  166|    143|		return 1;	/* Not hfs, but an embedded HFS+ */
  167|       |
  168|    278|	size = be32_to_cpu(hfs->al_blk_size);
  ------------------
  |  |  141|    278|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  169|    278|	if (!size || (size & (HFS_SECTOR_SIZE - 1))) {
  ------------------
  |  |   28|    237|#define HFS_SECTOR_SIZE         512
  ------------------
  |  Branch (169:6): [True: 41, False: 237]
  |  Branch (169:15): [True: 217, False: 20]
  ------------------
  170|    258|		DBG(LOWPROBE, ul_debug("\tbad allocation size - ignore"));
  ------------------
  |  |  358|    258|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    258|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    258|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    258|	do { \
  |  |  |  |  |  |  |  |   76|    258|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    258|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    258|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 258]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    258|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 258]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    258|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    258|		x; \
  |  |  |  |  |  |   85|    258|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  171|    258|		return 1;
  172|    258|	}
  173|       |
  174|     20|	hfs_set_uuid(pr, hfs->finder_info.id, sizeof(hfs->finder_info.id));
  175|       |
  176|     20|	size = hfs->label_len;
  177|     20|	if ((size_t) size > sizeof(hfs->label))
  ------------------
  |  Branch (177:6): [True: 10, False: 10]
  ------------------
  178|     10|		size = sizeof(hfs->label);
  179|     20|	blkid_probe_set_label(pr, hfs->label, size);
  180|     20|	return 0;
  181|    278|}
hfs.c:hfs_set_uuid:
  134|    156|{
  135|    156|	static unsigned char const hash_init[UL_MD5LENGTH] = {
  136|    156|		0xb3, 0xe2, 0x0f, 0x39, 0xf2, 0x92, 0x11, 0xd6,
  137|    156|		0x97, 0xa4, 0x00, 0x30, 0x65, 0x43, 0xec, 0xac
  138|    156|	};
  139|    156|	unsigned char uuid[UL_MD5LENGTH];
  140|    156|	struct UL_MD5Context md5c;
  141|       |
  142|    156|	if (memcmp(hfs_info, "\0\0\0\0\0\0\0\0", len) == 0)
  ------------------
  |  Branch (142:6): [True: 39, False: 117]
  ------------------
  143|     39|		return -1;
  144|       |
  145|    117|	ul_MD5Init(&md5c);
  146|    117|	ul_MD5Update(&md5c, hash_init, UL_MD5LENGTH);
  ------------------
  |  |   10|    117|#define UL_MD5LENGTH 16
  ------------------
  147|    117|	ul_MD5Update(&md5c, hfs_info, len);
  148|    117|	ul_MD5Final(uuid, &md5c);
  149|       |
  150|    117|	uuid[6] = 0x30 | (uuid[6] & 0x0f);
  151|    117|	uuid[8] = 0x80 | (uuid[8] & 0x3f);
  152|    117|	return blkid_probe_set_uuid(pr, uuid);
  153|    156|}
hfs.c:probe_hfsplus:
  184|    783|{
  185|    783|	struct hfsplus_extent extents[HFSPLUS_EXTENT_COUNT];
  186|    783|	const struct hfsplus_bnode_descriptor *descr;
  187|    783|	const struct hfsplus_bheader_record *bnode;
  188|    783|	const struct hfsplus_catalog_key *key;
  189|    783|	const struct hfsplus_vol_header *hfsplus;
  190|    783|	const struct hfs_mdb *sbd;
  191|    783|	unsigned int alloc_block_size;
  192|    783|	unsigned int alloc_first_block;
  193|    783|	unsigned int embed_first_block;
  194|    783|	uint64_t off = 0;
  195|    783|	unsigned int blocksize;
  196|    783|	unsigned int cat_block;
  197|    783|	unsigned int ext_block_start = 0;
  198|    783|	unsigned int ext_block_count;
  199|    783|	unsigned int record_count;
  200|    783|	unsigned int leaf_node_head;
  201|    783|	unsigned int leaf_node_count;
  202|    783|	unsigned int leaf_node_size;
  203|    783|	uint64_t leaf_block;
  204|    783|	int ext;
  205|    783|	uint64_t leaf_off;
  206|    783|	const unsigned char *buf;
  207|       |
  208|    783|	sbd = blkid_probe_get_sb(pr, mag, struct hfs_mdb);
  ------------------
  |  |  451|    783|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  209|    783|	if (!sbd)
  ------------------
  |  Branch (209:6): [True: 0, False: 783]
  ------------------
  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|    783|	if (memcmp(sbd->signature, "BD", 2) == 0) {
  ------------------
  |  Branch (213:6): [True: 421, False: 362]
  ------------------
  214|    421|		if ((memcmp(sbd->embed_sig, "H+", 2) != 0) &&
  ------------------
  |  Branch (214:7): [True: 408, False: 13]
  ------------------
  215|    408|		    (memcmp(sbd->embed_sig, "HX", 2) != 0))
  ------------------
  |  Branch (215:7): [True: 278, False: 130]
  ------------------
  216|       |			/* This must be an HFS volume, so fail */
  217|    278|			return 1;
  218|       |
  219|    143|		alloc_block_size = be32_to_cpu(sbd->al_blk_size);
  ------------------
  |  |  141|    143|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  220|    143|		if (alloc_block_size < HFSPLUS_SECTOR_SIZE ||
  ------------------
  |  |  131|    286|#define HFSPLUS_SECTOR_SIZE        512
  ------------------
  |  Branch (220:7): [True: 26, False: 117]
  ------------------
  221|    117|		    alloc_block_size % HFSPLUS_SECTOR_SIZE)
  ------------------
  |  |  131|    117|#define HFSPLUS_SECTOR_SIZE        512
  ------------------
  |  Branch (221:7): [True: 42, False: 75]
  ------------------
  222|     68|		    return 1;
  223|       |
  224|     75|		alloc_first_block = be16_to_cpu(sbd->al_bl_st);
  ------------------
  |  |  140|     75|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  225|     75|		embed_first_block = be16_to_cpu(sbd->embed_startblock);
  ------------------
  |  |  140|     75|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  226|     75|		off = ((uint64_t) alloc_first_block * 512) +
  227|     75|			((uint64_t) embed_first_block * alloc_block_size);
  228|       |
  229|     75|		buf = blkid_probe_get_buffer(pr,
  230|     75|				off + (mag->kboff * 1024),
  231|     75|				sizeof(struct hfsplus_vol_header));
  232|     75|		hfsplus = (const struct hfsplus_vol_header *) buf;
  233|       |
  234|     75|	} else
  235|    362|		hfsplus = blkid_probe_get_sb(pr, mag,
  ------------------
  |  |  451|    362|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  236|    783|				struct hfsplus_vol_header);
  237|       |
  238|    437|	if (!hfsplus)
  ------------------
  |  Branch (238:6): [True: 11, False: 426]
  ------------------
  239|     11|		return errno ? -errno : 1;
  ------------------
  |  Branch (239:10): [True: 0, False: 11]
  ------------------
  240|       |
  241|    426|	if ((memcmp(hfsplus->signature, "H+", 2) != 0) &&
  ------------------
  |  Branch (241:6): [True: 343, False: 83]
  ------------------
  242|    343|	    (memcmp(hfsplus->signature, "HX", 2) != 0))
  ------------------
  |  Branch (242:6): [True: 64, False: 279]
  ------------------
  243|     64|		return 1;
  244|       |
  245|       |	/* Verify blocksize is initialized */
  246|    362|	blocksize = be32_to_cpu(hfsplus->blocksize);
  ------------------
  |  |  141|    362|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  247|    362|	if (blocksize < HFSPLUS_SECTOR_SIZE || !is_power_of_2(blocksize))
  ------------------
  |  |  131|    724|#define HFSPLUS_SECTOR_SIZE        512
  ------------------
  |  Branch (247:6): [True: 26, False: 336]
  |  Branch (247:41): [True: 80, False: 256]
  ------------------
  248|    106|		return 1;
  249|       |
  250|       |	/* Save extends (hfsplus buffer may be later overwritten) */
  251|    256|	memcpy(extents, hfsplus->cat_file.extents, sizeof(extents));
  252|       |
  253|       |	/* Make sure start_block is properly initialized */
  254|    256|	cat_block = be32_to_cpu(extents[0].start_block);
  ------------------
  |  |  141|    256|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  255|    256|	if (off + ((uint64_t) cat_block * blocksize) > pr->size)
  ------------------
  |  Branch (255:6): [True: 120, False: 136]
  ------------------
  256|    120|		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|    515|	for (ext = 0; ext < HFSPLUS_EXTENT_COUNT; ext++) {
  ------------------
  |  |   94|    515|#define HFSPLUS_EXTENT_COUNT		8
  ------------------
  |  Branch (282:16): [True: 482, False: 33]
  ------------------
  283|    482|		ext_block_start = be32_to_cpu(extents[ext].start_block);
  ------------------
  |  |  141|    482|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  284|    482|		ext_block_count = be32_to_cpu(extents[ext].block_count);
  ------------------
  |  |  141|    482|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  285|    482|		if (ext_block_count == 0)
  ------------------
  |  Branch (285:7): [True: 19, False: 463]
  ------------------
  286|     19|			return 0;
  287|       |
  288|       |		/* this is our extent */
  289|    463|		if (leaf_block < ext_block_count)
  ------------------
  |  Branch (289:7): [True: 64, False: 399]
  ------------------
  290|     64|			break;
  291|       |
  292|    399|		leaf_block -= ext_block_count;
  293|    399|	}
  294|     97|	if (ext == HFSPLUS_EXTENT_COUNT)
  ------------------
  |  |   94|     97|#define HFSPLUS_EXTENT_COUNT		8
  ------------------
  |  Branch (294:6): [True: 33, False: 64]
  ------------------
  295|     33|		return 0;
  296|       |
  297|     64|	leaf_off = ((uint64_t) ext_block_start + leaf_block) * blocksize;
  298|       |
  299|     64|	buf = blkid_probe_get_buffer(pr,
  300|     64|				(uint64_t) off + leaf_off,
  301|     64|				leaf_node_size);
  302|     64|	if (!buf)
  ------------------
  |  Branch (302:6): [True: 27, False: 37]
  ------------------
  303|     27|		return errno ? -errno : 0;
  ------------------
  |  Branch (303:10): [True: 0, False: 27]
  ------------------
  304|       |
  305|     37|	descr = (struct hfsplus_bnode_descriptor *) buf;
  306|     37|	record_count = be16_to_cpu(descr->num_recs);
  ------------------
  |  |  140|     37|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  307|     37|	if (record_count == 0)
  ------------------
  |  Branch (307:6): [True: 3, False: 34]
  ------------------
  308|      3|		return 0;
  309|       |
  310|     34|	if (descr->type != HFS_NODE_LEAF)
  ------------------
  |  |   61|     34|#define HFS_NODE_LEAF			0xff
  ------------------
  |  Branch (310:6): [True: 8, False: 26]
  ------------------
  311|      8|		return 0;
  312|       |
  313|     26|	key = (struct hfsplus_catalog_key *)
  314|     26|		&buf[sizeof(struct hfsplus_bnode_descriptor)];
  315|       |
  316|     26|	if (be32_to_cpu(key->parent_id) != HFSPLUS_POR_CNID ||
  ------------------
  |  |  141|     26|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              	if (be32_to_cpu(key->parent_id) != HFSPLUS_POR_CNID ||
  ------------------
  |  |   62|     52|#define HFSPLUS_POR_CNID		1
  ------------------
  |  Branch (316:6): [True: 21, False: 5]
  ------------------
  317|      5|	    be16_to_cpu(key->unicode_len) > 255)
  ------------------
  |  |  140|      5|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  |  Branch (317:6): [True: 2, False: 3]
  ------------------
  318|     23|		return 0;
  319|       |
  320|      3|	blkid_probe_set_utf8label(pr, key->unicode,
  321|       |			be16_to_cpu(key->unicode_len) * 2,
  ------------------
  |  |  140|      3|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  322|      3|			UL_ENCODE_UTF16BE);
  323|      3|	return 0;
  324|     26|}

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

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

iso9660.c:probe_iso9660:
  230|    717|{
  231|    717|	struct boot_record *boot = NULL;
  232|    717|	struct iso_volume_descriptor *pvd = NULL;
  233|    717|	struct iso_volume_descriptor *joliet = NULL;
  234|       |	/* space for merge_utf16be_ascii(ISO_ID_BUFSIZ bytes) */
  235|    717|	unsigned char buf[ISO_MAX_FIELDSIZ * 5 / 2];
  236|    717|	const struct hs_date *modified;
  237|    717|	const struct hs_date *created;
  238|    717|	unsigned char modified_offset;
  239|    717|	unsigned char created_offset;
  240|    717|	size_t len;
  241|    717|	int is_hs;
  242|    717|	int is_unicode_empty;
  243|    717|	int is_ascii_hs_empty;
  244|    717|	int is_ascii_iso_empty;
  245|    717|	int i;
  246|    717|	uint64_t off;
  247|       |
  248|    717|	if (blkid_probe_get_hint(pr, mag->hoff, &off) < 0)
  ------------------
  |  Branch (248:6): [True: 717, False: 0]
  ------------------
  249|    717|		off = 0;
  250|       |
  251|    717|	if (off % ISO_SECTOR_SIZE)
  ------------------
  |  |  113|    717|#define ISO_SECTOR_SIZE			0x800
  ------------------
  |  Branch (251:6): [True: 0, False: 717]
  ------------------
  252|      0|		return 1;
  253|       |
  254|    717|	is_hs = (strcmp(mag->magic, "CDROM") == 0);
  255|       |
  256|  9.84k|	for (i = 0, off += ISO_SUPERBLOCK_OFFSET; i < ISO_VD_MAX && (!boot || !pvd || (!is_hs && !joliet)); i++, off += ISO_SECTOR_SIZE) {
  ------------------
  |  |  112|    717|#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|  19.6k|#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|  9.12k|#define ISO_SECTOR_SIZE			0x800
  ------------------
  |  Branch (256:44): [True: 9.47k, False: 369]
  |  Branch (256:63): [True: 3.02k, False: 6.44k]
  |  Branch (256:72): [True: 4.22k, False: 2.22k]
  |  Branch (256:81): [True: 2.09k, False: 127]
  |  Branch (256:91): [True: 2.02k, False: 69]
  ------------------
  257|  9.28k|		const unsigned char *desc =
  258|  9.28k|			blkid_probe_get_buffer(pr,
  259|  9.28k|					off + (is_hs ? 8 : 0), /* High Sierra has 8 bytes before descriptor with Volume Descriptor LBN value */
  ------------------
  |  Branch (259:13): [True: 2.00k, False: 7.27k]
  ------------------
  260|  9.28k|					max(sizeof(struct boot_record),
  ------------------
  |  |  214|  9.28k|# define max(x, y) __extension__ ({		\
  |  |  215|  9.28k|	__typeof__(x) _max1 = (x);		\
  |  |  216|  9.28k|	__typeof__(y) _max2 = (y);		\
  |  |  217|  9.28k|	(void) (&_max1 == &_max2);		\
  |  |  218|  9.28k|	_max1 > _max2 ? _max1 : _max2; })
  |  |  ------------------
  |  |  |  Branch (218:2): [True: 0, False: 9.28k]
  |  |  ------------------
  ------------------
  261|  9.28k|					    sizeof(struct iso_volume_descriptor)));
  262|       |
  263|  9.28k|		if (desc == NULL || desc[0] == ISO_VD_END)
  ------------------
  |  |  117|  9.28k|#define ISO_VD_END			0xff
  ------------------
  |  Branch (263:7): [True: 0, False: 9.28k]
  |  Branch (263:23): [True: 152, False: 9.12k]
  ------------------
  264|    152|			break;
  265|  9.12k|		else if (!boot && desc[0] == ISO_VD_BOOT_RECORD)
  ------------------
  |  |  114|  3.01k|#define ISO_VD_BOOT_RECORD		0x0
  ------------------
  |  Branch (265:12): [True: 3.01k, False: 6.11k]
  |  Branch (265:21): [True: 667, False: 2.34k]
  ------------------
  266|    667|			boot = (struct boot_record *)desc;
  267|  8.46k|		else if (!pvd && desc[0] == ISO_VD_PRIMARY)
  ------------------
  |  |  115|  6.23k|#define ISO_VD_PRIMARY			0x1
  ------------------
  |  Branch (267:12): [True: 6.23k, False: 2.22k]
  |  Branch (267:20): [True: 513, False: 5.72k]
  ------------------
  268|    513|			pvd = (struct iso_volume_descriptor *)desc;
  269|  7.94k|		else if (!is_hs && !joliet && desc[0] == ISO_VD_SUPPLEMENTARY) {
  ------------------
  |  |  116|  6.12k|#define ISO_VD_SUPPLEMENTARY		0x2
  ------------------
  |  Branch (269:12): [True: 6.28k, False: 1.66k]
  |  Branch (269:22): [True: 6.12k, False: 164]
  |  Branch (269:33): [True: 723, False: 5.40k]
  ------------------
  270|    723|			joliet = (struct iso_volume_descriptor *)desc;
  271|    723|			if (memcmp(joliet->escape_sequences, "%/@", 3) != 0 &&
  ------------------
  |  Branch (271:8): [True: 699, False: 24]
  ------------------
  272|    699|			    memcmp(joliet->escape_sequences, "%/C", 3) != 0 &&
  ------------------
  |  Branch (272:8): [True: 680, False: 19]
  ------------------
  273|    680|			    memcmp(joliet->escape_sequences, "%/E", 3) != 0)
  ------------------
  |  Branch (273:8): [True: 628, False: 52]
  ------------------
  274|    628|				joliet = NULL;
  275|    723|		}
  276|  9.28k|	}
  277|       |
  278|    717|	if (!pvd)
  ------------------
  |  Branch (278:6): [True: 204, False: 513]
  ------------------
  279|    204|		return errno ? -errno : 1;
  ------------------
  |  Branch (279:10): [True: 0, False: 204]
  ------------------
  280|       |
  281|    513|	uint16_t logical_block_size = isonum_723(pvd->logical_block_size, false);
  282|    513|	uint32_t space_size = isonum_733(pvd->space_size, false);
  283|       |
  284|    513|	if (logical_block_size == 0)
  ------------------
  |  Branch (284:6): [True: 81, False: 432]
  ------------------
  285|     81|		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|    432|	{
  297|    432|		const unsigned char *rdr = is_hs ?
  ------------------
  |  Branch (297:30): [True: 119, False: 313]
  ------------------
  298|    313|			pvd->hs.root_dir_record : pvd->iso.root_dir_record;
  299|    432|		uint32_t root_lba = isonum_731(rdr + 2);
  300|    432|		uint32_t root_len = isonum_731(rdr + 10);
  301|    432|		uint64_t root_off = (uint64_t) root_lba * logical_block_size;
  302|    432|		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|    432|		if (root_len < 34)
  ------------------
  |  Branch (310:7): [True: 35, False: 397]
  ------------------
  311|     35|			return 1;
  312|       |
  313|    397|		rootdata = blkid_probe_get_buffer(pr, root_off,
  314|    397|				root_len < 2048 ? root_len : 2048);
  ------------------
  |  Branch (314:5): [True: 44, False: 353]
  ------------------
  315|    397|		if (!rootdata)
  ------------------
  |  Branch (315:7): [True: 181, False: 216]
  ------------------
  316|    181|			return errno ? -errno : 1;
  ------------------
  |  Branch (316:11): [True: 0, False: 181]
  ------------------
  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|    216|		if (rootdata[0] < 34 ||
  ------------------
  |  Branch (324:7): [True: 27, False: 189]
  ------------------
  325|    189|		    rootdata[32] != 1 ||
  ------------------
  |  Branch (325:7): [True: 24, False: 165]
  ------------------
  326|    165|		    rootdata[33] != 0x00 ||
  ------------------
  |  Branch (326:7): [True: 3, False: 162]
  ------------------
  327|    162|		    isonum_731(rootdata + 2) != root_lba) {
  ------------------
  |  Branch (327:7): [True: 71, False: 91]
  ------------------
  328|    125|			DBG(LOWPROBE, ul_debug("ISO9660: root dir validation "
  ------------------
  |  |  358|    125|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    125|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    125|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    125|	do { \
  |  |  |  |  |  |  |  |   76|    125|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    125|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    125|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 125]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    125|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 125]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    125|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    125|		x; \
  |  |  |  |  |  |   85|    125|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  329|    125|				"failed (false positive CD001 signature?)"));
  330|    125|			return 1;
  331|    125|		}
  332|    216|	}
  333|       |
  334|     91|	blkid_probe_set_fsblocksize(pr, logical_block_size);
  335|     91|	blkid_probe_set_block_size(pr, logical_block_size);
  336|     91|	blkid_probe_set_fssize(pr, (uint64_t) space_size * logical_block_size);
  337|       |
  338|     91|	if (joliet && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->system_id, pvd->system_id, sizeof(pvd->system_id))) != 0)
  ------------------
  |  Branch (338:6): [True: 34, False: 57]
  |  Branch (338:16): [True: 0, False: 34]
  ------------------
  339|      0|		blkid_probe_set_utf8_id_label(pr, "SYSTEM_ID", buf, len, UL_ENCODE_UTF16BE);
  340|     91|	else if (joliet)
  ------------------
  |  Branch (340:11): [True: 34, False: 57]
  ------------------
  341|     34|		blkid_probe_set_utf8_id_label(pr, "SYSTEM_ID", joliet->system_id, sizeof(joliet->system_id), UL_ENCODE_UTF16BE);
  342|     57|	else
  343|     57|		blkid_probe_set_id_label(pr, "SYSTEM_ID", pvd->system_id, sizeof(pvd->system_id));
  344|       |
  345|     91|	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: 34, False: 57]
  |  Branch (345:16): [True: 1, False: 33]
  ------------------
  346|      1|		blkid_probe_set_utf8_id_label(pr, "VOLUME_SET_ID", buf, len, UL_ENCODE_UTF16BE);
  347|     90|	else if (joliet)
  ------------------
  |  Branch (347:11): [True: 33, False: 57]
  ------------------
  348|     33|		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|     57|	else if (is_hs)
  ------------------
  |  Branch (349:11): [True: 35, False: 22]
  ------------------
  350|     35|		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|     91|	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: 56, False: 35]
  |  Branch (354:33): [True: 14, False: 21]
  |  Branch (354:101): [True: 1, False: 20]
  ------------------
  355|     91|	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: 35, False: 56]
  |  Branch (355:33): [True: 13, False: 43]
  |  Branch (355:103): [True: 0, False: 43]
  ------------------
  356|     91|	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: 57, False: 34]
  |  Branch (356:33): [True: 0, False: 34]
  |  Branch (356:118): [True: 21, False: 13]
  |  Branch (356:157): [True: 0, False: 21]
  ------------------
  357|     91|	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: 34, False: 57]
  |  Branch (357:27): [True: 24, False: 10]
  |  Branch (357:50): [True: 0, False: 24]
  ------------------
  358|      0|		blkid_probe_set_utf8_id_label(pr, "PUBLISHER_ID", buf, len, UL_ENCODE_UTF16BE);
  359|     91|	else if (!is_unicode_empty)
  ------------------
  |  Branch (359:11): [True: 34, False: 57]
  ------------------
  360|     34|		blkid_probe_set_utf8_id_label(pr, "PUBLISHER_ID", joliet->iso.publisher_id, sizeof(joliet->iso.publisher_id), UL_ENCODE_UTF16BE);
  361|     57|	else if (!is_ascii_hs_empty)
  ------------------
  |  Branch (361:11): [True: 20, False: 37]
  ------------------
  362|     20|		blkid_probe_set_id_label(pr, "PUBLISHER_ID", pvd->hs.publisher_id, sizeof(pvd->hs.publisher_id));
  363|     37|	else if (!is_ascii_iso_empty)
  ------------------
  |  Branch (363:11): [True: 19, False: 18]
  ------------------
  364|     19|		blkid_probe_set_id_label(pr, "PUBLISHER_ID", pvd->iso.publisher_id, sizeof(pvd->iso.publisher_id));
  365|       |
  366|     91|	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: 56, False: 35]
  |  Branch (366:33): [True: 12, False: 23]
  |  Branch (366:109): [True: 0, False: 23]
  ------------------
  367|     91|	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: 35, False: 56]
  |  Branch (367:33): [True: 12, False: 44]
  |  Branch (367:111): [True: 0, False: 44]
  ------------------
  368|     91|	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: 57, False: 34]
  |  Branch (368:33): [True: 0, False: 34]
  |  Branch (368:126): [True: 24, False: 10]
  |  Branch (368:169): [True: 0, False: 24]
  ------------------
  369|     91|	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: 34, False: 57]
  |  Branch (369:27): [True: 27, False: 7]
  |  Branch (369:50): [True: 0, False: 27]
  ------------------
  370|      0|		blkid_probe_set_utf8_id_label(pr, "DATA_PREPARER_ID", buf, len, UL_ENCODE_UTF16BE);
  371|     91|	else if (!is_unicode_empty)
  ------------------
  |  Branch (371:11): [True: 34, False: 57]
  ------------------
  372|     34|		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|     57|	else if (!is_ascii_hs_empty)
  ------------------
  |  Branch (373:11): [True: 23, False: 34]
  ------------------
  374|     23|		blkid_probe_set_id_label(pr, "DATA_PREPARER_ID", pvd->hs.data_preparer_id, sizeof(pvd->hs.data_preparer_id));
  375|     34|	else if (!is_ascii_iso_empty)
  ------------------
  |  Branch (375:11): [True: 17, False: 17]
  ------------------
  376|     17|		blkid_probe_set_id_label(pr, "DATA_PREPARER_ID", pvd->iso.data_preparer_id, sizeof(pvd->iso.data_preparer_id));
  377|       |
  378|     91|	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: 56, False: 35]
  |  Branch (378:33): [True: 8, False: 27]
  |  Branch (378:105): [True: 1, False: 26]
  ------------------
  379|     91|	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: 35, False: 56]
  |  Branch (379:33): [True: 12, False: 44]
  |  Branch (379:107): [True: 1, False: 43]
  ------------------
  380|     91|	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: 57, False: 34]
  |  Branch (380:33): [True: 0, False: 34]
  |  Branch (380:122): [True: 19, False: 15]
  |  Branch (380:163): [True: 0, False: 19]
  ------------------
  381|     91|	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: 34, False: 57]
  |  Branch (381:27): [True: 26, False: 8]
  |  Branch (381:50): [True: 0, False: 26]
  ------------------
  382|      0|		blkid_probe_set_utf8_id_label(pr, "APPLICATION_ID", buf, len, UL_ENCODE_UTF16BE);
  383|     91|	else if (!is_unicode_empty)
  ------------------
  |  Branch (383:11): [True: 34, False: 57]
  ------------------
  384|     34|		blkid_probe_set_utf8_id_label(pr, "APPLICATION_ID", joliet->iso.application_id, sizeof(joliet->iso.application_id), UL_ENCODE_UTF16BE);
  385|     57|	else if (!is_ascii_hs_empty)
  ------------------
  |  Branch (385:11): [True: 26, False: 31]
  ------------------
  386|     26|		blkid_probe_set_id_label(pr, "APPLICATION_ID", pvd->hs.application_id, sizeof(pvd->hs.application_id));
  387|     31|	else if (!is_ascii_iso_empty)
  ------------------
  |  Branch (387:11): [True: 17, False: 14]
  ------------------
  388|     17|		blkid_probe_set_id_label(pr, "APPLICATION_ID", pvd->iso.application_id, sizeof(pvd->iso.application_id));
  389|       |
  390|     91|	if (is_hs) {
  ------------------
  |  Branch (390:6): [True: 35, False: 56]
  ------------------
  391|     35|		modified = &pvd->hs.modified;
  392|     35|		created = &pvd->hs.created;
  393|     35|		modified_offset = 0;
  394|     35|		created_offset = 0;
  395|     56|	} else {
  396|     56|		modified = &pvd->iso.modified.common;
  397|     56|		created = &pvd->iso.created.common;
  398|     56|		modified_offset = pvd->iso.modified.offset;
  399|     56|		created_offset = pvd->iso.created.offset;
  400|     56|	}
  401|       |
  402|       |	/* create an UUID using the modified/created date */
  403|     91|	if (! probe_iso9660_set_uuid(pr, modified, modified_offset))
  ------------------
  |  Branch (403:6): [True: 4, False: 87]
  ------------------
  404|      4|		probe_iso9660_set_uuid(pr, created, created_offset);
  405|       |
  406|     91|	if (boot)
  ------------------
  |  Branch (406:6): [True: 84, False: 7]
  ------------------
  407|     84|		blkid_probe_set_id_label(pr, "BOOT_SYSTEM_ID",
  408|     84|					boot->boot_system_id,
  409|     84|					sizeof(boot->boot_system_id));
  410|       |
  411|     91|	if (joliet)
  ------------------
  |  Branch (411:6): [True: 34, False: 57]
  ------------------
  412|     34|		blkid_probe_set_version(pr, "Joliet Extension");
  413|     57|	else if (is_hs)
  ------------------
  |  Branch (413:11): [True: 35, False: 22]
  ------------------
  414|     35|		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|     91|	if (joliet && (len = merge_utf16be_ascii(buf, sizeof(buf), joliet->volume_id, pvd->volume_id, sizeof(pvd->volume_id))) != 0)
  ------------------
  |  Branch (422:6): [True: 34, False: 57]
  |  Branch (422:16): [True: 1, False: 33]
  ------------------
  423|      1|		blkid_probe_set_utf8label(pr, buf, len, UL_ENCODE_UTF16BE);
  424|     90|	else if (joliet)
  ------------------
  |  Branch (424:11): [True: 33, False: 57]
  ------------------
  425|     33|		blkid_probe_set_utf8label(pr, joliet->volume_id, sizeof(joliet->volume_id), UL_ENCODE_UTF16BE);
  426|     57|	else
  427|     57|		blkid_probe_set_label(pr, pvd->volume_id, sizeof(pvd->volume_id));
  428|       |
  429|     91|	return 0;
  430|    216|}
iso9660.c:merge_utf16be_ascii:
  195|    179|{
  196|    179|	size_t o, a, u;
  197|       |
  198|    457|	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: 455, False: 2]
  |  Branch (198:43): [True: 455, False: 0]
  |  Branch (198:54): [True: 455, False: 0]
  ------------------
  199|       |		/* Surrogate pair with code point above U+FFFF */
  200|    455|		if (utf16[u] >= 0xD8 && utf16[u] <= 0xDB && u + 3 < len &&
  ------------------
  |  Branch (200:7): [True: 20, False: 435]
  |  Branch (200:27): [True: 5, False: 15]
  |  Branch (200:47): [True: 5, False: 0]
  ------------------
  201|      5|		    utf16[u + 2] >= 0xDC && utf16[u + 2] <= 0xDF) {
  ------------------
  |  Branch (201:7): [True: 1, False: 4]
  |  Branch (201:31): [True: 1, False: 0]
  ------------------
  202|      1|			out[o++] = utf16[u++];
  203|      1|			out[o++] = utf16[u++];
  204|      1|		}
  205|       |		/* Value '_' is replacement for non-representable character */
  206|    455|		if (ascii[a] == '_') {
  ------------------
  |  Branch (206:7): [True: 0, False: 455]
  ------------------
  207|      0|			out[o] = utf16[u];
  208|      0|			out[o + 1] = utf16[u + 1];
  209|    455|		} else if (utf16[u] == 0x00 && utf16[u + 1] == '_') {
  ------------------
  |  Branch (209:14): [True: 350, False: 105]
  |  Branch (209:34): [True: 1, False: 349]
  ------------------
  210|      1|			out[o] = 0x00;
  211|      1|			out[o + 1] = ascii[a];
  212|    454|		} else if (utf16[u] == 0x00 && c_toupper(ascii[a]) == c_toupper(utf16[u + 1])) {
  ------------------
  |  Branch (212:14): [True: 349, False: 105]
  |  Branch (212:34): [True: 277, False: 72]
  ------------------
  213|    277|			out[o] = 0x00;
  214|    277|			out[o + 1] = c_isupper(ascii[a]) ? utf16[u + 1] : ascii[a];
  ------------------
  |  Branch (214:17): [True: 0, False: 277]
  ------------------
  215|    277|		} else {
  216|    177|			return 0;
  217|    177|		}
  218|    455|	}
  219|       |
  220|     82|	for (; a < len && o + 1 < out_len; o += 2, a++) {
  ------------------
  |  Branch (220:9): [True: 80, False: 2]
  |  Branch (220:20): [True: 80, False: 0]
  ------------------
  221|     80|		out[o] = 0x00;
  222|     80|		out[o + 1] = ascii[a];
  223|     80|	}
  224|       |
  225|      2|	return o;
  226|    179|}
iso9660.c:is_str_empty:
  168|    273|{
  169|    273|	size_t i;
  170|       |
  171|    273|	if (!str || !*str)
  ------------------
  |  Branch (171:6): [True: 0, False: 273]
  |  Branch (171:14): [True: 65, False: 208]
  ------------------
  172|     65|		return 1;
  173|       |
  174|  2.79k|	for (i = 0; i < len; i++)
  ------------------
  |  Branch (174:14): [True: 2.79k, False: 6]
  ------------------
  175|  2.79k|		if (!isspace(str[i]))
  ------------------
  |  Branch (175:7): [True: 202, False: 2.58k]
  ------------------
  176|    202|			return 0;
  177|      6|	return 1;
  178|    208|}
iso9660.c:is_utf16be_str_empty:
  181|    102|{
  182|    102|	size_t i;
  183|       |
  184|    111|	for (i = 0; i < len; i += 2) {
  ------------------
  |  Branch (184:14): [True: 111, False: 0]
  ------------------
  185|    111|		if (utf16[i] != 0x0 || !isspace(utf16[i + 1]))
  ------------------
  |  Branch (185:7): [True: 42, False: 69]
  |  Branch (185:26): [True: 60, False: 9]
  ------------------
  186|    102|			return 0;
  187|    111|	}
  188|      0|	return 1;
  189|    102|}
iso9660.c:probe_iso9660_set_uuid:
  123|     95|{
  124|     95|	unsigned char buffer[16];
  125|     95|	unsigned int i, zeros = 0;
  126|       |
  127|     95|	buffer[0] = date->year[0];
  128|     95|	buffer[1] = date->year[1];
  129|     95|	buffer[2] = date->year[2];
  130|     95|	buffer[3] = date->year[3];
  131|     95|	buffer[4] = date->month[0];
  132|     95|	buffer[5] = date->month[1];
  133|     95|	buffer[6] = date->day[0];
  134|     95|	buffer[7] = date->day[1];
  135|     95|	buffer[8] = date->hour[0];
  136|     95|	buffer[9] = date->hour[1];
  137|     95|	buffer[10] = date->minute[0];
  138|     95|	buffer[11] = date->minute[1];
  139|     95|	buffer[12] = date->second[0];
  140|     95|	buffer[13] = date->second[1];
  141|     95|	buffer[14] = date->hundredth[0];
  142|     95|	buffer[15] = date->hundredth[1];
  143|       |
  144|       |	/* count the number of zeros ('0') in the date buffer */
  145|  1.61k|	for (i = 0, zeros = 0; i < sizeof(buffer); i++)
  ------------------
  |  Branch (145:25): [True: 1.52k, False: 95]
  ------------------
  146|  1.52k|		if (buffer[i] == '0')
  ------------------
  |  Branch (146:7): [True: 239, False: 1.28k]
  ------------------
  147|    239|			zeros++;
  148|       |
  149|       |	/* due to the iso9660 standard if all date fields are '0' and offset is 0, the date is unset */
  150|     95|	if (zeros == sizeof(buffer) && offset == 0)
  ------------------
  |  Branch (150:6): [True: 8, False: 87]
  |  Branch (150:33): [True: 6, False: 2]
  ------------------
  151|      6|		return 0;
  152|       |
  153|       |	/* generate an UUID using this date and return success */
  154|     89|	blkid_probe_sprintf_uuid (pr, buffer, sizeof(buffer),
  155|     89|		"%c%c%c%c-%c%c-%c%c-%c%c-%c%c-%c%c-%c%c",
  156|     89|		buffer[0], buffer[1], buffer[2], buffer[3],
  157|     89|		buffer[4], buffer[5],
  158|     89|		buffer[6], buffer[7],
  159|     89|		buffer[8], buffer[9],
  160|     89|		buffer[10], buffer[11],
  161|     89|		buffer[12], buffer[13],
  162|     89|		buffer[14], buffer[15]);
  163|       |
  164|     89|	return 1;
  165|     95|}

isw_raid.c:probe_iswraid:
   30|  6.17k|{
   31|  6.17k|	uint64_t off;
   32|  6.17k|	unsigned int sector_size;
   33|  6.17k|	struct isw_metadata *isw;
   34|       |
   35|  6.17k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (35:6): [True: 0, False: 6.17k]
  |  Branch (35:28): [True: 0, False: 0]
  ------------------
   36|      0|		return 1;
   37|       |
   38|  6.17k|	sector_size = blkid_probe_get_sectorsize(pr);
   39|  6.17k|	off = ((pr->size / sector_size) - 2) * sector_size;
   40|       |
   41|  6.17k|	isw = (struct isw_metadata *)blkid_probe_get_buffer(pr,
   42|  6.17k|			off, sizeof(struct isw_metadata));
   43|  6.17k|	if (!isw)
  ------------------
  |  Branch (43:6): [True: 0, False: 6.17k]
  ------------------
   44|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (44:10): [True: 0, False: 0]
  ------------------
   45|       |
   46|  6.17k|	if (memcmp(isw->sig, ISW_SIGNATURE, sizeof(ISW_SIGNATURE)-1) != 0)
  ------------------
  |  |   26|  6.17k|#define ISW_SIGNATURE		"Intel Raid ISM Cfg Sig. "
  ------------------
              	if (memcmp(isw->sig, ISW_SIGNATURE, sizeof(ISW_SIGNATURE)-1) != 0)
  ------------------
  |  |   26|  6.17k|#define ISW_SIGNATURE		"Intel Raid ISM Cfg Sig. "
  ------------------
  |  Branch (46:6): [True: 6.17k, False: 0]
  ------------------
   47|  6.17k|		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|    141|{
   39|    141|	const struct jfs_super_block *js;
   40|       |
   41|    141|	js = blkid_probe_get_sb(pr, mag, struct jfs_super_block);
  ------------------
  |  |  451|    141|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   42|    141|	if (!js)
  ------------------
  |  Branch (42:6): [True: 0, False: 141]
  ------------------
   43|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (43:10): [True: 0, False: 0]
  ------------------
   44|    141|	if (le16_to_cpu(js->js_l2bsize) > 31 || le16_to_cpu(js->js_l2pbsize) > 31)
  ------------------
  |  |  136|    141|#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|     56|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (44:6): [True: 85, False: 56]
  |  Branch (44:42): [True: 10, False: 46]
  ------------------
   45|     95|		return 1;
   46|     46|	if (le32_to_cpu(js->js_bsize) != (1U << le16_to_cpu(js->js_l2bsize)))
  ------------------
  |  |  137|     46|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(js->js_bsize) != (1U << le16_to_cpu(js->js_l2bsize)))
  ------------------
  |  |  136|     46|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (46:6): [True: 32, False: 14]
  ------------------
   47|     32|		return 1;
   48|     14|	if (le32_to_cpu(js->js_pbsize) != (1U << le16_to_cpu(js->js_l2pbsize)))
  ------------------
  |  |  137|     14|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(js->js_pbsize) != (1U << le16_to_cpu(js->js_l2pbsize)))
  ------------------
  |  |  136|     14|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (48:6): [True: 8, False: 6]
  ------------------
   49|      8|		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|  6.17k|{
   75|  6.17k|	uint64_t off;
   76|  6.17k|	const struct jm_metadata *jm;
   77|       |
   78|  6.17k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (78:6): [True: 0, False: 6.17k]
  |  Branch (78:28): [True: 0, False: 0]
  ------------------
   79|      0|		return 1;
   80|       |
   81|  6.17k|	off = ((pr->size / 0x200) - 1) * 0x200;
   82|  6.17k|	jm = (struct jm_metadata *)
   83|  6.17k|		blkid_probe_get_buffer(pr,
   84|  6.17k|				off,
   85|  6.17k|				sizeof(struct jm_metadata));
   86|  6.17k|	if (!jm)
  ------------------
  |  Branch (86:6): [True: 0, False: 6.17k]
  ------------------
   87|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (87:10): [True: 0, False: 0]
  ------------------
   88|       |
   89|  6.17k|	if (memcmp(jm->signature, JM_SIGNATURE, sizeof(JM_SIGNATURE) - 1) != 0)
  ------------------
  |  |   19|  6.17k|#define JM_SIGNATURE		"JM"
  ------------------
              	if (memcmp(jm->signature, JM_SIGNATURE, sizeof(JM_SIGNATURE) - 1) != 0)
  ------------------
  |  |   19|  6.17k|#define JM_SIGNATURE		"JM"
  ------------------
  |  Branch (89:6): [True: 6.17k, False: 0]
  ------------------
   90|  6.17k|		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|  6.18k|{
  245|  6.18k|	const char *ver = NULL;
  246|  6.18k|	int ret = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  6.18k|#define BLKID_PROBE_NONE	1
  ------------------
  247|       |
  248|  6.18k|	if (pr->size > MD_RESERVED_BYTES) {
  ------------------
  |  |   99|  6.18k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  |  Branch (248:6): [True: 6.18k, False: 0]
  ------------------
  249|       |		/* version 0 at the end of the device */
  250|  6.18k|		uint64_t sboff = (pr->size & ~(MD_RESERVED_BYTES - 1))
  ------------------
  |  |   99|  6.18k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  251|  6.18k|			- MD_RESERVED_BYTES;
  ------------------
  |  |   99|  6.18k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  252|  6.18k|		ret = probe_raid0(pr, sboff);
  253|  6.18k|		if (ret < 1)
  ------------------
  |  Branch (253:7): [True: 0, False: 6.18k]
  ------------------
  254|      0|			return ret;	/* error */
  255|       |
  256|       |		/* version 1.0 at the end of the device */
  257|  6.18k|		sboff = (pr->size & ~(0x1000 - 1)) - 0x2000;
  258|  6.18k|		ret = probe_raid1(pr, sboff);
  259|  6.18k|		if (ret < 0)
  ------------------
  |  Branch (259:7): [True: 0, False: 6.18k]
  ------------------
  260|      0|			return ret;	/* error */
  261|  6.18k|		if (ret == 0)
  ------------------
  |  Branch (261:7): [True: 0, False: 6.18k]
  ------------------
  262|      0|			ver = "1.0";
  263|  6.18k|	}
  264|       |
  265|  6.18k|	if (!ver) {
  ------------------
  |  Branch (265:6): [True: 6.18k, False: 0]
  ------------------
  266|       |		/* version 1.1 at the start of the device */
  267|  6.18k|		ret = probe_raid1(pr, 0);
  268|  6.18k|		if (ret == 0)
  ------------------
  |  Branch (268:7): [True: 4, False: 6.17k]
  ------------------
  269|      4|			ver = "1.1";
  270|       |
  271|       |		/* version 1.2 at 4k offset from the start */
  272|  6.17k|		else if (ret == BLKID_PROBE_NONE) {
  ------------------
  |  |  471|  6.17k|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (272:12): [True: 6.17k, False: 0]
  ------------------
  273|  6.17k|			ret = probe_raid1(pr, 0x1000);
  274|  6.17k|			if (ret == 0)
  ------------------
  |  Branch (274:8): [True: 0, False: 6.17k]
  ------------------
  275|      0|				ver = "1.2";
  276|  6.17k|		}
  277|  6.18k|	}
  278|       |
  279|  6.18k|	if (ver) {
  ------------------
  |  Branch (279:6): [True: 4, False: 6.17k]
  ------------------
  280|      4|		blkid_probe_set_version(pr, ver);
  281|      4|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|      4|#define BLKID_PROBE_OK	0
  ------------------
  282|      4|	}
  283|  6.17k|	return ret;
  284|  6.18k|}
linux_raid.c:probe_raid0:
  103|  6.18k|{
  104|  6.18k|	struct mdp0_super_block *mdp0;
  105|  6.18k|	union {
  106|  6.18k|		uint32_t ints[4];
  107|  6.18k|		uint8_t bytes[16];
  108|  6.18k|	} uuid;
  109|  6.18k|	uint32_t ma, mi, pa;
  110|  6.18k|	uint64_t size;
  111|       |
  112|  6.18k|	if (pr->size < MD_RESERVED_BYTES)
  ------------------
  |  |   99|  6.18k|#define MD_RESERVED_BYTES		0x10000
  ------------------
  |  Branch (112:6): [True: 0, False: 6.18k]
  ------------------
  113|      0|		return 1;
  114|  6.18k|	mdp0 = (struct mdp0_super_block *)
  115|  6.18k|			blkid_probe_get_buffer(pr,
  116|  6.18k|				off,
  117|  6.18k|				sizeof(struct mdp0_super_block));
  118|  6.18k|	if (!mdp0)
  ------------------
  |  Branch (118:6): [True: 0, False: 6.18k]
  ------------------
  119|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (119:10): [True: 0, False: 0]
  ------------------
  120|       |
  121|  6.18k|	memset(uuid.ints, 0, sizeof(uuid.ints));
  122|       |
  123|  6.18k|	if (le32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  137|  6.18k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  100|  6.18k|#define MD_SB_MAGIC			0xa92b4efc
  ------------------
  |  Branch (123:6): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|	} else if (be32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  141|  6.18k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
              	} else if (be32_to_cpu(mdp0->md_magic) == MD_SB_MAGIC) {
  ------------------
  |  |  100|  6.18k|#define MD_SB_MAGIC			0xa92b4efc
  ------------------
  |  Branch (135:13): [True: 0, False: 6.18k]
  ------------------
  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|  6.18k|		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|  18.5k|{
  212|  18.5k|	struct mdp1_super_block *mdp1;
  213|       |
  214|  18.5k|	mdp1 = (struct mdp1_super_block *)
  215|  18.5k|			blkid_probe_get_buffer(pr,
  216|  18.5k|				off,
  217|  18.5k|				sizeof(struct mdp1_super_block));
  218|  18.5k|	if (!mdp1)
  ------------------
  |  Branch (218:6): [True: 0, False: 18.5k]
  ------------------
  219|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (219:10): [True: 0, False: 0]
  ------------------
  220|  18.5k|	if (le32_to_cpu(mdp1->magic) != MD_SB_MAGIC)
  ------------------
  |  |  137|  18.5k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(mdp1->magic) != MD_SB_MAGIC)
  ------------------
  |  |  100|  18.5k|#define MD_SB_MAGIC			0xa92b4efc
  ------------------
  |  Branch (220:6): [True: 18.3k, False: 152]
  ------------------
  221|  18.3k|		return 1;
  222|    152|	if (le32_to_cpu(mdp1->major_version) != 1U)
  ------------------
  |  |  137|    152|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (222:6): [True: 22, False: 130]
  ------------------
  223|     22|		return 1;
  224|    130|	if (le64_to_cpu(mdp1->super_offset) != (uint64_t) off >> 9)
  ------------------
  |  |  138|    130|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (224:6): [True: 114, False: 16]
  ------------------
  225|    114|		return 1;
  226|     16|	if (!raid1_verify_csum(pr, off, mdp1))
  ------------------
  |  Branch (226:6): [True: 12, False: 4]
  ------------------
  227|     12|		return 1;
  228|      4|	if (blkid_probe_set_uuid(pr, (unsigned char *) mdp1->set_uuid) != 0)
  ------------------
  |  Branch (228:6): [True: 0, False: 4]
  ------------------
  229|      0|		return 1;
  230|      4|	if (blkid_probe_set_uuid_as(pr,
  ------------------
  |  Branch (230:6): [True: 0, False: 4]
  ------------------
  231|      4|			(unsigned char *) mdp1->device_uuid, "UUID_SUB") != 0)
  232|      0|		return 1;
  233|      4|	if (blkid_probe_set_label(pr, mdp1->set_name,
  ------------------
  |  Branch (233:6): [True: 0, False: 4]
  ------------------
  234|      4|				sizeof(mdp1->set_name)) != 0)
  235|      0|		return 1;
  236|      4|	if (blkid_probe_set_magic(pr, off, sizeof(mdp1->magic),
  ------------------
  |  Branch (236:6): [True: 0, False: 4]
  ------------------
  237|      4|				(unsigned char *) &mdp1->magic))
  238|      0|		return 1;
  239|      4|	return 0;
  240|      4|}
linux_raid.c:raid1_verify_csum:
  187|     16|{
  188|     16|	uint64_t csummed_size = sizeof(struct mdp1_super_block)
  189|     16|		+ (uint64_t) le32_to_cpu(mdp1->max_dev) * sizeof(mdp1->dev_roles[0]);
  ------------------
  |  |  137|     16|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  190|     16|	const unsigned char *csummed = blkid_probe_get_buffer(pr, off, csummed_size);
  191|     16|	if (!csummed)
  ------------------
  |  Branch (191:6): [True: 4, False: 12]
  ------------------
  192|      4|		return 1;
  193|       |
  194|     12|	uint64_t csum = 0;
  195|       |
  196|     12|	csum -= le32_to_cpu(*(uint32_t *) (csummed + offsetof(struct mdp1_super_block, sb_csum)));
  ------------------
  |  |  137|     12|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  197|       |
  198|  7.05M|	while (csummed_size >= 4) {
  ------------------
  |  Branch (198:9): [True: 7.05M, False: 12]
  ------------------
  199|  7.05M|		csum += le32_to_cpu(*(uint32_t *) csummed);
  ------------------
  |  |  137|  7.05M|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  200|  7.05M|		csummed_size -= 4;
  201|  7.05M|		csummed += 4;
  202|  7.05M|	}
  203|     12|	if (csummed_size == 2)
  ------------------
  |  Branch (203:6): [True: 3, False: 9]
  ------------------
  204|      3|		csum += le16_to_cpu(*(uint16_t *) csummed);
  ------------------
  |  |  136|      3|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  205|       |
  206|     12|	csum = (csum >> 32) + (uint32_t) csum;
  207|       |	return blkid_probe_verify_csum(pr, csum, le32_to_cpu(mdp1->sb_csum));
  ------------------
  |  |  137|     12|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  208|     16|}

lsi_raid.c:probe_lsiraid:
   28|  6.17k|{
   29|  6.17k|	uint64_t off;
   30|  6.17k|	struct lsi_metadata *lsi;
   31|       |
   32|  6.17k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (32:6): [True: 0, False: 6.17k]
  |  Branch (32:28): [True: 0, False: 0]
  ------------------
   33|      0|		return 1;
   34|       |
   35|  6.17k|	off = ((pr->size / 0x200) - 1) * 0x200;
   36|  6.17k|	lsi = (struct lsi_metadata *)
   37|  6.17k|		blkid_probe_get_buffer(pr,
   38|  6.17k|				off,
   39|  6.17k|				sizeof(struct lsi_metadata));
   40|  6.17k|	if (!lsi)
  ------------------
  |  Branch (40:6): [True: 0, False: 6.17k]
  ------------------
   41|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (41:10): [True: 0, False: 0]
  ------------------
   42|       |
   43|  6.17k|	if (memcmp(lsi->sig, LSI_SIGNATURE, sizeof(LSI_SIGNATURE)-1) != 0)
  ------------------
  |  |   24|  6.17k|#define LSI_SIGNATURE		"$XIDE$"
  ------------------
              	if (memcmp(lsi->sig, LSI_SIGNATURE, sizeof(LSI_SIGNATURE)-1) != 0)
  ------------------
  |  |   24|  6.17k|#define LSI_SIGNATURE		"$XIDE$"
  ------------------
  |  Branch (43:6): [True: 6.17k, False: 0]
  ------------------
   44|  6.17k|		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|    700|{
   76|    700|	int sector = mag->kboff << 1;
   77|    700|	struct lvm2_pv_label_header *label;
   78|    700|	char uuid[LVM2_ID_LEN + 7];
   79|    700|	const unsigned char *buf;
   80|       |
   81|    700|	buf = blkid_probe_get_buffer(pr,
   82|    700|			mag->kboff << 10,
   83|    700|			512 + LVM2_LABEL_SIZE);
  ------------------
  |  |   41|    700|#define LVM2_LABEL_SIZE 512
  ------------------
   84|    700|	if (!buf)
  ------------------
  |  Branch (84:6): [True: 0, False: 700]
  ------------------
   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|    700|	if (memcmp(buf, "LABELONE", 8) == 0) {
  ------------------
  |  Branch (88:6): [True: 43, False: 657]
  ------------------
   89|     43|		label = (struct lvm2_pv_label_header *) buf;
   90|    657|	} else if (memcmp(buf + 512, "LABELONE", 8) == 0) {
  ------------------
  |  Branch (90:13): [True: 104, False: 553]
  ------------------
   91|    104|		label = (struct lvm2_pv_label_header *)(buf + 512);
   92|    104|		sector++;
   93|    553|	} else {
   94|    553|		return 1;
   95|    553|	}
   96|       |
   97|    147|	if (le64_to_cpu(label->sector_xl) != (unsigned) sector)
  ------------------
  |  |  138|    147|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (97:6): [True: 143, False: 4]
  ------------------
   98|    143|		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|    107|{
  125|    107|	const struct lvm1_pv_label_header *label;
  126|    107|	char uuid[LVM2_ID_LEN + 7];
  127|    107|	unsigned int version;
  128|       |
  129|    107|	label = blkid_probe_get_sb(pr, mag, struct lvm1_pv_label_header);
  ------------------
  |  |  451|    107|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  130|    107|	if (!label)
  ------------------
  |  Branch (130:6): [True: 0, False: 107]
  ------------------
  131|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (131:10): [True: 0, False: 0]
  ------------------
  132|       |
  133|    107|	version = le16_to_cpu(label->version);
  ------------------
  |  |  136|    107|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  134|    107|	if (version != 1 && version != 2)
  ------------------
  |  Branch (134:6): [True: 106, False: 1]
  |  Branch (134:22): [True: 104, False: 2]
  ------------------
  135|    104|		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|    107|}
lvm.c:probe_verity:
  160|     77|{
  161|     77|	const struct verity_sb *sb;
  162|     77|	unsigned int version;
  163|       |
  164|     77|	sb = blkid_probe_get_sb(pr, mag, struct verity_sb);
  ------------------
  |  |  451|     77|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  165|     77|	if (sb == NULL)
  ------------------
  |  Branch (165:6): [True: 0, False: 77]
  ------------------
  166|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (166:10): [True: 0, False: 0]
  ------------------
  167|       |
  168|     77|	version = le32_to_cpu(sb->version);
  ------------------
  |  |  137|     77|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  169|     77|	if (version != 1)
  ------------------
  |  Branch (169:6): [True: 76, False: 1]
  ------------------
  170|     76|		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|     77|}
lvm.c:probe_integrity:
  189|     10|{
  190|     10|	const struct integrity_sb *sb;
  191|       |
  192|     10|	sb = blkid_probe_get_sb(pr, mag, struct integrity_sb);
  ------------------
  |  |  451|     10|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  193|     10|	if (sb == NULL)
  ------------------
  |  Branch (193:6): [True: 0, False: 10]
  ------------------
  194|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (194:10): [True: 0, False: 0]
  ------------------
  195|       |
  196|     10|	if (!sb->version)
  ------------------
  |  Branch (196:6): [True: 3, False: 7]
  ------------------
  197|      3|		return 1;
  198|       |
  199|      7|	blkid_probe_sprintf_version(pr, "%u", sb->version);
  200|      7|	return 0;
  201|     10|}

minix.c:probe_minix:
   76|  1.30k|{
   77|  1.30k|	const unsigned char *ext;
   78|  1.30k|	const unsigned char *erofs;
   79|  1.30k|	const unsigned char *data;
   80|  1.30k|	int version = 0, swabme = 0;
   81|  1.30k|	unsigned long zones, ninodes, imaps, zmaps;
   82|  1.30k|	off_t firstz;
   83|  1.30k|	size_t zone_size;
   84|  1.30k|	unsigned block_size;
   85|       |
   86|  1.30k|	data = blkid_probe_get_buffer(pr, 1024,
   87|  1.30k|			max(sizeof(struct minix_super_block),
  ------------------
  |  |  214|  1.30k|# define max(x, y) __extension__ ({		\
  |  |  215|  1.30k|	__typeof__(x) _max1 = (x);		\
  |  |  216|  1.30k|	__typeof__(y) _max2 = (y);		\
  |  |  217|  1.30k|	(void) (&_max1 == &_max2);		\
  |  |  218|  1.30k|	_max1 > _max2 ? _max1 : _max2; })
  |  |  ------------------
  |  |  |  Branch (218:2): [True: 0, False: 1.30k]
  |  |  ------------------
  ------------------
   88|  1.30k|			    sizeof(struct minix3_super_block)));
   89|  1.30k|	if (!data)
  ------------------
  |  Branch (89:6): [True: 0, False: 1.30k]
  ------------------
   90|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (90:10): [True: 0, False: 0]
  ------------------
   91|  1.30k|	version = get_minix_version(data, &swabme);
   92|  1.30k|	switch (version) {
   93|    746|	case 1:
  ------------------
  |  Branch (93:2): [True: 746, False: 554]
  ------------------
   94|  1.06k|	case 2: {
  ------------------
  |  Branch (94:2): [True: 323, False: 977]
  ------------------
   95|  1.06k|		const struct minix_super_block *sb = (const struct minix_super_block *) data;
   96|       |
   97|  1.06k|		uint16_t state = minix_swab16(swabme, sb->s_state);
  ------------------
  |  |   16|  1.06k|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|  1.06k|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 433, False: 636]
  |  |  ------------------
  ------------------
   98|  1.06k|		if ((state & (MINIX_VALID_FS | MINIX_ERROR_FS)) != state)
  ------------------
  |  |   77|  1.06k|#define MINIX_VALID_FS       0x0001          /* Clean fs. */
  ------------------
              		if ((state & (MINIX_VALID_FS | MINIX_ERROR_FS)) != state)
  ------------------
  |  |   78|  1.06k|#define MINIX_ERROR_FS       0x0002          /* fs has errors. */
  ------------------
  |  Branch (98:7): [True: 549, False: 520]
  ------------------
   99|    549|			return 1;
  100|       |
  101|    520|		zones = version == 2 ? minix_swab32(swabme, sb->s_zones) :
  ------------------
  |  |   17|    117|#define minix_swab32(doit, num)	((uint32_t) (doit ? swab32(num) : num))
  |  |  ------------------
  |  |  |  |  125|    117|#define swab32(x) bswap_32(x)
  |  |  ------------------
  |  |  |  Branch (17:46): [True: 36, False: 81]
  |  |  ------------------
  ------------------
  |  Branch (101:11): [True: 117, False: 403]
  ------------------
  102|    520|				       minix_swab16(swabme, sb->s_nzones);
  ------------------
  |  |   16|    923|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    403|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 206, False: 197]
  |  |  ------------------
  ------------------
  103|    520|		ninodes = minix_swab16(swabme, sb->s_ninodes);
  ------------------
  |  |   16|    520|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    520|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 242, False: 278]
  |  |  ------------------
  ------------------
  104|    520|		imaps   = minix_swab16(swabme, sb->s_imap_blocks);
  ------------------
  |  |   16|    520|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    520|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 242, False: 278]
  |  |  ------------------
  ------------------
  105|    520|		zmaps   = minix_swab16(swabme, sb->s_zmap_blocks);
  ------------------
  |  |   16|    520|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    520|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 242, False: 278]
  |  |  ------------------
  ------------------
  106|    520|		firstz  = minix_swab16(swabme, sb->s_firstdatazone);
  ------------------
  |  |   16|    520|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    520|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 242, False: 278]
  |  |  ------------------
  ------------------
  107|    520|		zone_size = sb->s_log_zone_size;
  108|    520|		block_size = 1024;
  109|    520|		break;
  110|  1.06k|	}
  111|    127|	case 3: {
  ------------------
  |  Branch (111:2): [True: 127, False: 1.17k]
  ------------------
  112|    127|		const struct minix3_super_block *sb = (const struct minix3_super_block *) data;
  113|       |
  114|    127|		zones = minix_swab32(swabme, sb->s_zones);
  ------------------
  |  |   17|    127|#define minix_swab32(doit, num)	((uint32_t) (doit ? swab32(num) : num))
  |  |  ------------------
  |  |  |  |  125|    127|#define swab32(x) bswap_32(x)
  |  |  ------------------
  |  |  |  Branch (17:46): [True: 0, False: 127]
  |  |  ------------------
  ------------------
  115|    127|		ninodes = minix_swab32(swabme, sb->s_ninodes);
  ------------------
  |  |   17|    127|#define minix_swab32(doit, num)	((uint32_t) (doit ? swab32(num) : num))
  |  |  ------------------
  |  |  |  |  125|    127|#define swab32(x) bswap_32(x)
  |  |  ------------------
  |  |  |  Branch (17:46): [True: 0, False: 127]
  |  |  ------------------
  ------------------
  116|    127|		imaps   = minix_swab16(swabme, sb->s_imap_blocks);
  ------------------
  |  |   16|    127|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    127|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 127]
  |  |  ------------------
  ------------------
  117|    127|		zmaps   = minix_swab16(swabme, sb->s_zmap_blocks);
  ------------------
  |  |   16|    127|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    127|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 127]
  |  |  ------------------
  ------------------
  118|    127|		firstz  = minix_swab16(swabme, sb->s_firstdatazone);
  ------------------
  |  |   16|    127|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    127|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 127]
  |  |  ------------------
  ------------------
  119|    127|		zone_size = sb->s_log_zone_size;
  120|    127|		block_size = minix_swab16(swabme, sb->s_blocksize);
  ------------------
  |  |   16|    127|#define minix_swab16(doit, num)	((uint16_t) (doit ? swab16(num) : num))
  |  |  ------------------
  |  |  |  |  124|    127|#define swab16(x) bswap_16(x)
  |  |  ------------------
  |  |  |  Branch (16:46): [True: 0, False: 127]
  |  |  ------------------
  ------------------
  121|       |
  122|    127|		break;
  123|  1.06k|	}
  124|    104|	default:
  ------------------
  |  Branch (124:2): [True: 104, False: 1.19k]
  ------------------
  125|    104|		return 1;
  126|  1.30k|	}
  127|       |
  128|       |	/* sanity checks to be sure that the FS is really minix.
  129|       |	 * see disk-utils/fsck.minix.c read_superblock
  130|       |	 */
  131|    647|	if (zone_size != 0 || ninodes == 0 || ninodes == UINT32_MAX)
  ------------------
  |  Branch (131:6): [True: 179, False: 468]
  |  Branch (131:24): [True: 69, False: 399]
  |  Branch (131:40): [True: 4, False: 395]
  ------------------
  132|    252|		return 1;
  133|    395|	if (imaps * MINIX_BLOCK_SIZE * 8 < ninodes + 1)
  ------------------
  |  |   68|    395|#define MINIX_BLOCK_SIZE     (1 << MINIX_BLOCK_SIZE_BITS)
  |  |  ------------------
  |  |  |  |   67|    395|#define MINIX_BLOCK_SIZE_BITS 10
  |  |  ------------------
  ------------------
  |  Branch (133:6): [True: 232, False: 163]
  ------------------
  134|    232|		return 1;
  135|    163|	if (firstz > (off_t) zones)
  ------------------
  |  Branch (135:6): [True: 26, False: 137]
  ------------------
  136|     26|		return 1;
  137|    137|	if (zmaps * MINIX_BLOCK_SIZE * 8 < zones - firstz + 1)
  ------------------
  |  |   68|    137|#define MINIX_BLOCK_SIZE     (1 << MINIX_BLOCK_SIZE_BITS)
  |  |  ------------------
  |  |  |  |   67|    137|#define MINIX_BLOCK_SIZE_BITS 10
  |  |  ------------------
  ------------------
  |  Branch (137:6): [True: 66, False: 71]
  ------------------
  138|     66|		return 1;
  139|       |
  140|       |	/* unfortunately, some parts of ext3 is sometimes possible to
  141|       |	 * interpreted as minix superblock. So check for extN magic
  142|       |	 * string. (For extN magic string and offsets see ext.c.)
  143|       |	 */
  144|     71|	ext = blkid_probe_get_buffer(pr, 0x400 + 0x38, 2);
  145|     71|	if (!ext)
  ------------------
  |  Branch (145:6): [True: 0, False: 71]
  ------------------
  146|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (146:10): [True: 0, False: 0]
  ------------------
  147|       |
  148|     71|	if (memcmp(ext, "\123\357", 2) == 0)
  ------------------
  |  Branch (148:6): [True: 30, False: 41]
  ------------------
  149|     30|		return 1;
  150|       |
  151|       |	/* erofs superblock starts at 0x400 too, and its inode count field
  152|       |	 * overlaps the minix magic offset, so an erofs image can be
  153|       |	 * misinterpreted as minix. (For erofs magic and offsets see erofs.c.)
  154|       |	 */
  155|     41|	erofs = blkid_probe_get_buffer(pr, 0x400, 4);
  156|     41|	if (!erofs)
  ------------------
  |  Branch (156:6): [True: 0, False: 41]
  ------------------
  157|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (157:10): [True: 0, False: 0]
  ------------------
  158|       |
  159|     41|	if (memcmp(erofs, "\xe2\xe1\xf5\xe0", 4) == 0)
  ------------------
  |  Branch (159:6): [True: 17, False: 24]
  ------------------
  160|     17|		return 1;
  161|       |
  162|     24|	blkid_probe_sprintf_version(pr, "%d", version);
  163|     24|	blkid_probe_set_fsblocksize(pr, block_size);
  164|     24|	blkid_probe_set_block_size(pr, block_size);
  165|     24|	blkid_probe_set_fsendianness(pr, !swabme ?
  ------------------
  |  Branch (165:35): [True: 11, False: 13]
  ------------------
  166|     13|			BLKID_ENDIANNESS_NATIVE : BLKID_ENDIANNESS_OTHER);
  ------------------
  |  |   17|     11|#define BLKID_ENDIANNESS_NATIVE BLKID_ENDIANNESS_LITTLE
  ------------------
              			BLKID_ENDIANNESS_NATIVE : BLKID_ENDIANNESS_OTHER);
  ------------------
  |  |   18|     37|#define BLKID_ENDIANNESS_OTHER BLKID_ENDIANNESS_BIG
  ------------------
  167|     24|	return 0;
  168|     41|}
minix.c:get_minix_version:
   20|  1.30k|{
   21|  1.30k|	const struct minix_super_block *sb = (const struct minix_super_block *) data;
   22|  1.30k|	const struct minix3_super_block *sb3 = (const struct minix3_super_block *) data;
   23|  1.30k|	int version = 0;
   24|  1.30k|	char *endian;
   25|       |
   26|  1.30k|	*other_endian = 0;
   27|       |
   28|  1.30k|	switch (sb->s_magic) {
   29|    228|	case MINIX_SUPER_MAGIC:
  ------------------
  |  |   81|    228|#define MINIX_SUPER_MAGIC    0x137F          /* minix V1 fs, 14 char names */
  ------------------
  |  Branch (29:2): [True: 228, False: 1.07k]
  ------------------
   30|    413|	case MINIX_SUPER_MAGIC2:
  ------------------
  |  |   82|    413|#define MINIX_SUPER_MAGIC2   0x138F          /* minix V1 fs, 30 char names */
  ------------------
  |  Branch (30:2): [True: 185, False: 1.11k]
  ------------------
   31|    413|		version = 1;
   32|    413|		break;
   33|    142|	case MINIX2_SUPER_MAGIC:
  ------------------
  |  |   84|    142|#define MINIX2_SUPER_MAGIC   0x2468	     /* minix V2 fs, 14 char names */
  ------------------
  |  Branch (33:2): [True: 142, False: 1.15k]
  ------------------
   34|    223|	case MINIX2_SUPER_MAGIC2:
  ------------------
  |  |   85|    223|#define MINIX2_SUPER_MAGIC2  0x2478	     /* minix V2 fs, 30 char names */
  ------------------
  |  Branch (34:2): [True: 81, False: 1.21k]
  ------------------
   35|    223|		version = 2;
   36|    223|		break;
   37|    664|	default:
  ------------------
  |  Branch (37:2): [True: 664, False: 636]
  ------------------
   38|    664|		if (sb3->s_magic == MINIX3_SUPER_MAGIC)
  ------------------
  |  |   87|    664|#define MINIX3_SUPER_MAGIC   0x4d5a          /* minix V3 fs (60 char names) */
  ------------------
  |  Branch (38:7): [True: 127, False: 537]
  ------------------
   39|    127|			version = 3;
   40|    664|		break;
   41|  1.30k|	}
   42|       |
   43|  1.30k|	if (!version) {
  ------------------
  |  Branch (43:6): [True: 537, False: 763]
  ------------------
   44|    537|		*other_endian = 1;
   45|       |
   46|    537|		switch (swab16(sb->s_magic)) {
  ------------------
  |  |  124|    537|#define swab16(x) bswap_16(x)
  ------------------
   47|    192|		case MINIX_SUPER_MAGIC:
  ------------------
  |  |   81|    192|#define MINIX_SUPER_MAGIC    0x137F          /* minix V1 fs, 14 char names */
  ------------------
  |  Branch (47:3): [True: 192, False: 345]
  ------------------
   48|    333|		case MINIX_SUPER_MAGIC2:
  ------------------
  |  |   82|    333|#define MINIX_SUPER_MAGIC2   0x138F          /* minix V1 fs, 30 char names */
  ------------------
  |  Branch (48:3): [True: 141, False: 396]
  ------------------
   49|    333|			version = 1;
   50|    333|			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: 533]
  ------------------
   52|    100|		case MINIX2_SUPER_MAGIC2:
  ------------------
  |  |   85|    100|#define MINIX2_SUPER_MAGIC2  0x2478	     /* minix V2 fs, 30 char names */
  ------------------
  |  Branch (52:3): [True: 96, False: 441]
  ------------------
   53|    100|			version = 2;
   54|    100|			break;
   55|    104|		default:
  ------------------
  |  Branch (55:3): [True: 104, False: 433]
  ------------------
   56|    104|			if (sb3->s_magic == MINIX3_SUPER_MAGIC)
  ------------------
  |  |   87|    104|#define MINIX3_SUPER_MAGIC   0x4d5a          /* minix V3 fs (60 char names) */
  ------------------
  |  Branch (56:8): [True: 0, False: 104]
  ------------------
   57|      0|				version = 3;
   58|    104|			break;
   59|    537|		}
   60|    537|	}
   61|  1.30k|	if (!version)
  ------------------
  |  Branch (61:6): [True: 104, False: 1.19k]
  ------------------
   62|    104|		return -1;
   63|       |
   64|       |#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
   65|       |	endian = *other_endian ? "LE" : "BE";
   66|       |#else
   67|  1.19k|	endian = *other_endian ? "BE" : "LE";
  ------------------
  |  Branch (67:11): [True: 433, False: 763]
  ------------------
   68|  1.19k|#endif
   69|  1.19k|	DBG(LOWPROBE, ul_debug("minix version %d detected [%s]", version,
  ------------------
  |  |  358|  1.19k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  1.19k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  1.19k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  1.19k|	do { \
  |  |  |  |  |  |  |  |   76|  1.19k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  1.19k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  1.19k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 1.19k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  1.19k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 1.19k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  1.19k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  1.19k|		x; \
  |  |  |  |  |  |   85|  1.19k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|  1.19k|			       endian));
   71|  1.19k|	return version;
   72|  1.30k|}

mpool.c:probe_mpool:
   28|    103|{
   29|    103|	const struct omf_sb_descriptor *osd;
   30|    103|	uint32_t sb_crc;
   31|       |
   32|    103|	osd = blkid_probe_get_sb(pr, mag, struct omf_sb_descriptor);
  ------------------
  |  |  451|    103|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   33|    103|	if (!osd)
  ------------------
  |  Branch (33:6): [True: 0, False: 103]
  ------------------
   34|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (34:10): [True: 0, False: 0]
  ------------------
   35|       |
   36|    103|	sb_crc = crc32c(~0L, (const void *)osd,
   37|    103|			offsetof(struct omf_sb_descriptor, osb_cksum1));
   38|    103|	sb_crc ^= ~0L;
   39|       |
   40|    103|	if (!blkid_probe_verify_csum(pr, sb_crc, le32_to_cpu(osd->osb_cksum1)))
  ------------------
  |  |  137|    103|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (40:6): [True: 102, False: 1]
  ------------------
   41|    102|		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|    103|}

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

nilfs.c:probe_nilfs2:
  101|  6.12k|{
  102|  6.12k|	struct nilfs_super_block *sb, *sbp, *sbb;
  103|  6.12k|	int valid[2], swp = 0;
  104|  6.12k|	uint64_t magoff;
  105|       |
  106|       |	/* primary */
  107|  6.12k|	sbp = (struct nilfs_super_block *) blkid_probe_get_buffer(
  108|  6.12k|			pr, NILFS_SB_OFFSET, sizeof(struct nilfs_super_block));
  ------------------
  |  |   67|  6.12k|#define NILFS_SB_OFFSET		0x400
  ------------------
  109|  6.12k|	if (!sbp)
  ------------------
  |  Branch (109:6): [True: 0, False: 6.12k]
  ------------------
  110|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (110:10): [True: 0, False: 0]
  ------------------
  111|       |
  112|  6.12k|	valid[0] = nilfs_valid_sb(pr, sbp, 0);
  113|       |
  114|       |
  115|       |	/* backup */
  116|  6.12k|	sbb = (struct nilfs_super_block *) blkid_probe_get_buffer(
  117|  6.12k|			pr, NILFS_SBB_OFFSET(pr->size), sizeof(struct nilfs_super_block));
  ------------------
  |  |   68|  6.12k|#define NILFS_SBB_OFFSET(_sz)	((((_sz) / 0x200) - 8) * 0x200)
  ------------------
  118|  6.12k|	if (!sbb) {
  ------------------
  |  Branch (118:6): [True: 0, False: 6.12k]
  ------------------
  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|  6.12k|		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|  6.12k|	if (!valid[0] && !valid[1])
  ------------------
  |  Branch (135:6): [True: 6.11k, False: 3]
  |  Branch (135:19): [True: 6.11k, False: 0]
  ------------------
  136|  6.11k|		return 1;
  137|       |
  138|      3|	swp = valid[1] && (!valid[0] ||
  ------------------
  |  Branch (138:8): [True: 0, False: 3]
  |  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|      3|	sb = swp ? sbb : sbp;
  ------------------
  |  Branch (141:7): [True: 0, False: 3]
  ------------------
  142|       |
  143|      3|	DBG(LOWPROBE, ul_debug("nilfs2: primary=%d, backup=%d, swap=%d",
  ------------------
  |  |  358|      3|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|      3|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|      3|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|      3|	do { \
  |  |  |  |  |  |  |  |   76|      3|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|      3|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|      3|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|      3|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 3]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|      3|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|      3|		x; \
  |  |  |  |  |  |   85|      3|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  144|      3|				valid[0], valid[1], swp));
  145|       |
  146|      3|	if (*(sb->s_volume_name) != '\0')
  ------------------
  |  Branch (146:6): [True: 2, False: 1]
  ------------------
  147|      2|		blkid_probe_set_label(pr, (unsigned char *) sb->s_volume_name,
  148|      2|				      sizeof(sb->s_volume_name));
  149|       |
  150|      3|	blkid_probe_set_uuid(pr, sb->s_uuid);
  151|      3|	blkid_probe_sprintf_version(pr, "%u", le32_to_cpu(sb->s_rev_level));
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  152|       |
  153|      3|	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|      6|#define NILFS_SB_OFFSET		0x400
  ------------------
  |  Branch (153:11): [True: 0, False: 3]
  ------------------
  154|      3|	magoff += offsetof(struct nilfs_super_block, s_magic);
  155|       |
  156|      3|	if (blkid_probe_set_magic(pr, magoff, sizeof(sb->s_magic),
  ------------------
  |  Branch (156:6): [True: 0, False: 3]
  ------------------
  157|      3|				(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|      3|	if (le32_to_cpu(sb->s_log_block_size) <= 6){
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (162:6): [True: 3, False: 0]
  ------------------
  163|      3|		blkid_probe_set_fsblocksize(pr, 1024U << le32_to_cpu(sb->s_log_block_size));
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  164|      3|		blkid_probe_set_block_size(pr, 1024U << le32_to_cpu(sb->s_log_block_size));
  ------------------
  |  |  137|      3|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  165|      3|	}
  166|       |
  167|      3|	return 0;
  168|      3|}
nilfs.c:nilfs_valid_sb:
   71|  12.2k|{
   72|  12.2k|	static unsigned char sum[4];
   73|  12.2k|	const int sumoff = offsetof(struct nilfs_super_block, s_sum);
   74|  12.2k|	size_t bytes;
   75|  12.2k|	const size_t crc_start = sumoff + 4;
   76|  12.2k|	uint32_t crc;
   77|       |
   78|  12.2k|	if (!sb || le16_to_cpu(sb->s_magic) != NILFS_SB_MAGIC)
  ------------------
  |  |  136|  12.2k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (!sb || le16_to_cpu(sb->s_magic) != NILFS_SB_MAGIC)
  ------------------
  |  |   66|  12.2k|#define NILFS_SB_MAGIC		0x3434
  ------------------
  |  Branch (78:6): [True: 0, False: 12.2k]
  |  Branch (78:13): [True: 12.2k, False: 35]
  ------------------
   79|  12.2k|		return 0;
   80|       |
   81|     35|	if (is_bak && blkid_probe_is_wholedisk(pr) &&
  ------------------
  |  Branch (81:6): [True: 0, False: 35]
  |  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|     35|	bytes = le16_to_cpu(sb->s_bytes);
  ------------------
  |  |  136|     35|#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|     35|	if (bytes < crc_start || bytes > sizeof(struct nilfs_super_block))
  ------------------
  |  Branch (89:6): [True: 5, False: 30]
  |  Branch (89:27): [True: 14, False: 16]
  ------------------
   90|     19|		return 0;
   91|       |
   92|     16|	crc = ul_crc32(le32_to_cpu(sb->s_crc_seed), (unsigned char *)sb, sumoff);
  ------------------
  |  |  137|     16|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   93|     16|	crc = ul_crc32(crc, sum, 4);
   94|     16|	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|     16|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   97|     35|}

blkid_probe_is_ntfs:
  237|    113|{
  238|    113|	const struct blkid_idmag *mag = NULL;
  239|    113|	int rc;
  240|       |
  241|    113|	rc = blkid_probe_get_idmag(pr, &ntfs_idinfo, NULL, &mag);
  242|    113|	if (rc < 0)
  ------------------
  |  Branch (242:6): [True: 0, False: 113]
  ------------------
  243|      0|		return rc;	/* error */
  244|    113|	if (rc != BLKID_PROBE_OK || !mag)
  ------------------
  |  |  465|    226|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (244:6): [True: 71, False: 42]
  |  Branch (244:30): [True: 0, False: 42]
  ------------------
  245|     71|		return 0;
  246|       |
  247|     42|	return __probe_ntfs(pr, mag, 0) == 0 ? 1 : 0;
  ------------------
  |  Branch (247:9): [True: 18, False: 24]
  ------------------
  248|    113|}
ntfs.c:__probe_ntfs:
   82|    597|{
   83|    597|	const struct ntfs_super_block *ns;
   84|    597|	const struct master_file_table_record *mft;
   85|       |
   86|    597|	uint32_t sectors_per_cluster, mft_record_size;
   87|    597|	uint16_t sector_size;
   88|    597|	uint64_t nr_clusters, off, attr_off;
   89|    597|	const unsigned char *buf_mft;
   90|       |
   91|    597|	ns = blkid_probe_get_sb(pr, mag, struct ntfs_super_block);
  ------------------
  |  |  451|    597|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   92|    597|	if (!ns)
  ------------------
  |  Branch (92:6): [True: 0, False: 597]
  ------------------
   93|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (93:10): [True: 0, False: 0]
  ------------------
   94|       |
   95|       |	/*
   96|       |	 * Check bios parameters block
   97|       |	 */
   98|    597|	sector_size = le16_to_cpu(ns->bpb.sector_size);
  ------------------
  |  |  136|    597|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   99|       |
  100|    597|	if (sector_size < 256 || sector_size > 4096 || !is_power_of_2(sector_size))
  ------------------
  |  Branch (100:6): [True: 35, False: 562]
  |  Branch (100:27): [True: 49, False: 513]
  |  Branch (100:49): [True: 15, False: 498]
  ------------------
  101|     99|		return 1;
  102|       |
  103|    498|	switch (ns->bpb.sectors_per_cluster) {
  104|    476|	case 1: case 2: case 4: case 8: case 16: case 32: case 64: case 128:
  ------------------
  |  Branch (104:2): [True: 329, False: 169]
  |  Branch (104:10): [True: 28, False: 470]
  |  Branch (104:18): [True: 35, False: 463]
  |  Branch (104:26): [True: 5, False: 493]
  |  Branch (104:34): [True: 15, False: 483]
  |  Branch (104:43): [True: 38, False: 460]
  |  Branch (104:52): [True: 20, False: 478]
  |  Branch (104:61): [True: 6, False: 492]
  ------------------
  105|    476|		sectors_per_cluster = ns->bpb.sectors_per_cluster;
  106|    476|		break;
  107|     22|	default:
  ------------------
  |  Branch (107:2): [True: 22, False: 476]
  ------------------
  108|     22|		if ((ns->bpb.sectors_per_cluster < 240)
  ------------------
  |  Branch (108:7): [True: 10, False: 12]
  ------------------
  109|     12|		    || (ns->bpb.sectors_per_cluster > 249))
  ------------------
  |  Branch (109:10): [True: 3, False: 9]
  ------------------
  110|     13|			return 1;
  111|      9|		sectors_per_cluster = 1 << (256 - ns->bpb.sectors_per_cluster);
  112|    498|	}
  113|       |
  114|    485|	if ((uint16_t) le16_to_cpu(ns->bpb.sector_size) *
  ------------------
  |  |  136|    485|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  |  Branch (114:6): [True: 3, False: 482]
  ------------------
  115|    485|			sectors_per_cluster > NTFS_MAX_CLUSTER_SIZE)
  ------------------
  |  |   76|    485|#define NTFS_MAX_CLUSTER_SIZE	(2 * 1024 * 1024)
  ------------------
  116|      3|		return 1;
  117|       |
  118|       |	/* Unused fields must be zero */
  119|    482|	if (le16_to_cpu(ns->bpb.reserved_sectors)
  ------------------
  |  |  136|    964|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 97, False: 385]
  |  |  ------------------
  ------------------
  120|    385|	    || le16_to_cpu(ns->bpb.root_entries)
  ------------------
  |  |  136|    867|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 13, False: 372]
  |  |  ------------------
  ------------------
  121|    372|	    || le16_to_cpu(ns->bpb.sectors)
  ------------------
  |  |  136|    854|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 12, False: 360]
  |  |  ------------------
  ------------------
  122|    360|	    || le16_to_cpu(ns->bpb.sectors_per_fat)
  ------------------
  |  |  136|    842|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  |  |  ------------------
  |  |  |  Branch (136:24): [True: 5, False: 355]
  |  |  ------------------
  ------------------
  123|    355|	    || le32_to_cpu(ns->bpb.large_sectors)
  ------------------
  |  |  137|    837|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  |  |  ------------------
  |  |  |  Branch (137:24): [True: 18, False: 337]
  |  |  ------------------
  ------------------
  124|    337|	    || ns->bpb.fats)
  ------------------
  |  Branch (124:9): [True: 4, False: 333]
  ------------------
  125|    149|		return 1;
  126|       |
  127|    333|	if ((uint8_t) ns->clusters_per_mft_record < 0xe1
  ------------------
  |  Branch (127:6): [True: 299, False: 34]
  ------------------
  128|    302|	    || (uint8_t) ns->clusters_per_mft_record > 0xf7) {
  ------------------
  |  Branch (128:9): [True: 3, False: 31]
  ------------------
  129|       |
  130|    302|		switch (ns->clusters_per_mft_record) {
  131|    293|		case 1: case 2: case 4: case 8: case 16: case 32: case 64:
  ------------------
  |  Branch (131:3): [True: 10, False: 292]
  |  Branch (131:11): [True: 5, False: 297]
  |  Branch (131:19): [True: 33, False: 269]
  |  Branch (131:27): [True: 20, False: 282]
  |  Branch (131:35): [True: 12, False: 290]
  |  Branch (131:44): [True: 17, False: 285]
  |  Branch (131:53): [True: 196, False: 106]
  ------------------
  132|    293|			break;
  133|      9|		default:
  ------------------
  |  Branch (133:3): [True: 9, False: 293]
  ------------------
  134|      9|			return 1;
  135|    302|		}
  136|    302|	}
  137|       |
  138|    324|	if (ns->clusters_per_mft_record > 0) {
  ------------------
  |  Branch (138:6): [True: 293, False: 31]
  ------------------
  139|    293|		mft_record_size = ns->clusters_per_mft_record *
  140|    293|				  sectors_per_cluster * sector_size;
  141|    293|	} else {
  142|     31|		int8_t mft_record_size_shift = 0 - ns->clusters_per_mft_record;
  143|     31|		if (mft_record_size_shift < 0 || mft_record_size_shift >= 31)
  ------------------
  |  Branch (143:7): [True: 0, False: 31]
  |  Branch (143:36): [True: 3, False: 28]
  ------------------
  144|      3|			return 1;
  145|     28|		mft_record_size = 1 << mft_record_size_shift;
  146|     28|	}
  147|       |
  148|    321|	nr_clusters = le64_to_cpu(ns->number_of_sectors) / sectors_per_cluster;
  ------------------
  |  |  138|    321|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  149|       |
  150|    321|	if ((le64_to_cpu(ns->mft_cluster_location) > nr_clusters) ||
  ------------------
  |  |  138|    321|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (150:6): [True: 55, False: 266]
  ------------------
  151|    266|	    (le64_to_cpu(ns->mft_mirror_cluster_location) > nr_clusters))
  ------------------
  |  |  138|    266|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  |  Branch (151:6): [True: 44, False: 222]
  ------------------
  152|     99|		return 1;
  153|       |
  154|       |
  155|    222|	off = le64_to_cpu(ns->mft_cluster_location) * sector_size *
  ------------------
  |  |  138|    222|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  156|    222|		sectors_per_cluster;
  157|       |
  158|    222|	DBG(LOWPROBE, ul_debug("NTFS: sector_size=%"PRIu16", mft_record_size=%"PRIu32", "
  ------------------
  |  |  358|    222|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    222|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    222|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    222|	do { \
  |  |  |  |  |  |  |  |   76|    222|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    222|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    222|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 222]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    222|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 222]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    222|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    222|		x; \
  |  |  |  |  |  |   85|    222|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  159|    222|			"sectors_per_cluster=%"PRIu32", nr_clusters=%"PRIu64" "
  160|    222|			"cluster_offset=%"PRIu64"",
  161|    222|			sector_size, mft_record_size,
  162|    222|			sectors_per_cluster, nr_clusters,
  163|    222|			off));
  164|       |
  165|    222|	if (mft_record_size < 4)
  ------------------
  |  Branch (165:6): [True: 0, False: 222]
  ------------------
  166|      0|		return 1;
  167|       |
  168|    222|	buf_mft = blkid_probe_get_buffer(pr, off, mft_record_size);
  169|    222|	if (!buf_mft)
  ------------------
  |  Branch (169:6): [True: 97, False: 125]
  ------------------
  170|     97|		return errno ? -errno : 1;
  ------------------
  |  Branch (170:10): [True: 0, False: 97]
  ------------------
  171|       |
  172|    125|	if (memcmp(buf_mft, "FILE", 4) != 0)
  ------------------
  |  Branch (172:6): [True: 17, False: 108]
  ------------------
  173|     17|		return 1;
  174|       |
  175|    108|	off += MFT_RECORD_VOLUME * mft_record_size;
  ------------------
  |  |   74|    108|#define MFT_RECORD_VOLUME	3
  ------------------
  176|       |
  177|    108|	buf_mft = blkid_probe_get_buffer(pr, off, mft_record_size);
  178|    108|	if (!buf_mft)
  ------------------
  |  Branch (178:6): [True: 3, False: 105]
  ------------------
  179|      3|		return errno ? -errno : 1;
  ------------------
  |  Branch (179:10): [True: 0, False: 3]
  ------------------
  180|       |
  181|    105|	if (memcmp(buf_mft, "FILE", 4) != 0)
  ------------------
  |  Branch (181:6): [True: 12, False: 93]
  ------------------
  182|     12|		return 1;
  183|       |
  184|       |	/* return if caller does not care about UUID and LABEL */
  185|     93|	if (!save_info)
  ------------------
  |  Branch (185:6): [True: 18, False: 75]
  ------------------
  186|     18|		return 0;
  187|       |
  188|     75|	mft = (struct master_file_table_record *) buf_mft;
  189|     75|	attr_off = le16_to_cpu(mft->attrs_offset);
  ------------------
  |  |  136|     75|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  190|       |
  191|    170|	while (attr_off + sizeof(struct file_attribute) <= mft_record_size &&
  ------------------
  |  Branch (191:9): [True: 109, False: 61]
  ------------------
  192|    109|	       attr_off <= le32_to_cpu(mft->bytes_allocated)) {
  ------------------
  |  |  137|    109|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (192:9): [True: 106, False: 3]
  ------------------
  193|       |
  194|    106|		uint32_t attr_len;
  195|    106|		struct file_attribute *attr;
  196|       |
  197|    106|		attr = (struct file_attribute *) (buf_mft + attr_off);
  198|    106|		attr_len = le32_to_cpu(attr->len);
  ------------------
  |  |  137|    106|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  199|    106|		if (!attr_len)
  ------------------
  |  Branch (199:7): [True: 2, False: 104]
  ------------------
  200|      2|			break;
  201|       |
  202|    104|		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_END)
  ------------------
  |  |  137|    104|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_END)
  ------------------
  |  |   79|    104|#define	MFT_RECORD_ATTR_END		0xffffffff
  ------------------
  |  Branch (202:7): [True: 3, False: 101]
  ------------------
  203|      3|			break;
  204|    101|		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_VOLUME_NAME) {
  ------------------
  |  |  137|    101|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              		if (le32_to_cpu(attr->type) == (uint32_t) MFT_RECORD_ATTR_VOLUME_NAME) {
  ------------------
  |  |   78|    101|#define	MFT_RECORD_ATTR_VOLUME_NAME	0x60
  ------------------
  |  Branch (204:7): [True: 6, False: 95]
  ------------------
  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: 1, False: 2]
  ------------------
  211|      1|				blkid_probe_set_utf8label(pr, val, val_len,
  212|      1|							  UL_ENCODE_UTF16LE);
  213|      6|			break;
  214|      6|		}
  215|       |
  216|     95|		attr_off += attr_len;
  217|     95|	}
  218|       |
  219|       |
  220|     75|	blkid_probe_set_fsblocksize(pr, sector_size * sectors_per_cluster);
  221|     75|	blkid_probe_set_block_size(pr, sector_size);
  222|     75|	blkid_probe_set_fssize(pr, le64_to_cpu(ns->number_of_sectors) * sector_size);
  ------------------
  |  |  138|     75|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  223|       |
  224|     75|	blkid_probe_sprintf_uuid(pr,
  225|     75|			(unsigned char *) &ns->volume_serial,
  226|     75|			sizeof(ns->volume_serial),
  227|     75|			"%016" PRIX64, le64_to_cpu(ns->volume_serial));
  ------------------
  |  |  138|     75|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
  228|     75|	return 0;
  229|     93|}
ntfs.c:probe_ntfs:
  232|    555|{
  233|    555|	return __probe_ntfs(pr, mag, 1);
  234|    555|}

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

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

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

romfs.c:probe_romfs:
   52|    159|{
   53|    159|	const struct romfs_super_block *ros;
   54|       |
   55|    159|	ros = blkid_probe_get_sb(pr, mag, struct romfs_super_block);
  ------------------
  |  |  451|    159|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   56|    159|	if (!ros)
  ------------------
  |  Branch (56:6): [True: 0, False: 159]
  ------------------
   57|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (57:10): [True: 0, False: 0]
  ------------------
   58|       |
   59|    159|	if (!romfs_verify_csum(pr, mag, ros))
  ------------------
  |  Branch (59:6): [True: 159, False: 0]
  ------------------
   60|    159|		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|    159|}
romfs.c:romfs_verify_csum:
   29|    159|{
   30|    159|	uint32_t csummed_size = min((uint32_t) 512,
  ------------------
  |  |  206|    159|# define min(x, y) __extension__ ({		\
  |  |  207|    159|	__typeof__(x) _min1 = (x);		\
  |  |  208|    159|	__typeof__(y) _min2 = (y);		\
  |  |  209|    159|	(void) (&_min1 == &_min2);		\
  |  |  210|    159|	_min1 < _min2 ? _min1 : _min2; })
  |  |  ------------------
  |  |  |  Branch (210:2): [True: 129, False: 30]
  |  |  ------------------
  ------------------
   31|    159|			be32_to_cpu(ros->ros_full_size));
   32|    159|	const unsigned char *csummed;
   33|    159|	uint32_t csum;
   34|       |
   35|    159|	if (csummed_size % sizeof(uint32_t) != 0)
  ------------------
  |  Branch (35:6): [True: 11, False: 148]
  ------------------
   36|     11|		return 0;
   37|       |
   38|    148|	csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
   39|    148|	if (!csummed)
  ------------------
  |  Branch (39:6): [True: 8, False: 140]
  ------------------
   40|      8|		return 0;
   41|       |
   42|    140|	csum = 0;
   43|  16.7k|	while (csummed_size) {
  ------------------
  |  Branch (43:9): [True: 16.6k, False: 140]
  ------------------
   44|       |		csum += be32_to_cpu(*(uint32_t *) csummed);
  ------------------
  |  |  141|  16.6k|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   45|  16.6k|		csummed_size -= sizeof(uint32_t);
   46|  16.6k|		csummed += sizeof(uint32_t);
   47|  16.6k|	}
   48|    140|	return blkid_probe_verify_csum(pr, csum, 0);
   49|    148|}

silicon_raid.c:probe_silraid:
   90|  6.17k|{
   91|  6.17k|	uint64_t off;
   92|  6.17k|	struct silicon_metadata *sil;
   93|       |
   94|  6.17k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (94:6): [True: 0, False: 6.17k]
  |  Branch (94:28): [True: 0, False: 0]
  ------------------
   95|      0|		return 1;
   96|       |
   97|  6.17k|	off = ((pr->size / 0x200) - 1) * 0x200;
   98|       |
   99|  6.17k|	sil = (struct silicon_metadata *)
  100|  6.17k|			blkid_probe_get_buffer(pr, off,
  101|  6.17k|				sizeof(struct silicon_metadata));
  102|  6.17k|	if (!sil)
  ------------------
  |  Branch (102:6): [True: 0, False: 6.17k]
  ------------------
  103|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (103:10): [True: 0, False: 0]
  ------------------
  104|       |
  105|  6.17k|	if (le32_to_cpu(sil->magic) != SILICON_MAGIC)
  ------------------
  |  |  137|  6.17k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
              	if (le32_to_cpu(sil->magic) != SILICON_MAGIC)
  ------------------
  |  |   68|  6.17k|#define SILICON_MAGIC		0x2F000000
  ------------------
  |  Branch (105:6): [True: 6.17k, False: 0]
  ------------------
  106|  6.17k|		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|     42|{
   43|     42|	const struct sqsh_super_block *sq;
   44|     42|	uint16_t vermaj;
   45|     42|	uint16_t vermin;
   46|       |
   47|     42|	sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block);
  ------------------
  |  |  451|     42|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   48|     42|	if (!sq)
  ------------------
  |  Branch (48:6): [True: 0, False: 42]
  ------------------
   49|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (49:10): [True: 0, False: 0]
  ------------------
   50|       |
   51|     42|	vermaj = le16_to_cpu(sq->version_major);
  ------------------
  |  |  136|     42|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   52|     42|	vermin = le16_to_cpu(sq->version_minor);
  ------------------
  |  |  136|     42|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   53|     42|	if (vermaj < 4)
  ------------------
  |  Branch (53:6): [True: 9, False: 33]
  ------------------
   54|      9|		return 1;
   55|       |
   56|     33|	blkid_probe_sprintf_version(pr, "%u.%u", vermaj, vermin);
   57|     33|	blkid_probe_set_fsblocksize(pr, le32_to_cpu(sq->block_size));
  ------------------
  |  |  137|     33|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   58|     33|	blkid_probe_set_block_size(pr, le32_to_cpu(sq->block_size));
  ------------------
  |  |  137|     33|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   59|     33|	blkid_probe_set_fssize(pr, le64_to_cpu(sq->bytes_used));
  ------------------
  |  |  138|     33|#define le64_to_cpu(x) ((uint64_t) le64toh(x))
  ------------------
   60|       |
   61|     33|	return 0;
   62|     42|}
squashfs.c:probe_squashfs3:
   65|     81|{
   66|     81|	const struct sqsh_super_block *sq;
   67|     81|	uint16_t vermaj;
   68|     81|	uint16_t vermin;
   69|     81|	enum blkid_endianness endianness;
   70|       |
   71|     81|	sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block);
  ------------------
  |  |  451|     81|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   72|     81|	if (!sq)
  ------------------
  |  Branch (72:6): [True: 0, False: 81]
  ------------------
   73|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|       |
   75|     81|	if (strcmp(mag->magic, "sqsh") == 0) {
  ------------------
  |  Branch (75:6): [True: 39, False: 42]
  ------------------
   76|     39|		vermaj = be16_to_cpu(sq->version_major);
  ------------------
  |  |  140|     39|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   77|     39|		vermin = be16_to_cpu(sq->version_minor);
  ------------------
  |  |  140|     39|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
   78|     39|		endianness = BLKID_ENDIANNESS_BIG;
   79|     42|	} else {
   80|     42|		vermaj = le16_to_cpu(sq->version_major);
  ------------------
  |  |  136|     42|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   81|     42|		vermin = le16_to_cpu(sq->version_minor);
  ------------------
  |  |  136|     42|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
   82|     42|		endianness = BLKID_ENDIANNESS_LITTLE;
   83|     42|	}
   84|       |
   85|     81|	if (vermaj > 3)
  ------------------
  |  Branch (85:6): [True: 67, False: 14]
  ------------------
   86|     67|		return 1;
   87|       |
   88|     14|	blkid_probe_sprintf_version(pr, "%u.%u", vermaj, vermin);
   89|       |
   90|     14|	blkid_probe_set_fsblocksize(pr, 1024);
   91|     14|	blkid_probe_set_block_size(pr, 1024);
   92|     14|	blkid_probe_set_fsendianness(pr, endianness);
   93|       |
   94|     14|	return 0;
   95|     81|}

stratis.c:probe_stratis:
   84|    481|{
   85|    481|	const struct stratis_sb *stratis = NULL;
   86|    481|	const uint8_t *buf = blkid_probe_get_buffer(pr, 0, SB_AREA_SIZE);
  ------------------
  |  |   43|    481|#define SB_AREA_SIZE (BS * 16)
  |  |  ------------------
  |  |  |  |   40|    481|#define BS 512
  |  |  ------------------
  ------------------
   87|    481|	unsigned char uuid[STRATIS_UUID_STR_LEN];
   88|       |
   89|    481|	if (!buf)
  ------------------
  |  Branch (89:6): [True: 0, False: 481]
  ------------------
   90|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (90:10): [True: 0, False: 0]
  ------------------
   91|       |
   92|    481|	if (stratis_valid_sb(buf + FIRST_COPY_OFFSET)) {
  ------------------
  |  |   41|    481|#define FIRST_COPY_OFFSET BS
  |  |  ------------------
  |  |  |  |   40|    481|#define BS 512
  |  |  ------------------
  ------------------
  |  Branch (92:6): [True: 0, False: 481]
  ------------------
   93|      0|		stratis = (const struct stratis_sb *)(buf + FIRST_COPY_OFFSET);
  ------------------
  |  |   41|      0|#define FIRST_COPY_OFFSET BS
  |  |  ------------------
  |  |  |  |   40|      0|#define BS 512
  |  |  ------------------
  ------------------
   94|    481|	} else {
   95|    481|		if (!stratis_valid_sb(buf + SECOND_COPY_OFFSET))
  ------------------
  |  |   42|    481|#define SECOND_COPY_OFFSET (BS * 9)
  |  |  ------------------
  |  |  |  |   40|    481|#define BS 512
  |  |  ------------------
  ------------------
  |  Branch (95:7): [True: 480, False: 1]
  ------------------
   96|    480|			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|    481|}
stratis.c:stratis_valid_sb:
   53|    962|{
   54|    962|	const struct stratis_sb *stratis = (const struct stratis_sb *)p;
   55|    962|	uint32_t crc = 0;
   56|       |
   57|       |	/* generate CRC from byte position 4 for length 508 == 512 byte sector */
   58|    962|	crc = crc32c(~0L, p + sizeof(stratis->crc32),
   59|    962|			BS - sizeof(stratis->crc32));
  ------------------
  |  |   40|    962|#define BS 512
  ------------------
   60|    962|	crc ^= ~0L;
   61|       |
   62|       |	return crc == le32_to_cpu(stratis->crc32);
  ------------------
  |  |  137|    962|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   63|    962|}
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|  6.18k|{
  213|  6.18k|	pr->chains[BLKID_CHAIN_SUBLKS].enabled = enable;
  214|  6.18k|	return 0;
  215|  6.18k|}
blkid_probe_set_superblocks_flags:
  228|  6.18k|{
  229|  6.18k|	pr->chains[BLKID_CHAIN_SUBLKS].flags = flags;
  230|  6.18k|	return 0;
  231|  6.18k|}
blkid_probe_filter_superblocks_type:
  272|  6.18k|{
  273|  6.18k|	return __blkid_probe_filter_types(pr, BLKID_CHAIN_SUBLKS, flag, names);
  274|  6.18k|}
blkid_probe_set_version:
  548|    846|{
  549|    846|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  550|       |
  551|    846|	if (chn->flags & BLKID_SUBLKS_VERSION)
  ------------------
  |  |  318|    846|#define BLKID_SUBLKS_VERSION	(1 << 8) /* read FS type from superblock */
  ------------------
  |  Branch (551:6): [True: 0, False: 846]
  ------------------
  552|      0|		return blkid_probe_set_value(pr, "VERSION",
  553|      0|				(const unsigned char *) version,
  554|      0|				strlen(version) + 1);
  555|    846|	return 0;
  556|    846|}
blkid_probe_sprintf_version:
  560|    832|{
  561|    832|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  562|    832|	int rc = 0;
  563|       |
  564|    832|	if (chn->flags & BLKID_SUBLKS_VERSION) {
  ------------------
  |  |  318|    832|#define BLKID_SUBLKS_VERSION	(1 << 8) /* read FS type from superblock */
  ------------------
  |  Branch (564:6): [True: 0, False: 832]
  ------------------
  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|    832|	return rc;
  572|    832|}
blkid_probe_set_block_size:
  575|  1.28k|{
  576|  1.28k|	return blkid_probe_sprintf_value(pr, "BLOCK_SIZE", "%u", block_size);
  577|  1.28k|}
blkid_probe_set_fssize:
  604|    687|{
  605|    687|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  606|       |
  607|    687|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|    687|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (607:6): [True: 687, False: 0]
  ------------------
  608|    687|		return 0;
  609|       |
  610|      0|	return blkid_probe_sprintf_value(pr, "FSSIZE", "%" PRIu64, size);
  611|    687|}
blkid_probe_set_fslastblock:
  614|    200|{
  615|    200|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  616|       |
  617|    200|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|    200|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (617:6): [True: 200, False: 0]
  ------------------
  618|    200|		return 0;
  619|       |
  620|      0|	return blkid_probe_sprintf_value(pr, "FSLASTBLOCK", "%" PRIu64,
  621|      0|			lastblock);
  622|    200|}
blkid_probe_set_fsblocksize:
  625|  1.30k|{
  626|  1.30k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  627|       |
  628|  1.30k|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|  1.30k|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (628:6): [True: 1.30k, False: 0]
  ------------------
  629|  1.30k|		return 0;
  630|       |
  631|      0|	return blkid_probe_sprintf_value(pr, "FSBLOCKSIZE", "%" PRIu32,
  632|      0|			block_size);
  633|  1.30k|}
blkid_probe_set_fsendianness:
  636|    379|{
  637|    379|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  638|    379|	const char *value;
  639|       |
  640|    379|	if (!(chn->flags & BLKID_SUBLKS_FSINFO))
  ------------------
  |  |  321|    379|#define BLKID_SUBLKS_FSINFO	(1 << 11) /* read and define fs properties from superblock */
  ------------------
  |  Branch (640:6): [True: 379, False: 0]
  ------------------
  641|    379|		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|    422|{
  662|    422|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  663|    422|	struct blkid_prval *v;
  664|    422|	int rc = 0;
  665|       |
  666|    422|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|    422|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (666:6): [True: 422, False: 0]
  ------------------
  667|    422|		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|    208|{
  691|    208|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  692|    208|	struct blkid_prval *v;
  693|    208|	int rc = 0;
  694|       |
  695|    208|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|    208|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (695:6): [True: 208, False: 0]
  ------------------
  696|    208|		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|    951|{
  722|    951|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  723|    951|	struct blkid_prval *v;
  724|    951|	int rc = 0;
  725|       |
  726|    951|	if ((chn->flags & BLKID_SUBLKS_LABELRAW) &&
  ------------------
  |  |  312|    951|#define BLKID_SUBLKS_LABELRAW	(1 << 2) /* read and define LABEL_RAW result value*/
  ------------------
  |  Branch (726:6): [True: 0, False: 951]
  ------------------
  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|    951|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|    951|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (730:6): [True: 951, False: 0]
  ------------------
  731|    951|		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|     61|{
  751|     61|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  752|     61|	struct blkid_prval *v;
  753|     61|	int rc = 0;
  754|       |
  755|     61|	if ((chn->flags & BLKID_SUBLKS_LABELRAW) &&
  ------------------
  |  |  312|     61|#define BLKID_SUBLKS_LABELRAW	(1 << 2) /* read and define LABEL_RAW result value*/
  ------------------
  |  Branch (755:6): [True: 0, False: 61]
  ------------------
  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|     61|	if (!(chn->flags & BLKID_SUBLKS_LABEL))
  ------------------
  |  |  311|     61|#define BLKID_SUBLKS_LABEL	(1 << 1) /* read LABEL from superblock */
  ------------------
  |  Branch (759:6): [True: 61, False: 0]
  ------------------
  760|     61|		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|    455|{
  784|    455|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  785|    455|	va_list ap;
  786|    455|	int rc = 0;
  787|       |
  788|    455|	if (blkid_uuid_is_empty(uuid, len))
  ------------------
  |  Branch (788:6): [True: 57, False: 398]
  ------------------
  789|     57|		return 0;
  790|       |
  791|    398|	if ((chn->flags & BLKID_SUBLKS_UUIDRAW) &&
  ------------------
  |  |  314|    398|#define BLKID_SUBLKS_UUIDRAW	(1 << 4) /* read and define UUID_RAW result value */
  ------------------
  |  Branch (791:6): [True: 0, False: 398]
  ------------------
  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|    398|	if (!(chn->flags & BLKID_SUBLKS_UUID))
  ------------------
  |  |  313|    398|#define BLKID_SUBLKS_UUID	(1 << 3) /* read UUID from superblock */
  ------------------
  |  Branch (795:6): [True: 398, False: 0]
  ------------------
  796|    398|		return 0;
  797|       |
  798|    398|	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|    398|}
blkid_probe_strncpy_uuid:
  807|     29|{
  808|     29|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  809|     29|	struct blkid_prval *v;
  810|     29|	int rc = 0;
  811|       |
  812|     29|	if (str == NULL || *str == '\0')
  ------------------
  |  Branch (812:6): [True: 0, False: 29]
  |  Branch (812:21): [True: 1, False: 28]
  ------------------
  813|      1|		return -EINVAL;
  814|       |
  815|     28|	if (!len)
  ------------------
  |  Branch (815:6): [True: 0, False: 28]
  ------------------
  816|      0|		len = strlen((const char *) str);
  817|       |
  818|     28|	if ((chn->flags & BLKID_SUBLKS_UUIDRAW) &&
  ------------------
  |  |  314|     28|#define BLKID_SUBLKS_UUIDRAW	(1 << 4) /* read and define UUID_RAW result value */
  ------------------
  |  Branch (818:6): [True: 0, False: 28]
  ------------------
  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|     28|	if (!(chn->flags & BLKID_SUBLKS_UUID))
  ------------------
  |  |  313|     28|#define BLKID_SUBLKS_UUID	(1 << 3) /* read UUID from superblock */
  ------------------
  |  Branch (822:6): [True: 28, False: 0]
  ------------------
  823|     28|		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|    944|{
  843|    944|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  844|    944|	struct blkid_prval *v;
  845|    944|	int rc = 0;
  846|       |
  847|    944|	if (blkid_uuid_is_empty(uuid, 16))
  ------------------
  |  Branch (847:6): [True: 146, False: 798]
  ------------------
  848|    146|		return 0;
  849|       |
  850|    798|	if (!name) {
  ------------------
  |  Branch (850:6): [True: 739, False: 59]
  ------------------
  851|    739|		if ((chn->flags & BLKID_SUBLKS_UUIDRAW) &&
  ------------------
  |  |  314|    739|#define BLKID_SUBLKS_UUIDRAW	(1 << 4) /* read and define UUID_RAW result value */
  ------------------
  |  Branch (851:7): [True: 0, False: 739]
  ------------------
  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|    739|		if (!(chn->flags & BLKID_SUBLKS_UUID))
  ------------------
  |  |  313|    739|#define BLKID_SUBLKS_UUID	(1 << 3) /* read UUID from superblock */
  ------------------
  |  Branch (855:7): [True: 739, False: 0]
  ------------------
  856|    739|			return 0;
  857|       |
  858|      0|		v = blkid_probe_assign_value(pr, "UUID");
  859|      0|	} else
  860|     59|		v = blkid_probe_assign_value(pr, name);
  861|       |
  862|     59|	if (!v)
  ------------------
  |  Branch (862:6): [True: 0, False: 59]
  ------------------
  863|      0|		return -ENOMEM;
  864|       |
  865|     59|	v->len = UUID_STR_LEN;
  ------------------
  |  |   27|     59|# define UUID_STR_LEN   37
  ------------------
  866|     59|	v->data = calloc(1, v->len);
  867|     59|	if (!v->data)
  ------------------
  |  Branch (867:6): [True: 0, False: 59]
  ------------------
  868|      0|		rc = -ENOMEM;
  869|       |
  870|     59|	if (!rc) {
  ------------------
  |  Branch (870:6): [True: 59, False: 0]
  ------------------
  871|     59|		blkid_unparse_uuid(uuid, (char *) v->data, v->len);
  872|     59|		return 0;
  873|     59|	}
  874|       |
  875|      0|	blkid_probe_free_value(v);
  876|      0|	return rc;
  877|     59|}
blkid_probe_set_uuid:
  880|    877|{
  881|       |	return blkid_probe_set_uuid_as(pr, uuid, NULL);
  882|    877|}
superblocks.c:superblocks_probe:
  355|  8.54k|{
  356|  8.54k|	size_t i;
  357|  8.54k|	int rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  8.54k|#define BLKID_PROBE_NONE	1
  ------------------
  358|       |
  359|  8.54k|	if (chn->idx < -1)
  ------------------
  |  Branch (359:6): [True: 0, False: 8.54k]
  ------------------
  360|      0|		return -EINVAL;
  361|       |
  362|  8.54k|	blkid_probe_chain_reset_values(pr, chn);
  363|       |
  364|  8.54k|	if (pr->flags & BLKID_FL_NOSCAN_DEV) {
  ------------------
  |  |  244|  8.54k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (364:6): [True: 0, False: 8.54k]
  ------------------
  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.54k|	if (pr->size <= 0 || (pr->size <= 1024 && !S_ISCHR(pr->mode))) {
  ------------------
  |  Branch (369:6): [True: 0, False: 8.54k]
  |  Branch (369:24): [True: 0, False: 8.54k]
  |  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.54k|	DBG(LOWPROBE, ul_debug("--> starting probing loop [SUBLKS idx=%d]",
  ------------------
  |  |  358|  8.54k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  8.54k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  8.54k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  8.54k|	do { \
  |  |  |  |  |  |  |  |   76|  8.54k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  8.54k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  8.54k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 8.54k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  8.54k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 8.54k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  8.54k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  8.54k|		x; \
  |  |  |  |  |  |   85|  8.54k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  378|  8.54k|		chn->idx));
  379|       |
  380|  8.54k|	i = chn->idx < 0 ? 0 : chn->idx + 1U;
  ------------------
  |  Branch (380:6): [True: 6.18k, False: 2.36k]
  ------------------
  381|       |
  382|   509k|	for ( ; i < ARRAY_SIZE(idinfos); i++) {
  ------------------
  |  |  182|   509k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (382:10): [True: 503k, False: 6.12k]
  ------------------
  383|   503k|		const struct blkid_idinfo *id;
  384|   503k|		const struct blkid_idmag *mag = NULL;
  385|   503k|		uint64_t off = 0;
  386|       |
  387|   503k|		chn->idx = i;
  388|   503k|		id = idinfos[i];
  389|       |
  390|   503k|		if (chn->fltr && blkid_bmp_get_item(chn->fltr, i)) {
  ------------------
  |  |  577|   503k|		((bmp)[ blkid_bmp_idx_byte(item) ] & blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  568|   503k|#define blkid_bmp_idx_byte(item)	((item) / blkid_bmp_wordsize)
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|   503k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |               		((bmp)[ blkid_bmp_idx_byte(item) ] & blkid_bmp_idx_bit(item))
  |  |  ------------------
  |  |  |  |  567|   503k|#define blkid_bmp_idx_bit(item)		(1UL << ((item) % blkid_bmp_wordsize))
  |  |  |  |  ------------------
  |  |  |  |  |  |  566|   503k|#define blkid_bmp_wordsize		(8 * sizeof(unsigned long))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  |  Branch (577:3): [True: 12.3k, False: 491k]
  |  |  ------------------
  ------------------
  |  Branch (390:7): [True: 503k, False: 0]
  ------------------
  391|  12.3k|			DBG(LOWPROBE, ul_debug("filter out: %s", id->name));
  ------------------
  |  |  358|  12.3k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  12.3k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  12.3k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  12.3k|	do { \
  |  |  |  |  |  |  |  |   76|  12.3k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  12.3k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  12.3k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 12.3k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  12.3k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 12.3k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  12.3k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  12.3k|		x; \
  |  |  |  |  |  |   85|  12.3k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  392|  12.3k|			rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  12.3k|#define BLKID_PROBE_NONE	1
  ------------------
  393|  12.3k|			continue;
  394|  12.3k|		}
  395|       |
  396|   491k|		if (id->minsz && (unsigned)id->minsz > pr->size) {
  ------------------
  |  Branch (396:7): [True: 196k, False: 294k]
  |  Branch (396:20): [True: 18.3k, False: 178k]
  ------------------
  397|  18.3k|			rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  18.3k|#define BLKID_PROBE_NONE	1
  ------------------
  398|  18.3k|			continue;	/* the device is too small */
  399|  18.3k|		}
  400|       |
  401|       |		/* don't probe for RAIDs, swap or journal on CD/DVDs */
  402|   472k|		if ((id->usage & (BLKID_USAGE_RAID | BLKID_USAGE_OTHER)) &&
  ------------------
  |  |  345|   472k|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
              		if ((id->usage & (BLKID_USAGE_RAID | BLKID_USAGE_OTHER)) &&
  ------------------
  |  |  347|   472k|#define BLKID_USAGE_OTHER		(1 << 4)
  ------------------
  |  Branch (402:7): [True: 166k, False: 306k]
  ------------------
  403|   166k|		    blkid_probe_is_cdrom(pr)) {
  ------------------
  |  Branch (403:7): [True: 0, False: 166k]
  ------------------
  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|   472k|		if ((id->usage & BLKID_USAGE_RAID) && blkid_probe_is_tiny(pr)) {
  ------------------
  |  |  345|   472k|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
  |  Branch (409:7): [True: 111k, False: 361k]
  |  Branch (409:41): [True: 0, False: 111k]
  ------------------
  410|      0|			rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  411|      0|			continue;
  412|      0|		}
  413|       |
  414|   472k|		DBG(LOWPROBE, ul_debug("[%zu] %s:", i, id->name));
  ------------------
  |  |  358|   472k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   472k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|   472k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|   472k|	do { \
  |  |  |  |  |  |  |  |   76|   472k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|   472k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|   472k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 472k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|   472k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 472k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   472k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   472k|		x; \
  |  |  |  |  |  |   85|   472k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  415|       |
  416|   472k|		rc = blkid_probe_get_idmag(pr, id, &off, &mag);
  417|   472k|		if (rc < 0)
  ------------------
  |  Branch (417:7): [True: 0, False: 472k]
  ------------------
  418|      0|			break;
  419|   472k|		if (rc != BLKID_PROBE_OK)
  ------------------
  |  |  465|   472k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (419:7): [True: 359k, False: 113k]
  ------------------
  420|   359k|			continue;
  421|       |
  422|       |		/* final check by probing function */
  423|   113k|		if (id->probefunc) {
  ------------------
  |  Branch (423:7): [True: 113k, False: 36]
  ------------------
  424|   113k|			DBG(LOWPROBE, ul_debug("\tcall probefunc()"));
  ------------------
  |  |  358|   113k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|   113k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|   113k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|   113k|	do { \
  |  |  |  |  |  |  |  |   76|   113k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|   113k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|   113k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 113k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|   113k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 113k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|   113k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|   113k|		x; \
  |  |  |  |  |  |   85|   113k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  425|   113k|			errno = 0;
  426|   113k|			rc = id->probefunc(pr, mag);
  427|   113k|			blkid_probe_prune_buffers(pr);
  428|   113k|			if (rc != BLKID_PROBE_OK) {
  ------------------
  |  |  465|   113k|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (428:8): [True: 110k, False: 2.35k]
  ------------------
  429|   110k|				blkid_probe_chain_reset_values(pr, chn);
  430|   110k|				if (rc < 0)
  ------------------
  |  Branch (430:9): [True: 31, False: 110k]
  ------------------
  431|     31|					break;
  432|   110k|				continue;
  433|   110k|			}
  434|   113k|		}
  435|       |
  436|       |		/* all checks passed */
  437|  2.39k|		if (chn->flags & BLKID_SUBLKS_TYPE)
  ------------------
  |  |  315|  2.39k|#define BLKID_SUBLKS_TYPE	(1 << 5) /* define TYPE result value */
  ------------------
  |  Branch (437:7): [True: 2.39k, False: 0]
  ------------------
  438|  2.39k|			rc = blkid_probe_set_value(pr, "TYPE",
  439|  2.39k|				(const unsigned char *) id->name,
  440|  2.39k|				strlen(id->name) + 1);
  441|       |
  442|  2.39k|		if (!rc)
  ------------------
  |  Branch (442:7): [True: 2.39k, False: 0]
  ------------------
  443|  2.39k|			rc = blkid_probe_set_usage(pr, id->usage);
  444|       |
  445|  2.39k|		if (!rc && mag)
  ------------------
  |  Branch (445:7): [True: 2.39k, False: 0]
  |  Branch (445:14): [True: 2.13k, False: 261]
  ------------------
  446|  2.13k|			rc = blkid_probe_set_magic(pr, off, mag->len,
  447|  2.13k|					(const unsigned char *) mag->magic);
  448|  2.39k|		if (rc) {
  ------------------
  |  Branch (448:7): [True: 0, False: 2.39k]
  ------------------
  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.39k|		DBG(LOWPROBE, ul_debug("<-- leaving probing loop (type=%s) [SUBLKS idx=%d]",
  ------------------
  |  |  358|  2.39k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  2.39k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  2.39k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  2.39k|	do { \
  |  |  |  |  |  |  |  |   76|  2.39k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  2.39k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  2.39k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 2.39k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  2.39k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 2.39k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  2.39k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  2.39k|		x; \
  |  |  |  |  |  |   85|  2.39k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  455|  2.39k|			id->name, chn->idx));
  456|  2.39k|		return BLKID_PROBE_OK;
  ------------------
  |  |  465|  2.39k|#define BLKID_PROBE_OK	0
  ------------------
  457|  2.39k|	}
  458|       |
  459|  6.15k|	DBG(LOWPROBE, ul_debug("<-- leaving probing loop (failed=%d) [SUBLKS idx=%d]",
  ------------------
  |  |  358|  6.15k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.15k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.15k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.15k|	do { \
  |  |  |  |  |  |  |  |   76|  6.15k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.15k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.15k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.15k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.15k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.15k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.15k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.15k|		x; \
  |  |  |  |  |  |   85|  6.15k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  460|  6.15k|			rc, chn->idx));
  461|  6.15k|	return rc;
  462|  8.54k|}
superblocks.c:blkid_probe_set_usage:
  580|  2.39k|{
  581|  2.39k|	struct blkid_chain *chn = blkid_probe_get_chain(pr);
  582|  2.39k|	const char *u = NULL;
  583|       |
  584|  2.39k|	if (!(chn->flags & BLKID_SUBLKS_USAGE))
  ------------------
  |  |  317|  2.39k|#define BLKID_SUBLKS_USAGE	(1 << 7) /* define USAGE result value */
  ------------------
  |  Branch (584:6): [True: 2.39k, False: 0]
  ------------------
  585|  2.39k|		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.39k|}
superblocks.c:superblocks_safeprobe:
  477|  6.18k|{
  478|  6.18k|	struct list_head vals;
  479|  6.18k|	int idx = -1;
  480|  6.18k|	int count = 0;
  481|  6.18k|	int intol = 0;
  482|  6.18k|	int rc;
  483|       |
  484|  6.18k|	INIT_LIST_HEAD(&vals);
  ------------------
  |  |   38|  6.18k|#define INIT_LIST_HEAD(ptr) do { \
  |  |   39|  6.18k|	(ptr)->next = (ptr); (ptr)->prev = (ptr); \
  |  |   40|  6.18k|} while (0)
  |  |  ------------------
  |  |  |  Branch (40:10): [Folded, False: 6.18k]
  |  |  ------------------
  ------------------
  485|       |
  486|  6.18k|	if (pr->flags & BLKID_FL_NOSCAN_DEV)
  ------------------
  |  |  244|  6.18k|#define BLKID_FL_NOSCAN_DEV	(1 << 4)	/* do not scan this device */
  ------------------
  |  Branch (486:6): [True: 0, False: 6.18k]
  ------------------
  487|      0|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  488|       |
  489|  8.54k|	while ((rc = superblocks_probe(pr, chn)) == 0) {
  ------------------
  |  Branch (489:9): [True: 2.39k, False: 6.15k]
  ------------------
  490|       |
  491|  2.39k|		if (blkid_probe_is_tiny(pr) && !count)
  ------------------
  |  Branch (491:7): [True: 0, False: 2.39k]
  |  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.39k|		count++;
  495|       |
  496|  2.39k|		if (chn->idx >= 0 &&
  ------------------
  |  Branch (496:7): [True: 2.39k, False: 0]
  ------------------
  497|  2.39k|		    idinfos[chn->idx]->usage & (BLKID_USAGE_RAID | BLKID_USAGE_CRYPTO))
  ------------------
  |  |  345|  2.39k|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
              		    idinfos[chn->idx]->usage & (BLKID_USAGE_RAID | BLKID_USAGE_CRYPTO))
  ------------------
  |  |  346|  2.39k|#define BLKID_USAGE_CRYPTO		(1 << 3)
  ------------------
  |  Branch (497:7): [True: 32, False: 2.36k]
  ------------------
  498|     32|			break;
  499|       |
  500|  2.36k|		if (chn->idx >= 0 &&
  ------------------
  |  Branch (500:7): [True: 2.36k, False: 0]
  ------------------
  501|  2.36k|		    !(idinfos[chn->idx]->flags & BLKID_IDINFO_TOLERANT))
  ------------------
  |  |  184|  2.36k|#define BLKID_IDINFO_TOLERANT	(1 << 1)
  ------------------
  |  Branch (501:7): [True: 2.25k, False: 111]
  ------------------
  502|  2.25k|			intol++;
  503|       |
  504|  2.36k|		if (count == 1) {
  ------------------
  |  Branch (504:7): [True: 1.45k, False: 907]
  ------------------
  505|       |			/* save the first result */
  506|  1.45k|			blkid_probe_chain_save_values(pr, chn, &vals);
  507|  1.45k|			idx = chn->idx;
  508|  1.45k|		}
  509|  2.36k|	}
  510|       |
  511|  6.18k|	if (rc < 0)
  ------------------
  |  Branch (511:6): [True: 31, False: 6.15k]
  ------------------
  512|     31|		goto done;		/* error */
  513|       |
  514|  6.15k|	if (count > 1 && intol) {
  ------------------
  |  Branch (514:6): [True: 474, False: 5.67k]
  |  Branch (514:19): [True: 473, False: 1]
  ------------------
  515|    473|		DBG(LOWPROBE, ul_debug("ERROR: superblocks chain: "
  ------------------
  |  |  358|    473|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|    473|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|    473|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|    473|	do { \
  |  |  |  |  |  |  |  |   76|    473|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|    473|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|    473|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 473]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|    473|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 473]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|    473|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|    473|		x; \
  |  |  |  |  |  |   85|    473|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  516|    473|			       "ambivalent result detected (%d filesystems)!",
  517|    473|			       count));
  518|    473|		rc = BLKID_PROBE_AMBIGUOUS;	/* error, ambivalent result (more FS) */
  ------------------
  |  |  484|    473|#define BLKID_PROBE_AMBIGUOUS	-2
  ------------------
  519|    473|		goto done;
  520|    473|	}
  521|  5.67k|	if (!count) {
  ------------------
  |  Branch (521:6): [True: 4.66k, False: 1.01k]
  ------------------
  522|  4.66k|		rc = BLKID_PROBE_NONE;
  ------------------
  |  |  471|  4.66k|#define BLKID_PROBE_NONE	1
  ------------------
  523|  4.66k|		goto done;
  524|  4.66k|	}
  525|       |
  526|  1.01k|	if (idx != -1) {
  ------------------
  |  Branch (526:6): [True: 983, False: 31]
  ------------------
  527|       |		/* restore the first result */
  528|    983|		blkid_probe_chain_reset_values(pr, chn);
  529|    983|		blkid_probe_append_values_list(pr, &vals);
  530|    983|		chn->idx = idx;
  531|    983|	}
  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|  1.01k|	if (chn->idx >= 0 && idinfos[chn->idx]->usage & BLKID_USAGE_RAID)
  ------------------
  |  |  345|  1.01k|#define BLKID_USAGE_RAID		(1 << 2)
  ------------------
  |  Branch (538:6): [True: 1.01k, False: 0]
  |  Branch (538:23): [True: 15, False: 999]
  ------------------
  539|     15|		pr->prob_flags |= BLKID_PROBE_FL_IGNORE_PT;
  ------------------
  |  |  250|     15|#define BLKID_PROBE_FL_IGNORE_PT (1 << 1)	/* ignore partition table */
  ------------------
  540|       |
  541|  1.01k|	rc = BLKID_PROBE_OK;
  ------------------
  |  |  465|  1.01k|#define BLKID_PROBE_OK	0
  ------------------
  542|  6.18k|done:
  543|  6.18k|	blkid_probe_free_values_list(&vals);
  544|  6.18k|	return rc;
  545|  1.01k|}

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

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

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

ubi.c:probe_ubi:
   37|     20|{
   38|     20|	const struct ubi_ec_hdr *hdr;
   39|       |
   40|     20|	hdr = blkid_probe_get_sb(pr, mag, struct ubi_ec_hdr);
  ------------------
  |  |  451|     20|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   41|     20|	if (!hdr)
  ------------------
  |  Branch (41:6): [True: 0, False: 20]
  ------------------
   42|      0|		return errno ? -errno : BLKID_PROBE_NONE;
  ------------------
  |  |  471|      0|#define BLKID_PROBE_NONE	1
  ------------------
  |  Branch (42:10): [True: 0, False: 0]
  ------------------
   43|       |
   44|     20|	if (!ubi_verify_csum(pr, hdr))
  ------------------
  |  Branch (44:6): [True: 20, False: 0]
  ------------------
   45|     20|		return BLKID_PROBE_NONE;
  ------------------
  |  |  471|     20|#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|     20|}
ubi.c:ubi_verify_csum:
   29|     20|{
   30|     20|	return blkid_probe_verify_csum(pr,
   31|     20|			ul_crc32(~0LL, (unsigned char *) hdr,
   32|     20|				sizeof(*hdr) - sizeof(hdr->hdr_crc)),
   33|       |			be32_to_cpu(hdr->hdr_crc));
  ------------------
  |  |  141|     20|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
   34|     20|}

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

udf.c:probe_udf:
  221|    840|{
  222|    840|	struct volume_descriptor *vd;
  223|    840|	struct volume_structure_descriptor *vsd;
  224|    840|	struct logical_vol_integ_descriptor_imp_use *lvidiu;
  225|    840|	uint32_t lvid_len = 0;
  226|    840|	uint32_t lvid_loc = 0;
  227|    840|	uint64_t s_off;
  228|    840|	uint32_t bs;
  229|    840|	uint32_t b;
  230|    840|	uint16_t type;
  231|    840|	uint32_t count;
  232|    840|	uint32_t loc;
  233|    840|	size_t i;
  234|    840|	uint32_t vsd_len;
  235|    840|	uint16_t udf_rev = 0;
  236|    840|	int is_udf = 0;
  237|    840|	int vsd_2048_valid = -1;
  238|    840|	int have_label = 0;
  239|    840|	int have_uuid = 0;
  240|    840|	int have_logvolid = 0;
  241|    840|	int have_volid = 0;
  242|    840|	int have_volsetid = 0;
  243|    840|	int have_applicationid = 0;
  244|    840|	int have_publisherid = 0;
  245|       |
  246|       |	/* Session offset */
  247|    840|	if (blkid_probe_get_hint(pr, "session_offset", &s_off) < 0)
  ------------------
  |  Branch (247:6): [True: 840, False: 0]
  ------------------
  248|    840|		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|    840|	uint32_t pbs[] = { 0, 512, 1024, 2048, 4096 };
  254|    840|	pbs[0] = blkid_probe_get_sectorsize(pr);
  255|       |
  256|  4.44k|	for (i = 0; i < ARRAY_SIZE(pbs); i++) {
  ------------------
  |  |  182|  4.44k|#define ARRAY_SIZE(arr) countof(arr)
  ------------------
  |  Branch (256:14): [True: 3.80k, False: 644]
  ------------------
  257|       |		/* Do not try with block size same as sector size two times */
  258|  3.80k|		if (i != 0 && pbs[0] == pbs[i])
  ------------------
  |  Branch (258:7): [True: 2.96k, False: 840]
  |  Branch (258:17): [True: 837, False: 2.12k]
  ------------------
  259|    837|			continue;
  260|       |
  261|       |		/* Do not try with block size which is not divisor of session offset */
  262|  2.96k|		if (s_off % pbs[i])
  ------------------
  |  Branch (262:7): [True: 0, False: 2.96k]
  ------------------
  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.96k|		vsd_len = pbs[i] > 2048 ? pbs[i] : 2048;
  ------------------
  |  Branch (268:13): [True: 644, False: 2.32k]
  ------------------
  269|       |
  270|       |		/* Process 2048 bytes long VSD on first session only once
  271|       |		 * as its location is same for any blocksize */
  272|  2.96k|		if (s_off == 0 && vsd_len == 2048) {
  ------------------
  |  Branch (272:7): [True: 2.96k, False: 0]
  |  Branch (272:21): [True: 2.32k, False: 644]
  ------------------
  273|  2.32k|			if (vsd_2048_valid == 0)
  ------------------
  |  Branch (273:8): [True: 1.17k, False: 1.14k]
  ------------------
  274|  1.17k|				continue;
  275|  1.14k|			if (vsd_2048_valid == 1)
  ------------------
  |  Branch (275:8): [True: 308, False: 840]
  ------------------
  276|    308|				goto anchor;
  277|  1.14k|		}
  278|       |
  279|       |		/* Check for a Volume Structure Descriptor (VSD) */
  280|  2.78k|		for (b = 0; b < 64; b++) {
  ------------------
  |  Branch (280:15): [True: 2.78k, False: 0]
  ------------------
  281|  2.78k|			vsd = (struct volume_structure_descriptor *)
  282|  2.78k|				blkid_probe_get_buffer(pr,
  283|  2.78k|						s_off + UDF_VSD_OFFSET + b * vsd_len,
  ------------------
  |  |  153|  2.78k|#define UDF_VSD_OFFSET			0x8000LL
  ------------------
  284|  2.78k|						sizeof(*vsd));
  285|  2.78k|			if (!vsd)
  ------------------
  |  Branch (285:8): [True: 0, False: 2.78k]
  ------------------
  286|      0|				return errno ? -errno : 1;
  ------------------
  |  Branch (286:12): [True: 0, False: 0]
  ------------------
  287|  2.78k|			if (vsd->id[0] == '\0')
  ------------------
  |  Branch (287:8): [True: 550, False: 2.23k]
  ------------------
  288|    550|				break;
  289|  2.23k|			if (memcmp(vsd->id, "NSR02", 5) == 0 ||
  ------------------
  |  Branch (289:8): [True: 86, False: 2.15k]
  ------------------
  290|  2.15k|			    memcmp(vsd->id, "NSR03", 5) == 0)
  ------------------
  |  Branch (290:8): [True: 229, False: 1.92k]
  ------------------
  291|    315|				goto anchor;
  292|  1.92k|			else if (memcmp(vsd->id, "BEA01", 5) != 0 &&
  ------------------
  |  Branch (292:13): [True: 1.85k, False: 66]
  ------------------
  293|  1.85k|			         memcmp(vsd->id, "BOOT2", 5) != 0 &&
  ------------------
  |  Branch (293:13): [True: 1.77k, False: 86]
  ------------------
  294|  1.77k|			         memcmp(vsd->id, "CD001", 5) != 0 &&
  ------------------
  |  Branch (294:13): [True: 710, False: 1.06k]
  ------------------
  295|    710|			         memcmp(vsd->id, "CDW02", 5) != 0 &&
  ------------------
  |  Branch (295:13): [True: 655, False: 55]
  ------------------
  296|    655|			         memcmp(vsd->id, "TEA01", 5) != 0)
  ------------------
  |  Branch (296:13): [True: 619, False: 36]
  ------------------
  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|    619|				break;
  305|  2.23k|		}
  306|       |
  307|  1.16k|		if (s_off == 0 && vsd_len == 2048)
  ------------------
  |  Branch (307:7): [True: 1.16k, False: 0]
  |  Branch (307:21): [True: 587, False: 582]
  ------------------
  308|    587|			vsd_2048_valid = 0;
  309|       |
  310|       |		/* NSR was not found, try with next block size */
  311|  1.16k|		continue;
  312|       |
  313|    623|anchor:
  314|    623|		if (s_off == 0 && vsd_len == 2048)
  ------------------
  |  Branch (314:7): [True: 623, False: 0]
  |  Branch (314:21): [True: 561, False: 62]
  ------------------
  315|    561|			vsd_2048_valid = 1;
  316|       |
  317|       |		/* Read Anchor Volume Descriptor (AVDP), detect block size */
  318|    623|		vd = (struct volume_descriptor *)
  319|    623|			blkid_probe_get_buffer(pr, s_off + 256 * pbs[i], sizeof(*vd));
  320|    623|		if (!vd)
  ------------------
  |  Branch (320:7): [True: 0, False: 623]
  ------------------
  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|    623|		if (le32_to_cpu(vd->tag.location) == s_off / pbs[i] + 256) {
  ------------------
  |  |  137|    623|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (324:7): [True: 204, False: 419]
  ------------------
  325|    204|			type = le16_to_cpu(vd->tag.id);
  ------------------
  |  |  136|    204|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  326|    204|			if (type == TAG_ID_AVDP)
  ------------------
  |  |  141|    204|#define TAG_ID_AVDP 2
  ------------------
  |  Branch (326:8): [True: 193, False: 11]
  ------------------
  327|    193|				goto real_blksz;
  328|    204|		}
  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|    430|		vd = (struct volume_descriptor *)
  333|    430|			blkid_probe_get_buffer(pr, s_off + 512 * pbs[i], sizeof(*vd));
  334|    430|		if (!vd)
  ------------------
  |  Branch (334:7): [True: 0, False: 430]
  ------------------
  335|      0|			return errno ? -errno : 1;
  ------------------
  |  Branch (335:11): [True: 0, False: 0]
  ------------------
  336|       |
  337|    430|		if (le32_to_cpu(vd->tag.location) == s_off / pbs[i] + 512) {
  ------------------
  |  |  137|    430|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (337:7): [True: 11, False: 419]
  ------------------
  338|     11|			type = le16_to_cpu(vd->tag.id);
  ------------------
  |  |  136|     11|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  339|     11|			if (type == TAG_ID_AVDP)
  ------------------
  |  |  141|     11|#define TAG_ID_AVDP 2
  ------------------
  |  Branch (339:8): [True: 3, False: 8]
  ------------------
  340|      3|				goto real_blksz;
  341|     11|		}
  342|       |
  343|    430|	}
  344|    644|	return 1;
  345|       |
  346|    196|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|    196|	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|    196|	count = le32_to_cpu(vd->type.anchor.length) / bs;
  ------------------
  |  |  137|    196|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  357|    196|	if (count > 64)
  ------------------
  |  Branch (357:6): [True: 13, False: 183]
  ------------------
  358|     13|		count = 64;
  359|    196|	loc = le32_to_cpu(vd->type.anchor.location);
  ------------------
  |  |  137|    196|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  360|       |
  361|       |	/* pick the primary descriptor from the list and read UDF identifiers */
  362|    350|	for (b = 0; b < count; b++) {
  ------------------
  |  Branch (362:14): [True: 197, False: 153]
  ------------------
  363|    197|		vd = (struct volume_descriptor *)
  364|    197|			blkid_probe_get_buffer(pr,
  365|    197|					((uint64_t) loc + b) * bs,
  366|    197|					sizeof(*vd));
  367|    197|		if (!vd)
  ------------------
  |  Branch (367:7): [True: 8, False: 189]
  ------------------
  368|      8|			return errno ? -errno : 1;
  ------------------
  |  Branch (368:11): [True: 0, False: 8]
  ------------------
  369|    189|		type = le16_to_cpu(vd->tag.id);
  ------------------
  |  |  136|    189|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  370|    189|		if (type == 0)
  ------------------
  |  Branch (370:7): [True: 7, False: 182]
  ------------------
  371|      7|			break;
  372|    182|		if (le32_to_cpu(vd->tag.location) != loc + b)
  ------------------
  |  |  137|    182|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  |  Branch (372:7): [True: 25, False: 157]
  ------------------
  373|     25|			break;
  374|    157|		if (type == TAG_ID_TD)
  ------------------
  |  |  144|    157|#define TAG_ID_TD   8
  ------------------
  |  Branch (374:7): [True: 3, False: 154]
  ------------------
  375|      3|			break;
  376|    154|		if (type == TAG_ID_PVD) {
  ------------------
  |  |  140|    154|#define TAG_ID_PVD  1
  ------------------
  |  Branch (376:7): [True: 104, False: 50]
  ------------------
  377|    104|			if (!have_volid && is_charset_udf(vd->type.primary.desc_charset)) {
  ------------------
  |  |   22|    104|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 94, False: 10]
  |  |  |  Branch (22:59): [True: 45, False: 49]
  |  |  ------------------
  ------------------
  |  Branch (377:8): [True: 104, False: 0]
  ------------------
  378|     45|				int enc = udf_cid_to_enc(vd->type.primary.ident.cid);
  ------------------
  |  |   24|     45|#define udf_cid_to_enc(cid) ((cid) == 8 ? UL_ENCODE_LATIN1 : (cid) == 16 ? UL_ENCODE_UTF16BE : -1)
  |  |  ------------------
  |  |  |  Branch (24:30): [True: 3, False: 42]
  |  |  |  Branch (24:62): [True: 0, False: 42]
  |  |  ------------------
  ------------------
  379|     45|				uint8_t clen = vd->type.primary.ident.clen;
  380|     45|				if (clen > 0)
  ------------------
  |  Branch (380:9): [True: 34, False: 11]
  ------------------
  381|     34|					--clen;
  382|     45|				if (clen > sizeof(vd->type.primary.ident.c))
  ------------------
  |  Branch (382:9): [True: 32, False: 13]
  ------------------
  383|     32|					clen = sizeof(vd->type.primary.ident.c);
  384|     45|				if (enc != -1)
  ------------------
  |  Branch (384:9): [True: 3, False: 42]
  ------------------
  385|      3|					have_volid = !blkid_probe_set_utf8_id_label(pr, "VOLUME_ID",
  386|      3|							vd->type.primary.ident.c, clen, enc);
  387|     45|			}
  388|    104|			if (!have_uuid && is_charset_udf(vd->type.primary.desc_charset)) {
  ------------------
  |  |   22|    104|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 94, False: 10]
  |  |  |  Branch (22:59): [True: 45, False: 49]
  |  |  ------------------
  ------------------
  |  Branch (388:8): [True: 104, 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|     45|				unsigned char uuid[17];
  419|     45|				if (gen_uuid_from_volset_id(uuid, &vd->type.primary.volset_id) == 0)
  ------------------
  |  Branch (419:9): [True: 26, False: 19]
  ------------------
  420|     26|					have_uuid = !blkid_probe_strncpy_uuid(pr, uuid, sizeof(uuid));
  421|     45|			}
  422|    104|			if (!have_volsetid && is_charset_udf(vd->type.primary.desc_charset)) {
  ------------------
  |  |   22|    104|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 94, False: 10]
  |  |  |  Branch (22:59): [True: 45, False: 49]
  |  |  ------------------
  ------------------
  |  Branch (422:8): [True: 104, False: 0]
  ------------------
  423|     45|				int enc = udf_cid_to_enc(vd->type.primary.volset_id.cid);
  ------------------
  |  |   24|     45|#define udf_cid_to_enc(cid) ((cid) == 8 ? UL_ENCODE_LATIN1 : (cid) == 16 ? UL_ENCODE_UTF16BE : -1)
  |  |  ------------------
  |  |  |  Branch (24:30): [True: 0, False: 45]
  |  |  |  Branch (24:62): [True: 35, False: 10]
  |  |  ------------------
  ------------------
  424|     45|				uint8_t clen = vd->type.primary.volset_id.clen;
  425|     45|				if (clen > 0)
  ------------------
  |  Branch (425:9): [True: 39, False: 6]
  ------------------
  426|     39|					--clen;
  427|     45|				if (clen > sizeof(vd->type.primary.volset_id.c))
  ------------------
  |  Branch (427:9): [True: 34, False: 11]
  ------------------
  428|     34|					clen = sizeof(vd->type.primary.volset_id.c);
  429|     45|				if (enc != -1)
  ------------------
  |  Branch (429:9): [True: 35, False: 10]
  ------------------
  430|     35|					have_volsetid = !blkid_probe_set_utf8_id_label(pr, "VOLUME_SET_ID",
  431|     35|							vd->type.primary.volset_id.c, clen, enc);
  432|     45|			}
  433|    104|			if (!have_applicationid) {
  ------------------
  |  Branch (433:8): [True: 104, 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|    104|				const unsigned char *app_id = (const unsigned char *)vd->type.primary.app_id;
  436|    104|				size_t app_id_len = strnlen(vd->type.primary.app_id, sizeof(vd->type.primary.app_id));
  437|    104|				if (app_id_len > 0 && app_id[0] == '*') {
  ------------------
  |  Branch (437:9): [True: 93, False: 11]
  |  Branch (437:27): [True: 3, False: 90]
  ------------------
  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|    104|				if (app_id_len == 0) {
  ------------------
  |  Branch (442:9): [True: 11, False: 93]
  ------------------
  443|       |					/* UDF-2.60: 2.1.5.2: "*Developer ID" refers to an Entity Identifier that uniquely identifies the current implementation */
  444|     11|					app_id = (const unsigned char *)vd->type.primary.imp_id;
  445|     11|					app_id_len = strnlen(vd->type.primary.imp_id, sizeof(vd->type.primary.imp_id));
  446|     11|					if (app_id_len > 0 && app_id[0] == '*') {
  ------------------
  |  Branch (446:10): [True: 4, False: 7]
  |  Branch (446:28): [True: 0, False: 4]
  ------------------
  447|      0|						app_id++;
  448|      0|						app_id_len--;
  449|      0|					}
  450|     11|				}
  451|    104|				if (app_id_len > 0) {
  ------------------
  |  Branch (451:9): [True: 97, False: 7]
  ------------------
  452|       |					/* UDF-2.60: 2.1.5.2: Values used by UDF for this field are specified in terms of ASCII character strings */
  453|     97|					have_applicationid = !blkid_probe_set_id_label(pr, "APPLICATION_ID", app_id, app_id_len);
  454|     97|				}
  455|    104|			}
  456|    104|		} else if (type == TAG_ID_LVD) {
  ------------------
  |  |  143|     50|#define TAG_ID_LVD  6
  ------------------
  |  Branch (456:14): [True: 18, False: 32]
  ------------------
  457|     18|			if (!lvid_len || !lvid_loc) {
  ------------------
  |  Branch (457:8): [True: 18, False: 0]
  |  Branch (457:21): [True: 0, False: 0]
  ------------------
  458|     18|				uint32_t num_partition_maps = le32_to_cpu(vd->type.logical.num_partition_maps);
  ------------------
  |  |  137|     18|#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|     18|				if (num_partition_maps) {
  ------------------
  |  Branch (460:9): [True: 13, False: 5]
  ------------------
  461|     13|					lvid_len = le32_to_cpu(vd->type.logical.lvid_length);
  ------------------
  |  |  137|     13|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  462|     13|					lvid_loc = le32_to_cpu(vd->type.logical.lvid_location);
  ------------------
  |  |  137|     13|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  463|     13|				}
  464|     18|			}
  465|     18|			if (!is_udf || !udf_rev) {
  ------------------
  |  Branch (465:8): [True: 18, 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|     18|				if (strncmp(vd->type.logical.domain_id, "*OSTA UDF Compliant", sizeof(vd->type.logical.domain_id)) == 0) {
  ------------------
  |  Branch (469:9): [True: 0, False: 18]
  ------------------
  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|     18|			}
  477|     18|			if ((!have_logvolid || !have_label) && is_charset_udf(vd->type.logical.desc_charset)) {
  ------------------
  |  |   22|     18|#define is_charset_udf(charspec) ((charspec).type == 0 && strncmp((charspec).info, "OSTA Compressed Unicode", sizeof((charspec).info)) == 0)
  |  |  ------------------
  |  |  |  Branch (22:35): [True: 8, False: 10]
  |  |  |  Branch (22:59): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  |  Branch (477:9): [True: 18, 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|     32|		} else if (type == TAG_ID_IUVD) {
  ------------------
  |  |  142|     32|#define TAG_ID_IUVD 4
  ------------------
  |  Branch (519:14): [True: 12, False: 20]
  ------------------
  520|     12|			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: 12, False: 0]
  |  Branch (520:29): [True: 0, False: 12]
  ------------------
  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|     12|		}
  537|    154|		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: 154]
  |  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|    154|	}
  540|       |
  541|    188|	if (!is_udf) {
  ------------------
  |  Branch (541:6): [True: 188, False: 0]
  ------------------
  542|       |		/* We detected some other ISO/IEC 13346 or ECMA-167 filesystem, not UDF */
  543|    188|		return 1;
  544|    188|	}
  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|}
udf.c:gen_uuid_from_volset_id:
  169|     45|{
  170|     45|	int enc;
  171|     45|	size_t i;
  172|     45|	size_t len;
  173|     45|	size_t clen;
  174|     45|	size_t nonhexpos;
  175|     45|	unsigned char buf[17];
  176|       |
  177|     45|	memset(buf, 0, sizeof(buf));
  178|       |
  179|     45|	clen = volset_id->clen;
  180|     45|	if (clen > 0)
  ------------------
  |  Branch (180:6): [True: 39, False: 6]
  ------------------
  181|     39|		--clen;
  182|     45|	if (clen > sizeof(volset_id->c))
  ------------------
  |  Branch (182:6): [True: 34, False: 11]
  ------------------
  183|     34|		clen = sizeof(volset_id->c);
  184|       |
  185|     45|	enc = udf_cid_to_enc(volset_id->cid);
  ------------------
  |  |   24|     45|#define udf_cid_to_enc(cid) ((cid) == 8 ? UL_ENCODE_LATIN1 : (cid) == 16 ? UL_ENCODE_UTF16BE : -1)
  |  |  ------------------
  |  |  |  Branch (24:30): [True: 0, False: 45]
  |  |  |  Branch (24:62): [True: 35, False: 10]
  |  |  ------------------
  ------------------
  186|     45|	if (enc == -1)
  ------------------
  |  Branch (186:6): [True: 10, False: 35]
  ------------------
  187|     10|		return -1;
  188|       |
  189|     35|	len = ul_encode_to_utf8(enc, buf, sizeof(buf), volset_id->c, clen);
  190|     35|	if (len < 8)
  ------------------
  |  Branch (190:6): [True: 9, False: 26]
  ------------------
  191|      9|		return -1;
  192|       |
  193|     26|	nonhexpos = 16;
  194|     26|	for (i = 0; i < 16; ++i) {
  ------------------
  |  Branch (194:14): [True: 26, False: 0]
  ------------------
  195|     26|		if (!isxdigit(buf[i])) {
  ------------------
  |  Branch (195:7): [True: 26, False: 0]
  ------------------
  196|     26|			nonhexpos = i;
  197|     26|			break;
  198|     26|		}
  199|     26|	}
  200|       |
  201|     26|	if (nonhexpos < 8) {
  ------------------
  |  Branch (201:6): [True: 26, False: 0]
  ------------------
  202|     26|		snprintf((char *) uuid, 17, "%02x%02x%02x%02x%02x%02x%02x%02x",
  203|     26|			buf[0], buf[1], buf[2], buf[3],
  204|     26|			buf[4], buf[5], buf[6], buf[7]);
  205|     26|	} else if (nonhexpos < 16) {
  ------------------
  |  Branch (205:13): [True: 0, False: 0]
  ------------------
  206|      0|		for (i = 0; i < 8; ++i)
  ------------------
  |  Branch (206:15): [True: 0, False: 0]
  ------------------
  207|      0|			uuid[i] = tolower(buf[i]);
  ------------------
  |  Branch (207:14): [True: 0, False: 0]
  |  Branch (207:14): [True: 0, False: 0]
  |  Branch (207:14): [Folded, False: 0]
  ------------------
  208|      0|		snprintf((char *) uuid + 8, 9, "%02x%02x%02x%02x",
  209|      0|			buf[8], buf[9], buf[10], buf[11]);
  210|      0|	} else {
  211|      0|		for (i = 0; i < 16; ++i)
  ------------------
  |  Branch (211:15): [True: 0, False: 0]
  ------------------
  212|      0|			uuid[i] = tolower(buf[i]);
  ------------------
  |  Branch (212:14): [True: 0, False: 0]
  |  Branch (212:14): [True: 0, False: 0]
  |  Branch (212:14): [Folded, False: 0]
  ------------------
  213|      0|		uuid[16] = 0;
  214|      0|	}
  215|       |
  216|     26|	return 0;
  217|     35|}

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

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

blkid_probe_is_vfat:
  278|    266|{
  279|    266|	const struct vfat_super_block *vs;
  280|    266|	const struct msdos_super_block *ms;
  281|    266|	const struct blkid_idmag *mag = NULL;
  282|    266|	int rc;
  283|       |
  284|    266|	rc = blkid_probe_get_idmag(pr, &vfat_idinfo, NULL, &mag);
  285|    266|	if (rc < 0)
  ------------------
  |  Branch (285:6): [True: 0, False: 266]
  ------------------
  286|      0|		return rc;	/* error */
  287|    266|	if (rc != BLKID_PROBE_OK || !mag)
  ------------------
  |  |  465|    532|#define BLKID_PROBE_OK	0
  ------------------
  |  Branch (287:6): [True: 0, False: 266]
  |  Branch (287:30): [True: 0, False: 266]
  ------------------
  288|      0|		return 0;
  289|       |
  290|    266|	ms = blkid_probe_get_sb(pr, mag, struct msdos_super_block);
  ------------------
  |  |  451|    266|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  291|    266|	if (!ms)
  ------------------
  |  Branch (291:6): [True: 0, False: 266]
  ------------------
  292|      0|		return errno ? -errno : 0;
  ------------------
  |  Branch (292:10): [True: 0, False: 0]
  ------------------
  293|    266|	vs = blkid_probe_get_sb(pr, mag, struct vfat_super_block);
  ------------------
  |  |  451|    266|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  294|    266|	if (!vs)
  ------------------
  |  Branch (294:6): [True: 0, False: 266]
  ------------------
  295|      0|		return errno ? -errno : 0;
  ------------------
  |  Branch (295:10): [True: 0, False: 0]
  ------------------
  296|       |
  297|    266|	return fat_valid_superblock(pr, mag, ms, vs, NULL, NULL, NULL);
  298|    266|}
vfat.c:fat_valid_superblock:
  190|  4.35k|{
  191|  4.35k|	uint16_t sector_size, dir_entries, reserved;
  192|  4.35k|	uint32_t __sect_count, __fat_size, dir_size, __cluster_count, fat_length;
  193|  4.35k|	uint32_t max_count;
  194|       |
  195|       |	/* extra check for FATs without magic strings */
  196|  4.35k|	if (mag->len <= 2) {
  ------------------
  |  Branch (196:6): [True: 1.13k, False: 3.22k]
  ------------------
  197|       |		/* Old floppies have a valid MBR signature */
  198|  1.13k|		if (ms->ms_pmagic[0] != 0x55 || ms->ms_pmagic[1] != 0xAA)
  ------------------
  |  Branch (198:7): [True: 180, False: 953]
  |  Branch (198:35): [True: 18, False: 935]
  ------------------
  199|    198|			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|    935|		if ((memcmp(ms->ms_magic, "JFS     ", 8) == 0) ||
  ------------------
  |  Branch (210:7): [True: 21, False: 914]
  ------------------
  211|    914|		    (memcmp(ms->ms_magic, "HPFS    ", 8) == 0)) {
  ------------------
  |  Branch (211:7): [True: 23, False: 891]
  ------------------
  212|     44|			DBG(LOWPROBE, ul_debug("\tJFS/HPFS detected"));
  ------------------
  |  |  358|     44|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     44|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     44|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     44|	do { \
  |  |  |  |  |  |  |  |   76|     44|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     44|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     44|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 44]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     44|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 44]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     44|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     44|		x; \
  |  |  |  |  |  |   85|     44|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|     44|			return 0;
  214|     44|		}
  215|    935|	}
  216|       |
  217|       |	/* fat counts(Linux kernel expects at least 1 FAT table) */
  218|  4.11k|	if (!ms->ms_fats)
  ------------------
  |  Branch (218:6): [True: 1.49k, False: 2.61k]
  ------------------
  219|  1.49k|		return 0;
  220|  2.61k|	if (!ms->ms_reserved)
  ------------------
  |  Branch (220:6): [True: 99, False: 2.51k]
  ------------------
  221|     99|		return 0;
  222|  2.51k|	if (!(0xf8 <= ms->ms_media || ms->ms_media == 0xf0))
  ------------------
  |  Branch (222:8): [True: 1.81k, False: 700]
  |  Branch (222:32): [True: 13, False: 687]
  ------------------
  223|    687|		return 0;
  224|  1.83k|	if (!is_power_of_2(ms->ms_cluster_size))
  ------------------
  |  Branch (224:6): [True: 638, False: 1.19k]
  ------------------
  225|    638|		return 0;
  226|       |
  227|  1.19k|	sector_size = unaligned_le16(&ms->ms_sector_size);
  ------------------
  |  |  125|  1.19k|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  228|  1.19k|	if (!is_power_of_2(sector_size) ||
  ------------------
  |  Branch (228:6): [True: 176, False: 1.01k]
  ------------------
  229|  1.01k|	    sector_size < 512 || sector_size > 4096)
  ------------------
  |  Branch (229:6): [True: 34, False: 984]
  |  Branch (229:27): [True: 7, False: 977]
  ------------------
  230|    217|		return 0;
  231|       |
  232|    977|	dir_entries = unaligned_le16(&ms->ms_dir_entries);
  ------------------
  |  |  125|    977|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  233|    977|	reserved =  le16_to_cpu(ms->ms_reserved);
  ------------------
  |  |  136|    977|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  234|    977|	__sect_count = unaligned_le16(&ms->ms_sectors);
  ------------------
  |  |  125|    977|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  235|       |
  236|    977|	if (__sect_count == 0)
  ------------------
  |  Branch (236:6): [True: 435, False: 542]
  ------------------
  237|    435|		__sect_count = le32_to_cpu(ms->ms_total_sect);
  ------------------
  |  |  137|    435|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  238|       |
  239|    977|	fat_length = le16_to_cpu(ms->ms_fat_length);
  ------------------
  |  |  136|    977|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  240|    977|	if (fat_length == 0)
  ------------------
  |  Branch (240:6): [True: 756, False: 221]
  ------------------
  241|    756|		fat_length = le32_to_cpu(vs->vs_fat32_length);
  ------------------
  |  |  137|    756|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  242|       |
  243|    977|	__fat_size = fat_length * ms->ms_fats;
  244|    977|	dir_size = ((dir_entries * sizeof(struct vfat_dir_entry)) +
  245|    977|					(sector_size-1)) / sector_size;
  246|       |
  247|    977|	__cluster_count = (__sect_count - (reserved + __fat_size + dir_size)) /
  248|    977|							ms->ms_cluster_size;
  249|    977|	if (!ms->ms_fat_length && vs->vs_fat32_length)
  ------------------
  |  Branch (249:6): [True: 756, False: 221]
  |  Branch (249:28): [True: 730, False: 26]
  ------------------
  250|    730|		max_count = FAT32_MAX;
  ------------------
  |  |  114|    730|#define FAT32_MAX 0x0FFFFFF6
  ------------------
  251|    247|	else
  252|    247|		max_count = __cluster_count > FAT12_MAX ? FAT16_MAX : FAT12_MAX;
  ------------------
  |  |  112|    247|#define FAT12_MAX 0xFF4
  ------------------
              		max_count = __cluster_count > FAT12_MAX ? FAT16_MAX : FAT12_MAX;
  ------------------
  |  |  113|    182|#define FAT16_MAX 0xFFF4
  ------------------
              		max_count = __cluster_count > FAT12_MAX ? FAT16_MAX : FAT12_MAX;
  ------------------
  |  |  112|     65|#define FAT12_MAX 0xFF4
  ------------------
  |  Branch (252:15): [True: 182, False: 65]
  ------------------
  253|       |
  254|    977|	if (__cluster_count > max_count)
  ------------------
  |  Branch (254:6): [True: 126, False: 851]
  ------------------
  255|    126|		return 0;
  256|       |
  257|    851|	if (fat_size)
  ------------------
  |  Branch (257:6): [True: 690, False: 161]
  ------------------
  258|    690|		*fat_size = __fat_size;
  259|    851|	if (cluster_count)
  ------------------
  |  Branch (259:6): [True: 690, False: 161]
  ------------------
  260|    690|		*cluster_count = __cluster_count;
  261|    851|	if (sect_count)
  ------------------
  |  Branch (261:6): [True: 690, False: 161]
  ------------------
  262|    690|		*sect_count = __sect_count;
  263|       |
  264|    851|	if (blkid_probe_is_bitlocker(pr))
  ------------------
  |  Branch (264:6): [True: 13, False: 838]
  ------------------
  265|     13|		return 0;
  266|       |
  267|    838|	return 1;	/* valid */
  268|    851|}
vfat.c:probe_vfat:
  303|  4.08k|{
  304|  4.08k|	const struct vfat_super_block *vs;
  305|  4.08k|	const struct msdos_super_block *ms;
  306|  4.08k|	const unsigned char *vol_label = NULL;
  307|  4.08k|	const unsigned char *boot_label = NULL;
  308|  4.08k|	const unsigned char *vol_serno = NULL;
  309|  4.08k|	unsigned char vol_label_buf[11];
  310|  4.08k|	uint16_t sector_size = 0, reserved;
  311|  4.08k|	uint32_t cluster_count, fat_size, sect_count;
  312|  4.08k|	const char *version = NULL;
  313|       |
  314|  4.08k|	ms = blkid_probe_get_sb(pr, mag, struct msdos_super_block);
  ------------------
  |  |  451|  4.08k|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  315|  4.08k|	if (!ms)
  ------------------
  |  Branch (315:6): [True: 0, False: 4.08k]
  ------------------
  316|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (316:10): [True: 0, False: 0]
  ------------------
  317|       |
  318|  4.08k|	vs = blkid_probe_get_sb(pr, mag, struct vfat_super_block);
  ------------------
  |  |  451|  4.08k|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  319|  4.08k|	if (!vs)
  ------------------
  |  Branch (319:6): [True: 0, False: 4.08k]
  ------------------
  320|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (320:10): [True: 0, False: 0]
  ------------------
  321|       |
  322|  4.08k|	if (!fat_valid_superblock(pr, mag, ms, vs, &cluster_count, &fat_size,
  ------------------
  |  Branch (322:6): [True: 3.40k, False: 685]
  ------------------
  323|  4.08k|				&sect_count))
  324|  3.40k|		return 1;
  325|       |
  326|    685|	sector_size = unaligned_le16(&ms->ms_sector_size);
  ------------------
  |  |  125|    685|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  327|    685|	reserved =  le16_to_cpu(ms->ms_reserved);
  ------------------
  |  |  136|    685|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  328|       |
  329|    685|	if (ms->ms_fat_length) {
  ------------------
  |  Branch (329:6): [True: 107, False: 578]
  ------------------
  330|       |		/* the label may be an attribute in the root directory */
  331|    107|		uint64_t root_start = ((uint64_t) reserved + fat_size) * sector_size;
  332|    107|		uint32_t root_dir_entries = unaligned_le16(&vs->vs_dir_entries);
  ------------------
  |  |  125|    107|		(((unsigned char *) x)[0] + (((unsigned char *) x)[1] << 8))
  ------------------
  333|       |
  334|    107|		if (search_fat_label(pr, root_start, root_dir_entries, vol_label_buf))
  ------------------
  |  Branch (334:7): [True: 7, False: 100]
  ------------------
  335|      7|			vol_label = vol_label_buf;
  336|       |
  337|    107|		if (ms->ms_ext_boot_sign == 0x29)
  ------------------
  |  Branch (337:7): [True: 5, False: 102]
  ------------------
  338|      5|			boot_label = ms->ms_label;
  339|       |
  340|    107|		if (ms->ms_ext_boot_sign == 0x28 || ms->ms_ext_boot_sign == 0x29)
  ------------------
  |  Branch (340:7): [True: 4, False: 103]
  |  Branch (340:39): [True: 5, False: 98]
  ------------------
  341|      9|			vol_serno = ms->ms_serno;
  342|       |
  343|    107|		blkid_probe_set_value(pr, "SEC_TYPE", (unsigned char *) "msdos",
  344|    107|                              sizeof("msdos"));
  345|       |
  346|    107|		if (cluster_count < FAT12_MAX)
  ------------------
  |  |  112|    107|#define FAT12_MAX 0xFF4
  ------------------
  |  Branch (346:7): [True: 51, False: 56]
  ------------------
  347|     51|			version = "FAT12";
  348|     56|		else if (cluster_count < FAT16_MAX)
  ------------------
  |  |  113|     56|#define FAT16_MAX 0xFFF4
  ------------------
  |  Branch (348:12): [True: 55, False: 1]
  ------------------
  349|     55|			version = "FAT16";
  350|       |
  351|    578|	} else if (vs->vs_fat32_length) {
  ------------------
  |  Branch (351:13): [True: 573, False: 5]
  ------------------
  352|    573|		const unsigned char *buf;
  353|    573|		uint16_t fsinfo_sect;
  354|    573|		int maxloop = 100;
  355|       |
  356|       |		/* Search the FAT32 root dir for the label attribute */
  357|    573|		uint32_t buf_size = vs->vs_cluster_size * sector_size;
  358|    573|		uint32_t start_data_sect = reserved + fat_size;
  359|    573|		uint32_t entries = ((uint64_t) le32_to_cpu(vs->vs_fat32_length)
  ------------------
  |  |  137|    573|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  360|    573|					* sector_size) / sizeof(uint32_t);
  361|    573|		uint32_t next = le32_to_cpu(vs->vs_root_cluster);
  ------------------
  |  |  137|    573|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  362|       |
  363|  6.72k|		while (next && next < entries && --maxloop) {
  ------------------
  |  Branch (363:10): [True: 6.59k, False: 125]
  |  Branch (363:18): [True: 6.37k, False: 223]
  |  Branch (363:36): [True: 6.31k, False: 57]
  ------------------
  364|  6.31k|			uint32_t next_sect_off;
  365|  6.31k|			uint64_t next_off, fat_entry_off;
  366|  6.31k|			int count;
  367|       |
  368|  6.31k|			next_sect_off = (next - 2) * vs->vs_cluster_size;
  369|  6.31k|			next_off = ((uint64_t) start_data_sect + next_sect_off) *
  370|  6.31k|				sector_size;
  371|       |
  372|  6.31k|			count = buf_size / sizeof(struct vfat_dir_entry);
  373|       |
  374|  6.31k|			if (search_fat_label(pr, next_off, count, vol_label_buf)) {
  ------------------
  |  Branch (374:8): [True: 31, False: 6.28k]
  ------------------
  375|     31|				vol_label = vol_label_buf;
  376|     31|				break;
  377|     31|			}
  378|       |
  379|       |			/* get FAT entry */
  380|  6.28k|			fat_entry_off = ((uint64_t) reserved * sector_size) +
  381|  6.28k|				(next * sizeof(uint32_t));
  382|  6.28k|			buf = blkid_probe_get_buffer(pr, fat_entry_off, buf_size);
  383|  6.28k|			if (buf == NULL)
  ------------------
  |  Branch (383:8): [True: 137, False: 6.14k]
  ------------------
  384|    137|				break;
  385|       |
  386|       |			/* set next cluster */
  387|  6.14k|			next = le32_to_cpu(*((uint32_t *) buf)) & 0x0fffffff;
  ------------------
  |  |  137|  6.14k|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
  388|  6.14k|		}
  389|       |
  390|    573|		version = "FAT32";
  391|       |
  392|    573|		if (vs->vs_ext_boot_sign == 0x29)
  ------------------
  |  Branch (392:7): [True: 3, False: 570]
  ------------------
  393|      3|			boot_label = vs->vs_label;
  394|       |
  395|    573|		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|    573|		fsinfo_sect = le16_to_cpu(vs->vs_fsinfo_sector);
  ------------------
  |  |  136|    573|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
  403|    573|		if (fsinfo_sect) {
  ------------------
  |  Branch (403:7): [True: 563, False: 10]
  ------------------
  404|    563|			struct fat32_fsinfo *fsinfo;
  405|       |
  406|    563|			buf = blkid_probe_get_buffer(pr,
  407|    563|					(uint64_t) fsinfo_sect * sector_size,
  408|    563|					sizeof(struct fat32_fsinfo));
  409|    563|			if (buf == NULL)
  ------------------
  |  Branch (409:8): [True: 114, False: 449]
  ------------------
  410|    114|				return errno ? -errno : 1;
  ------------------
  |  Branch (410:12): [True: 0, False: 114]
  ------------------
  411|       |
  412|    449|			fsinfo = (struct fat32_fsinfo *) buf;
  413|    449|			if (memcmp(fsinfo->signature1, "\x52\x52\x61\x41", 4) != 0 &&
  ------------------
  |  Branch (413:8): [True: 446, False: 3]
  ------------------
  414|    446|			    memcmp(fsinfo->signature1, "\x52\x52\x64\x41", 4) != 0 &&
  ------------------
  |  Branch (414:8): [True: 441, False: 5]
  ------------------
  415|    441|			    memcmp(fsinfo->signature1, "\x00\x00\x00\x00", 4) != 0)
  ------------------
  |  Branch (415:8): [True: 269, False: 172]
  ------------------
  416|    269|				return 1;
  417|    180|			if (memcmp(fsinfo->signature2, "\x72\x72\x41\x61", 4) != 0 &&
  ------------------
  |  Branch (417:8): [True: 179, False: 1]
  ------------------
  418|    179|			    memcmp(fsinfo->signature2, "\x00\x00\x00\x00", 4) != 0)
  ------------------
  |  Branch (418:8): [True: 84, False: 95]
  ------------------
  419|     84|				return 1;
  420|    180|		}
  421|    573|	}
  422|       |
  423|    218|	if (boot_label && memcmp(boot_label, no_name, 11) != 0)
  ------------------
  |  Branch (423:6): [True: 6, False: 212]
  |  Branch (423:20): [True: 5, False: 1]
  ------------------
  424|      5|		blkid_probe_set_id_label(pr, "LABEL_FATBOOT", boot_label, 11);
  425|       |
  426|    218|	if (vol_label)
  ------------------
  |  Branch (426:6): [True: 17, False: 201]
  ------------------
  427|     17|		blkid_probe_set_label(pr, vol_label, 11);
  428|       |
  429|       |	/* We can't just print them as %04X, because they are unaligned */
  430|    218|	if (vol_serno)
  ------------------
  |  Branch (430:6): [True: 115, False: 103]
  ------------------
  431|    115|		blkid_probe_sprintf_uuid(pr, vol_serno, 4, "%02X%02X-%02X%02X",
  432|    115|			vol_serno[3], vol_serno[2], vol_serno[1], vol_serno[0]);
  433|    218|	if (version)
  ------------------
  |  Branch (433:6): [True: 212, False: 6]
  ------------------
  434|    212|		blkid_probe_set_version(pr, version);
  435|       |
  436|    218|	blkid_probe_set_fsblocksize(pr, vs->vs_cluster_size * sector_size);
  437|    218|	blkid_probe_set_block_size(pr, sector_size);
  438|    218|	blkid_probe_set_fssize(pr, (uint64_t) sector_size * sect_count);
  439|       |
  440|    218|	return 0;
  441|    685|}
vfat.c:search_fat_label:
  131|  6.42k|{
  132|  6.42k|	const struct vfat_dir_entry *ent, *dir = NULL;
  133|  6.42k|	uint32_t i;
  134|       |
  135|  6.42k|	DBG(LOWPROBE, ul_debug("\tlook for label in root-dir "
  ------------------
  |  |  358|  6.42k|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|  6.42k|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|  6.42k|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|  6.42k|	do { \
  |  |  |  |  |  |  |  |   76|  6.42k|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|  6.42k|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|  6.42k|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 6.42k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|  6.42k|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 6.42k]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|  6.42k|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|  6.42k|		x; \
  |  |  |  |  |  |   85|  6.42k|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|  6.42k|			"(entries: %"PRIu32", offset: %"PRIu64")", entries, offset));
  137|       |
  138|  6.42k|	if (!blkid_probe_is_tiny(pr)) {
  ------------------
  |  Branch (138:6): [True: 6.42k, False: 0]
  ------------------
  139|       |		/* large disk, read whole root directory */
  140|  6.42k|		dir = (struct vfat_dir_entry *)
  141|  6.42k|			blkid_probe_get_buffer(pr,
  142|  6.42k|					offset,
  143|  6.42k|					(uint64_t) entries *
  144|  6.42k|						sizeof(struct vfat_dir_entry));
  145|  6.42k|		if (!dir)
  ------------------
  |  Branch (145:7): [True: 2.52k, False: 3.89k]
  ------------------
  146|  2.52k|			return 0;
  147|  6.42k|	}
  148|       |
  149|  50.0k|	for (i = 0; i < entries; i++) {
  ------------------
  |  Branch (149:14): [True: 49.7k, False: 351]
  ------------------
  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|  49.7k|		if (!dir)
  ------------------
  |  Branch (155:7): [True: 0, False: 49.7k]
  ------------------
  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|  49.7k|		else
  162|  49.7k|			ent = &dir[i];
  163|       |
  164|  49.7k|		if (!ent || ent->name[0] == 0x00)
  ------------------
  |  Branch (164:7): [True: 0, False: 49.7k]
  |  Branch (164:15): [True: 3.50k, False: 46.2k]
  ------------------
  165|  3.50k|			break;
  166|       |
  167|  46.2k|		if ((ent->name[0] == FAT_ENTRY_FREE) ||
  ------------------
  |  |  120|  46.2k|#define FAT_ENTRY_FREE			0xe5
  ------------------
  |  Branch (167:7): [True: 2.28k, False: 43.9k]
  ------------------
  168|  43.9k|		    (ent->cluster_high != 0 || ent->cluster_low != 0) ||
  ------------------
  |  Branch (168:8): [True: 42.1k, False: 1.84k]
  |  Branch (168:34): [True: 743, False: 1.10k]
  ------------------
  169|  1.10k|		    ((ent->attr & FAT_ATTR_MASK) == FAT_ATTR_LONG_NAME))
  ------------------
  |  |  119|  1.10k|#define FAT_ATTR_MASK			0x3f
  ------------------
              		    ((ent->attr & FAT_ATTR_MASK) == FAT_ATTR_LONG_NAME))
  ------------------
  |  |  118|  1.10k|#define FAT_ATTR_LONG_NAME		0x0f
  ------------------
  |  Branch (169:7): [True: 339, False: 761]
  ------------------
  170|  45.4k|			continue;
  171|       |
  172|    761|		if ((ent->attr & (FAT_ATTR_VOLUME_ID | FAT_ATTR_DIR)) ==
  ------------------
  |  |  116|    761|#define FAT_ATTR_VOLUME_ID		0x08
  ------------------
              		if ((ent->attr & (FAT_ATTR_VOLUME_ID | FAT_ATTR_DIR)) ==
  ------------------
  |  |  117|    761|#define FAT_ATTR_DIR			0x10
  ------------------
  |  Branch (172:7): [True: 38, False: 723]
  ------------------
  173|    761|		    FAT_ATTR_VOLUME_ID) {
  ------------------
  |  |  116|    761|#define FAT_ATTR_VOLUME_ID		0x08
  ------------------
  174|     38|			DBG(LOWPROBE, ul_debug("\tfound fs LABEL at entry %"PRIu32, i));
  ------------------
  |  |  358|     38|#define DBG(m, x)		__UL_DBG(libblkid, BLKID_DEBUG_, m, x)
  |  |  ------------------
  |  |  |  |   88|     38|	__UL_DBG_OBJ(lib, pref, flag, NULL, x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   82|     38|	__UL_DBG_CALL(lib, pref, flag, { \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   75|     38|	do { \
  |  |  |  |  |  |  |  |   76|     38|		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  350|     38|#define BLKID_DEBUG_LOWPROBE	(1 << 8)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |               		if ((pref ## flag) & UL_DEBUG_MASK(lib)) { \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   63|     38|#define UL_DEBUG_MASK(lib)         lib ## _debug_mask
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (76:7): [True: 0, False: 38]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   77|      0|			x; \
  |  |  |  |  |  |  |  |   78|      0|		} \
  |  |  |  |  |  |  |  |   79|     38|	} while (0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (79:11): [Folded, False: 38]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   83|     38|		ul_debug_prefix(# lib, # flag, h, UL_DEBUG_MASK(lib)); \
  |  |  |  |  |  |   84|     38|		x; \
  |  |  |  |  |  |   85|     38|	})
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  175|     38|			memcpy(out, ent->name, 11);
  176|     38|			if (out[0] == 0x05)
  ------------------
  |  Branch (176:8): [True: 3, False: 35]
  ------------------
  177|      3|				out[0] = 0xE5;
  178|     38|			return 1;
  179|     38|		}
  180|    761|	}
  181|  3.85k|	return 0;
  182|  3.89k|}

via_raid.c:probe_viaraid:
   50|  6.17k|{
   51|  6.17k|	uint64_t off;
   52|  6.17k|	struct via_metadata *v;
   53|       |
   54|  6.17k|	if (!S_ISREG(pr->mode) && !blkid_probe_is_wholedisk(pr))
  ------------------
  |  Branch (54:6): [True: 0, False: 6.17k]
  |  Branch (54:28): [True: 0, False: 0]
  ------------------
   55|      0|		return 1;
   56|       |
   57|  6.17k|	off = ((pr->size / 0x200)-1) * 0x200;
   58|       |
   59|  6.17k|	v = (struct via_metadata *)
   60|  6.17k|			blkid_probe_get_buffer(pr,
   61|  6.17k|				off,
   62|  6.17k|				sizeof(struct via_metadata));
   63|  6.17k|	if (!v)
  ------------------
  |  Branch (63:6): [True: 0, False: 6.17k]
  ------------------
   64|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (64:10): [True: 0, False: 0]
  ------------------
   65|       |
   66|  6.17k|	if (le16_to_cpu(v->signature) != VIA_SIGNATURE)
  ------------------
  |  |  136|  6.17k|#define le16_to_cpu(x) ((uint16_t) le16toh(x))
  ------------------
              	if (le16_to_cpu(v->signature) != VIA_SIGNATURE)
  ------------------
  |  |   35|  6.17k|#define VIA_SIGNATURE		0xAA55
  ------------------
  |  Branch (66:6): [True: 6.17k, False: 0]
  ------------------
   67|  6.17k|		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|     93|{
   28|     93|	const struct vxfs_super_block *vxs;
   29|     93|	enum blkid_endianness e = mag->hint;
   30|       |
   31|     93|	vxs = blkid_probe_get_sb(pr, mag, struct vxfs_super_block);
  ------------------
  |  |  451|     93|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
   32|     93|	if (!vxs)
  ------------------
  |  Branch (32:6): [True: 0, False: 93]
  ------------------
   33|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (33:10): [True: 0, False: 0]
  ------------------
   34|       |
   35|     93|	blkid_probe_sprintf_version(pr, "%d",
   36|     93|				    (unsigned int)blkid32_to_cpu(e, vxs->vs_version));
   37|     93|	blkid_probe_set_fsblocksize(pr, blkid32_to_cpu(e, vxs->vs_bsize));
   38|     93|	blkid_probe_set_block_size(pr, blkid32_to_cpu(e, vxs->vs_bsize));
   39|     93|	blkid_probe_set_fsendianness(pr, e);
   40|       |
   41|     93|	return 0;
   42|     93|}

xfs.c:probe_xfs:
  243|    559|{
  244|    559|	const struct xfs_super_block *xs;
  245|       |
  246|    559|	xs = blkid_probe_get_sb(pr, mag, struct xfs_super_block);
  ------------------
  |  |  451|    559|			((const type *) blkid_probe_get_sb_buffer((_pr), _mag, sizeof(type)))
  ------------------
  247|    559|	if (!xs)
  ------------------
  |  Branch (247:6): [True: 0, False: 559]
  ------------------
  248|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (248:10): [True: 0, False: 0]
  ------------------
  249|       |
  250|    559|	if (!xfs_verify_sb(xs, pr, mag))
  ------------------
  |  Branch (250:6): [True: 504, False: 55]
  ------------------
  251|    504|		return 1;
  252|       |
  253|     55|	if (*xs->sb_fname != '\0')
  ------------------
  |  Branch (253:6): [True: 47, False: 8]
  ------------------
  254|     47|		blkid_probe_set_label(pr, (unsigned char *) xs->sb_fname,
  255|     47|				sizeof(xs->sb_fname));
  256|     55|	blkid_probe_set_uuid(pr, xs->sb_uuid);
  257|     55|	blkid_probe_set_fssize(pr, xfs_fssize(xs));
  258|     55|	blkid_probe_set_fslastblock(pr, be64_to_cpu(xs->sb_dblocks));
  ------------------
  |  |  142|     55|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  259|     55|	blkid_probe_set_fsblocksize(pr, be32_to_cpu(xs->sb_blocksize));
  ------------------
  |  |  141|     55|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  260|       |	blkid_probe_set_block_size(pr, be16_to_cpu(xs->sb_sectsize));
  ------------------
  |  |  140|     55|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  261|     55|	return 0;
  262|    559|}
xfs.c:xfs_verify_sb:
  175|    559|{
  176|    559|	struct xfs_super_block sb, *sbp = &sb;
  177|       |
  178|       |	/* beXX_to_cpu(), but don't convert UUID and fsname! */
  179|    559|	sb_from_disk(ondisk, sbp);
  180|       |
  181|       |	/* sanity checks, we don't want to rely on magic string only */
  182|    559|	if (sbp->sb_agcount <= 0					||
  ------------------
  |  Branch (182:6): [True: 29, False: 530]
  ------------------
  183|    530|	    sbp->sb_sectsize < XFS_MIN_SECTORSIZE			||
  ------------------
  |  |   93|  1.08k|#define XFS_MIN_SECTORSIZE	(1 << XFS_MIN_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   91|    530|#define XFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (183:6): [True: 29, False: 501]
  ------------------
  184|    501|	    sbp->sb_sectsize > XFS_MAX_SECTORSIZE			||
  ------------------
  |  |   94|  1.06k|#define XFS_MAX_SECTORSIZE	(1 << XFS_MAX_SECTORSIZE_LOG)
  |  |  ------------------
  |  |  |  |   92|    501|#define XFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  |  |  ------------------
  ------------------
  |  Branch (184:6): [True: 40, False: 461]
  ------------------
  185|    461|	    sbp->sb_sectlog < XFS_MIN_SECTORSIZE_LOG			||
  ------------------
  |  |   91|  1.02k|#define XFS_MIN_SECTORSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (185:6): [True: 14, False: 447]
  ------------------
  186|    447|	    sbp->sb_sectlog > XFS_MAX_SECTORSIZE_LOG			||
  ------------------
  |  |   92|  1.00k|#define XFS_MAX_SECTORSIZE_LOG	15	/* i.e. 32768 bytes */
  ------------------
  |  Branch (186:6): [True: 45, False: 402]
  ------------------
  187|    402|	    sbp->sb_sectsize != (1 << sbp->sb_sectlog)			||
  ------------------
  |  Branch (187:6): [True: 19, False: 383]
  ------------------
  188|    383|	    sbp->sb_blocksize < XFS_MIN_BLOCKSIZE			||
  ------------------
  |  |   89|    942|#define XFS_MIN_BLOCKSIZE	(1 << XFS_MIN_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   87|    383|#define XFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  |  |  ------------------
  ------------------
  |  Branch (188:6): [True: 4, False: 379]
  ------------------
  189|    379|	    sbp->sb_blocksize > XFS_MAX_BLOCKSIZE			||
  ------------------
  |  |   90|    938|#define XFS_MAX_BLOCKSIZE	(1 << XFS_MAX_BLOCKSIZE_LOG)
  |  |  ------------------
  |  |  |  |   88|    379|#define XFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  |  |  ------------------
  ------------------
  |  Branch (189:6): [True: 52, False: 327]
  ------------------
  190|    327|	    sbp->sb_blocklog < XFS_MIN_BLOCKSIZE_LOG			||
  ------------------
  |  |   87|    886|#define XFS_MIN_BLOCKSIZE_LOG	9	/* i.e. 512 bytes */
  ------------------
  |  Branch (190:6): [True: 3, False: 324]
  ------------------
  191|    324|	    sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG			||
  ------------------
  |  |   88|    883|#define XFS_MAX_BLOCKSIZE_LOG	16	/* i.e. 65536 bytes */
  ------------------
  |  Branch (191:6): [True: 3, False: 321]
  ------------------
  192|    321|	    sbp->sb_blocksize != (1ULL << sbp->sb_blocklog)		||
  ------------------
  |  Branch (192:6): [True: 14, False: 307]
  ------------------
  193|    307|	    sbp->sb_inodesize < XFS_DINODE_MIN_SIZE			||
  ------------------
  |  |   98|    866|#define	XFS_DINODE_MIN_SIZE	(1 << XFS_DINODE_MIN_LOG)
  |  |  ------------------
  |  |  |  |   96|    307|#define	XFS_DINODE_MIN_LOG	8
  |  |  ------------------
  ------------------
  |  Branch (193:6): [True: 3, False: 304]
  ------------------
  194|    304|	    sbp->sb_inodesize > XFS_DINODE_MAX_SIZE			||
  ------------------
  |  |   99|    863|#define	XFS_DINODE_MAX_SIZE	(1 << XFS_DINODE_MAX_LOG)
  |  |  ------------------
  |  |  |  |   97|    304|#define	XFS_DINODE_MAX_LOG	11
  |  |  ------------------
  ------------------
  |  Branch (194:6): [True: 5, False: 299]
  ------------------
  195|    299|	    sbp->sb_inodelog < XFS_DINODE_MIN_LOG			||
  ------------------
  |  |   96|    858|#define	XFS_DINODE_MIN_LOG	8
  ------------------
  |  Branch (195:6): [True: 5, False: 294]
  ------------------
  196|    294|	    sbp->sb_inodelog > XFS_DINODE_MAX_LOG			||
  ------------------
  |  |   97|    853|#define	XFS_DINODE_MAX_LOG	11
  ------------------
  |  Branch (196:6): [True: 9, False: 285]
  ------------------
  197|    285|	    sbp->sb_inodesize != (1 << sbp->sb_inodelog)		||
  ------------------
  |  Branch (197:6): [True: 5, False: 280]
  ------------------
  198|    280|	    (sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog)	||
  ------------------
  |  Branch (198:6): [True: 7, False: 273]
  ------------------
  199|    273|	    (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE)	||
  ------------------
  |  |  101|    273|#define	XFS_MAX_RTEXTSIZE	(1024 * 1024 * 1024)	/* 1GB */
  ------------------
  |  Branch (199:6): [True: 17, False: 256]
  ------------------
  200|    256|	    (sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE)	||
  ------------------
  |  |  103|    256|#define	XFS_MIN_RTEXTSIZE	(4 * 1024)		/* 4kB */
  ------------------
  |  Branch (200:6): [True: 11, False: 245]
  ------------------
  201|    245|	    (sbp->sb_imax_pct > 100 /* zero sb_imax_pct is valid */)	||
  ------------------
  |  Branch (201:6): [True: 3, False: 242]
  ------------------
  202|    242|	    sbp->sb_dblocks == 0					||
  ------------------
  |  Branch (202:6): [True: 3, False: 239]
  ------------------
  203|    239|	    sbp->sb_dblocks > XFS_MAX_DBLOCKS(sbp)			||
  ------------------
  |  |  106|    798|#define XFS_MAX_DBLOCKS(s) ((uint64_t)(s)->sb_agcount * (s)->sb_agblocks)
  ------------------
  |  Branch (203:6): [True: 59, False: 180]
  ------------------
  204|    180|	    sbp->sb_dblocks < XFS_MIN_DBLOCKS(sbp))
  ------------------
  |  |  107|    180|#define XFS_MIN_DBLOCKS(s) ((uint64_t)((s)->sb_agcount - 1) *	\
  |  |  108|    180|			 (s)->sb_agblocks + XFS_MIN_AG_BLOCKS)
  |  |  ------------------
  |  |  |  |  105|    180|#define XFS_MIN_AG_BLOCKS	64
  |  |  ------------------
  ------------------
  |  Branch (204:6): [True: 116, False: 64]
  ------------------
  205|    495|		return 0;
  206|       |
  207|     64|	if ((sbp->sb_versionnum & 0x0f) == 5) {
  ------------------
  |  Branch (207:6): [True: 9, False: 55]
  ------------------
  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|     55|	return 1;
  231|     64|}
xfs.c:sb_from_disk:
  116|    559|{
  117|       |
  118|    559|	to->sb_magicnum = be32_to_cpu(from->sb_magicnum);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  119|    559|	to->sb_blocksize = be32_to_cpu(from->sb_blocksize);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  120|    559|	to->sb_dblocks = be64_to_cpu(from->sb_dblocks);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  121|    559|	to->sb_rblocks = be64_to_cpu(from->sb_rblocks);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  122|    559|	to->sb_rextents = be64_to_cpu(from->sb_rextents);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  123|    559|	to->sb_logstart = be64_to_cpu(from->sb_logstart);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  124|    559|	to->sb_rootino = be64_to_cpu(from->sb_rootino);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  125|    559|	to->sb_rbmino = be64_to_cpu(from->sb_rbmino);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  126|    559|	to->sb_rsumino = be64_to_cpu(from->sb_rsumino);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  127|    559|	to->sb_rextsize = be32_to_cpu(from->sb_rextsize);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  128|    559|	to->sb_agblocks = be32_to_cpu(from->sb_agblocks);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  129|    559|	to->sb_agcount = be32_to_cpu(from->sb_agcount);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  130|    559|	to->sb_rbmblocks = be32_to_cpu(from->sb_rbmblocks);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  131|    559|	to->sb_logblocks = be32_to_cpu(from->sb_logblocks);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  132|    559|	to->sb_versionnum = be16_to_cpu(from->sb_versionnum);
  ------------------
  |  |  140|    559|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  133|    559|	to->sb_sectsize = be16_to_cpu(from->sb_sectsize);
  ------------------
  |  |  140|    559|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  134|    559|	to->sb_inodesize = be16_to_cpu(from->sb_inodesize);
  ------------------
  |  |  140|    559|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  135|    559|	to->sb_inopblock = be16_to_cpu(from->sb_inopblock);
  ------------------
  |  |  140|    559|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  136|    559|	to->sb_blocklog = from->sb_blocklog;
  137|    559|	to->sb_sectlog = from->sb_sectlog;
  138|    559|	to->sb_inodelog = from->sb_inodelog;
  139|    559|	to->sb_inopblog = from->sb_inopblog;
  140|    559|	to->sb_agblklog = from->sb_agblklog;
  141|    559|	to->sb_rextslog = from->sb_rextslog;
  142|    559|	to->sb_inprogress = from->sb_inprogress;
  143|    559|	to->sb_imax_pct = from->sb_imax_pct;
  144|    559|	to->sb_icount = be64_to_cpu(from->sb_icount);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  145|    559|	to->sb_ifree = be64_to_cpu(from->sb_ifree);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  146|    559|	to->sb_fdblocks = be64_to_cpu(from->sb_fdblocks);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  147|    559|	to->sb_frextents = be64_to_cpu(from->sb_frextents);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  148|    559|	to->sb_uquotino = be64_to_cpu(from->sb_uquotino);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  149|    559|	to->sb_gquotino = be64_to_cpu(from->sb_gquotino);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  150|    559|	to->sb_qflags = be16_to_cpu(from->sb_qflags);
  ------------------
  |  |  140|    559|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  151|    559|	to->sb_flags = from-> sb_flags;
  152|    559|	to->sb_shared_vn = from-> sb_shared_vn;
  153|    559|	to->sb_inoalignmt = be32_to_cpu(from->sb_inoalignmt);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  154|    559|	to->sb_unit = be32_to_cpu(from->sb_unit);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  155|    559|	to->sb_width = be32_to_cpu(from->sb_width);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  156|    559|	to->sb_dirblklog = from-> sb_dirblklog;
  157|    559|	to->sb_logsectlog = from-> sb_logsectlog;
  158|    559|	to->sb_logsectsize = be16_to_cpu(from->sb_logsectsize);
  ------------------
  |  |  140|    559|#define be16_to_cpu(x) ((uint16_t) be16toh(x))
  ------------------
  159|    559|	to->sb_logsunit = be32_to_cpu(from->sb_logsunit);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  160|    559|	to->sb_features2 = be32_to_cpu(from->sb_features2);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  161|    559|	to->sb_bad_features2 = be32_to_cpu(from->sb_bad_features2);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  162|    559|	to->sb_features_compat = be32_to_cpu(from->sb_features_compat);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  163|    559|	to->sb_features_ro_compat = be32_to_cpu(from->sb_features_ro_compat);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  164|    559|	to->sb_features_incompat = be32_to_cpu(from->sb_features_incompat);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  165|    559|	to->sb_features_log_incompat = be32_to_cpu(from->sb_features_log_incompat);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  166|    559|	to->sb_crc = be32_to_cpu(from->sb_crc);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  167|    559|	to->sb_spino_align = be32_to_cpu(from->sb_spino_align);
  ------------------
  |  |  141|    559|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  168|    559|	to->sb_pquotino = be64_to_cpu(from->sb_pquotino);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  169|    559|	to->sb_lsn = be64_to_cpu(from->sb_lsn);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  170|       |	to->sb_rrmapino = be64_to_cpu(from->sb_rrmapino);
  ------------------
  |  |  142|    559|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
  171|    559|}
xfs.c:xfs_fssize:
  234|     55|{
  235|     55|	uint32_t lsize = xs->sb_logstart ? xs->sb_logblocks : 0;
  ------------------
  |  Branch (235:19): [True: 54, False: 1]
  ------------------
  236|     55|	uint64_t avail_blocks = be64_to_cpu(xs->sb_dblocks) - be32_to_cpu(lsize);
  ------------------
  |  |  142|     55|#define be64_to_cpu(x) ((uint64_t) be64toh(x))
  ------------------
              	uint64_t avail_blocks = be64_to_cpu(xs->sb_dblocks) - be32_to_cpu(lsize);
  ------------------
  |  |  141|     55|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  237|     55|	uint64_t fssize = avail_blocks*be32_to_cpu(xs->sb_blocksize);
  ------------------
  |  |  141|     55|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  238|       |
  239|     55|	return fssize;
  240|     55|}
xfs.c:probe_xfs_log:
  331|  6.12k|{
  332|  6.12k|	int i;
  333|  6.12k|	struct xlog_rec_header *rhead;
  334|  6.12k|	const unsigned char *buf;
  335|       |
  336|  6.12k|	buf = blkid_probe_get_buffer(pr, 0, 256*1024);
  337|  6.12k|	if (!buf)
  ------------------
  |  Branch (337:6): [True: 0, False: 6.12k]
  ------------------
  338|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (338:10): [True: 0, False: 0]
  ------------------
  339|       |
  340|       |	/* check the first 512 512-byte sectors */
  341|  2.67M|	for (i = 0; i < 512; i++) {
  ------------------
  |  Branch (341:14): [True: 2.67M, False: 5.16k]
  ------------------
  342|       |		/* this is regular XFS (maybe with some sectors shift), ignore */
  343|  2.67M|		if (memcmp(&buf[i*512], "XFSB", 4) == 0)
  ------------------
  |  Branch (343:7): [True: 951, False: 2.67M]
  ------------------
  344|    951|			return 1;
  345|       |
  346|  2.67M|		rhead = (struct xlog_rec_header *)&buf[i*512];
  347|       |
  348|  2.67M|		if (xlog_valid_rec_header(rhead)) {
  ------------------
  |  Branch (348:7): [True: 5, False: 2.67M]
  ------------------
  349|      5|			blkid_probe_set_uuid_as(pr, rhead->h_uuid, "LOGUUID");
  350|       |
  351|      5|			if (blkid_probe_set_magic(pr, i * 512,
  ------------------
  |  Branch (351:8): [True: 0, False: 5]
  ------------------
  352|      5|						sizeof(rhead->h_magicno),
  353|      5|						(unsigned char *) &rhead->h_magicno))
  354|      0|				return 1;
  355|       |
  356|      5|			return 0;
  357|      5|		}
  358|  2.67M|	}
  359|       |
  360|  5.16k|	return 1;
  361|  6.12k|}
xfs.c:xlog_valid_rec_header:
  305|  2.67M|{
  306|  2.67M|	uint32_t hlen;
  307|       |
  308|  2.67M|	if (rhead->h_magicno != cpu_to_be32(XLOG_HEADER_MAGIC_NUM))
  ------------------
  |  |  133|  2.67M|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (308:6): [True: 2.67M, False: 332]
  ------------------
  309|  2.67M|		return 0;
  310|       |
  311|    332|	if (!rhead->h_version ||
  ------------------
  |  Branch (311:6): [True: 60, False: 272]
  ------------------
  312|    272|            (be32_to_cpu(rhead->h_version) & (~XLOG_VERSION_OKBITS)))
  ------------------
  |  |  141|    272|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
                          (be32_to_cpu(rhead->h_version) & (~XLOG_VERSION_OKBITS)))
  ------------------
  |  |  302|    272|#define XLOG_VERSION_OKBITS	(XLOG_VERSION_1 | XLOG_VERSION_2)
  |  |  ------------------
  |  |  |  |  300|    272|#define XLOG_VERSION_1		1
  |  |  ------------------
  |  |               #define XLOG_VERSION_OKBITS	(XLOG_VERSION_1 | XLOG_VERSION_2)
  |  |  ------------------
  |  |  |  |  301|    272|#define XLOG_VERSION_2		2	/* Large IClogs, Log sunit */
  |  |  ------------------
  ------------------
  |  Branch (312:13): [True: 125, False: 147]
  ------------------
  313|    185|		return 0;
  314|       |
  315|       |	/* LR body must have data or it wouldn't have been written */
  316|    147|	hlen = be32_to_cpu(rhead->h_len);
  ------------------
  |  |  141|    147|#define be32_to_cpu(x) ((uint32_t) be32toh(x))
  ------------------
  317|    147|	if (hlen <= 0 || hlen > INT_MAX)
  ------------------
  |  Branch (317:6): [True: 20, False: 127]
  |  Branch (317:19): [True: 35, False: 92]
  ------------------
  318|     55|		return 0;
  319|       |
  320|     92|	if (rhead->h_fmt != cpu_to_be32(XLOG_FMT_LINUX_LE) &&
  ------------------
  |  |  133|    184|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (320:6): [True: 89, False: 3]
  ------------------
  321|     89|	    rhead->h_fmt != cpu_to_be32(XLOG_FMT_LINUX_BE) &&
  ------------------
  |  |  133|    181|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (321:6): [True: 88, False: 1]
  ------------------
  322|     88|	    rhead->h_fmt != cpu_to_be32(XLOG_FMT_IRIX_BE))
  ------------------
  |  |  133|     88|#define cpu_to_be32(x) ((uint32_t) htobe32(x))
  ------------------
  |  Branch (322:6): [True: 87, False: 1]
  ------------------
  323|     87|		return 0;
  324|       |
  325|      5|	return 1;
  326|     92|}

zonefs.c:probe_zonefs:
   63|     66|{
   64|     66|	const struct zonefs_super *sb;
   65|       |
   66|     66|	sb = (struct zonefs_super *)
   67|     66|		blkid_probe_get_buffer(pr, ZONEFS_SB_OFST,
  ------------------
  |  |   18|     66|#define ZONEFS_SB_OFST		0
  ------------------
   68|     66|				       sizeof(struct zonefs_super));
   69|     66|	if (!sb)
  ------------------
  |  Branch (69:6): [True: 0, False: 66]
  ------------------
   70|      0|		return errno ? -errno : 1;
  ------------------
  |  Branch (70:10): [True: 0, False: 0]
  ------------------
   71|       |
   72|     66|	if (!zonefs_verify_csum(pr, sb))
  ------------------
  |  Branch (72:6): [True: 65, False: 1]
  ------------------
   73|     65|		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|     66|}
zonefs.c:zonefs_verify_csum:
   53|     66|{
   54|     66|	uint32_t expected = le32_to_cpu(sb->s_crc);
  ------------------
  |  |  137|     66|#define le32_to_cpu(x) ((uint32_t) le32toh(x))
  ------------------
   55|     66|	uint32_t crc = ul_crc32_exclude_offset(
   56|     66|			~0LL, (unsigned char *) sb, sizeof(*sb),
   57|       |		       offsetof(__typeof__(*sb), s_crc), sizeof(sb->s_crc), 0);
   58|     66|	return blkid_probe_verify_csum(pr, crc, expected);
   59|     66|}

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

