gl_linkedhash_list.c:gl_linked_nx_create_empty:
   45|      2|{
   46|      2|  struct gl_list_impl *list =
   47|      2|    (struct gl_list_impl *) malloc (sizeof (struct gl_list_impl));
   48|       |
   49|      2|  if (list == NULL)
  ------------------
  |  Branch (49:7): [True: 0, False: 2]
  ------------------
   50|      0|    return NULL;
   51|       |
   52|      2|  list->base.vtable = implementation;
   53|      2|  list->base.equals_fn = equals_fn;
   54|      2|  list->base.hashcode_fn = hashcode_fn;
   55|      2|  list->base.dispose_fn = dispose_fn;
   56|      2|  list->base.allow_duplicates = allow_duplicates;
   57|      2|#if WITH_HASHTABLE
   58|      2|  list->table_size = 11;
   59|      2|  list->table =
   60|      2|    (gl_hash_entry_t *) calloc (list->table_size, sizeof (gl_hash_entry_t));
   61|      2|  if (list->table == NULL)
  ------------------
  |  Branch (61:7): [True: 0, False: 2]
  ------------------
   62|      0|    goto fail;
   63|      2|#endif
   64|      2|  list->root.next = &list->root;
   65|      2|  list->root.prev = &list->root;
   66|      2|  list->count = 0;
   67|       |
   68|      2|  return list;
   69|       |
   70|      0|#if WITH_HASHTABLE
   71|      0| fail:
   72|      0|  free (list);
   73|      0|  return NULL;
   74|      2|#endif
   75|      2|}

gl_list_nx_create_empty:
  607|      2|{
  608|      2|  return implementation->nx_create_empty (implementation, equals_fn,
  609|      2|                                          hashcode_fn, dispose_fn,
  610|      2|                                          allow_duplicates);
  611|      2|}

_gnutls_register_accel_crypto:
   33|      2|{
   34|      2|#if defined(ASM_X86)
   35|      2|	register_x86_crypto();
   36|      2|#endif
   37|       |
   38|       |#if defined(ASM_AARCH64)
   39|       |	register_aarch64_crypto();
   40|       |#endif
   41|       |
   42|      2|	return;
   43|      2|}

_gnutls_afalg_init:
  864|      2|{
  865|      2|	return 0;
  866|      2|}

_gnutls_cryptodev_init:
  505|      2|{
  506|      2|	return 0;
  507|      2|}

register_x86_crypto:
 1235|      2|{
 1236|      2|	unsigned capabilities = 0;
 1237|      2|	char *p;
 1238|      2|	p = secure_getenv("GNUTLS_CPUID_OVERRIDE");
 1239|      2|	if (p) {
  ------------------
  |  Branch (1239:6): [True: 0, False: 2]
  ------------------
 1240|      0|		capabilities = strtol(p, NULL, 0);
 1241|      0|	}
 1242|       |
 1243|      2|	register_x86_intel_crypto(capabilities);
 1244|      2|#ifdef ENABLE_PADLOCK
 1245|      2|	register_x86_padlock_crypto(capabilities);
 1246|      2|#endif
 1247|      2|}
x86-common.c:register_x86_intel_crypto:
  900|      2|{
  901|      2|	int ret;
  902|      2|	enum x86_cpu_vendor vendor;
  903|       |
  904|      2|	memset(GNUTLS_x86_cpuid_s, 0, sizeof(GNUTLS_x86_cpuid_s));
  905|       |
  906|      2|	vendor = check_x86_cpu_vendor();
  907|      2|	if (vendor == X86_CPU_VENDOR_OTHER) {
  ------------------
  |  Branch (907:6): [True: 0, False: 2]
  ------------------
  908|      0|		return;
  909|      0|	}
  910|       |
  911|      2|	if (capabilities == 0) {
  ------------------
  |  Branch (911:6): [True: 2, False: 0]
  ------------------
  912|      2|		if (!read_cpuid_vals(GNUTLS_x86_cpuid_s))
  ------------------
  |  Branch (912:7): [True: 0, False: 2]
  ------------------
  913|      0|			return;
  914|      2|		if (!check_4th_gen_intel_features(GNUTLS_x86_cpuid_s[1])) {
  ------------------
  |  Branch (914:7): [True: 0, False: 2]
  ------------------
  915|      0|			GNUTLS_x86_cpuid_s[1] &= ~bit_AVX;
  916|       |
  917|       |			/* Clear AVX2 bits as well, according to what
  918|       |			 * OpenSSL does.  Should we clear
  919|       |			 * bit_AVX512DQ, bit_AVX512PF, bit_AVX512ER,
  920|       |			 * and bit_AVX512CD? */
  921|      0|			GNUTLS_x86_cpuid_s[2] &= ~(bit_AVX2 |
  922|      0|						   bit_AVX512F |
  923|      0|						   bit_AVX512IFMA |
  924|      0|						   bit_AVX512BW | bit_AVX512BW);
  925|      0|		}
  926|      2|	} else {
  927|      0|		capabilities_to_intel_cpuid(capabilities);
  928|      0|	}
  929|       |
  930|       |	/* CRYPTOGAMS uses the (1 << 30) bit as an indicator of Intel CPUs */
  931|      2|	if (vendor == X86_CPU_VENDOR_INTEL) {
  ------------------
  |  Branch (931:6): [True: 0, False: 2]
  ------------------
  932|      0|		GNUTLS_x86_cpuid_s[0] |= 1 << 30;
  933|      2|	} else {
  934|      2|		GNUTLS_x86_cpuid_s[0] &= ~(1 << 30);
  935|      2|	}
  936|       |
  937|      2|	if (check_ssse3()) {
  ------------------
  |  Branch (937:6): [True: 2, False: 0]
  ------------------
  938|      2|		_gnutls_debug_log("Intel SSSE3 was detected\n");
  ------------------
  |  |  139|      2|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      2|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      2|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      2|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  939|       |
  940|      2|		ret =
  941|      2|		    gnutls_crypto_single_cipher_register
  942|      2|		    (GNUTLS_CIPHER_AES_128_GCM, 90,
  943|      2|		     &_gnutls_aes_gcm_x86_ssse3, 0);
  944|      2|		if (ret < 0) {
  ------------------
  |  Branch (944:7): [True: 0, False: 2]
  ------------------
  945|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  946|      0|		}
  947|       |
  948|      2|		ret =
  949|      2|		    gnutls_crypto_single_cipher_register
  950|      2|		    (GNUTLS_CIPHER_AES_192_GCM, 90,
  951|      2|		     &_gnutls_aes_gcm_x86_ssse3, 0);
  952|      2|		if (ret < 0) {
  ------------------
  |  Branch (952:7): [True: 0, False: 2]
  ------------------
  953|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  954|      0|		}
  955|       |
  956|      2|		ret =
  957|      2|		    gnutls_crypto_single_cipher_register
  958|      2|		    (GNUTLS_CIPHER_AES_256_GCM, 90,
  959|      2|		     &_gnutls_aes_gcm_x86_ssse3, 0);
  960|      2|		if (ret < 0) {
  ------------------
  |  Branch (960:7): [True: 0, False: 2]
  ------------------
  961|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  962|      0|		}
  963|       |
  964|      2|		ret =
  965|      2|		    gnutls_crypto_single_cipher_register
  966|      2|		    (GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_ssse3, 0);
  967|      2|		if (ret < 0) {
  ------------------
  |  Branch (967:7): [True: 0, False: 2]
  ------------------
  968|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  969|      0|		}
  970|       |
  971|      2|		ret =
  972|      2|		    gnutls_crypto_single_cipher_register
  973|      2|		    (GNUTLS_CIPHER_AES_192_CBC, 90, &_gnutls_aes_ssse3, 0);
  974|      2|		if (ret < 0) {
  ------------------
  |  Branch (974:7): [True: 0, False: 2]
  ------------------
  975|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  976|      0|		}
  977|       |
  978|      2|		ret =
  979|      2|		    gnutls_crypto_single_cipher_register
  980|      2|		    (GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_ssse3, 0);
  981|      2|		if (ret < 0) {
  ------------------
  |  Branch (981:7): [True: 0, False: 2]
  ------------------
  982|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  983|      0|		}
  984|      2|	}
  985|       |
  986|      2|	if (check_sha() || check_ssse3()) {
  ------------------
  |  Branch (986:6): [True: 2, False: 0]
  |  Branch (986:21): [True: 0, False: 0]
  ------------------
  987|      2|		if (check_sha())
  ------------------
  |  Branch (987:7): [True: 2, False: 0]
  ------------------
  988|      2|			_gnutls_debug_log("Intel SHA was detected\n");
  ------------------
  |  |  139|      2|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      2|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      2|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      2|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  989|       |
  990|      2|		ret =
  991|      2|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1,
  992|      2|							 80,
  993|      2|							 &_gnutls_sha_x86_ssse3,
  994|      2|							 0);
  995|      2|		if (ret < 0) {
  ------------------
  |  Branch (995:7): [True: 0, False: 2]
  ------------------
  996|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  997|      0|		}
  998|       |
  999|      2|		ret =
 1000|      2|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA224,
 1001|      2|							 80,
 1002|      2|							 &_gnutls_sha_x86_ssse3,
 1003|      2|							 0);
 1004|      2|		if (ret < 0) {
  ------------------
  |  Branch (1004:7): [True: 0, False: 2]
  ------------------
 1005|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1006|      0|		}
 1007|       |
 1008|      2|		ret =
 1009|      2|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256,
 1010|      2|							 80,
 1011|      2|							 &_gnutls_sha_x86_ssse3,
 1012|      2|							 0);
 1013|      2|		if (ret < 0) {
  ------------------
  |  Branch (1013:7): [True: 0, False: 2]
  ------------------
 1014|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1015|      0|		}
 1016|       |
 1017|      2|		ret =
 1018|      2|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1,
 1019|      2|						      80,
 1020|      2|						      &_gnutls_hmac_sha_x86_ssse3,
 1021|      2|						      0);
 1022|      2|		if (ret < 0)
  ------------------
  |  Branch (1022:7): [True: 0, False: 2]
  ------------------
 1023|      2|			gnutls_assert();
  ------------------
  |  |   33|      2|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1024|       |
 1025|      2|		ret =
 1026|      2|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA224,
 1027|      2|						      80,
 1028|      2|						      &_gnutls_hmac_sha_x86_ssse3,
 1029|      2|						      0);
 1030|      2|		if (ret < 0)
  ------------------
  |  Branch (1030:7): [True: 0, False: 2]
  ------------------
 1031|      2|			gnutls_assert();
  ------------------
  |  |   33|      2|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1032|       |
 1033|      2|		ret =
 1034|      2|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256,
 1035|      2|						      80,
 1036|      2|						      &_gnutls_hmac_sha_x86_ssse3,
 1037|      2|						      0);
 1038|      2|		if (ret < 0)
  ------------------
  |  Branch (1038:7): [True: 0, False: 2]
  ------------------
 1039|      2|			gnutls_assert();
  ------------------
  |  |   33|      2|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1040|       |
 1041|      2|		ret =
 1042|      2|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA384,
 1043|      2|							 80,
 1044|      2|							 &_gnutls_sha_x86_ssse3,
 1045|      2|							 0);
 1046|      2|		if (ret < 0)
  ------------------
  |  Branch (1046:7): [True: 0, False: 2]
  ------------------
 1047|      2|			gnutls_assert();
  ------------------
  |  |   33|      2|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1048|       |
 1049|      2|		ret =
 1050|      2|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA512,
 1051|      2|							 80,
 1052|      2|							 &_gnutls_sha_x86_ssse3,
 1053|      2|							 0);
 1054|      2|		if (ret < 0)
  ------------------
  |  Branch (1054:7): [True: 0, False: 2]
  ------------------
 1055|      2|			gnutls_assert();
  ------------------
  |  |   33|      2|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1056|      2|		ret =
 1057|      2|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA384,
 1058|      2|						      80,
 1059|      2|						      &_gnutls_hmac_sha_x86_ssse3,
 1060|      2|						      0);
 1061|      2|		if (ret < 0)
  ------------------
  |  Branch (1061:7): [True: 0, False: 2]
  ------------------
 1062|      2|			gnutls_assert();
  ------------------
  |  |   33|      2|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1063|       |
 1064|      2|		ret =
 1065|      2|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA512,
 1066|      2|						      80,
 1067|      2|						      &_gnutls_hmac_sha_x86_ssse3,
 1068|      2|						      0);
 1069|      2|		if (ret < 0)
  ------------------
  |  Branch (1069:7): [True: 0, False: 2]
  ------------------
 1070|      2|			gnutls_assert();
  ------------------
  |  |   33|      2|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1071|      2|	}
 1072|       |
 1073|      2|	if (check_optimized_aes()) {
  ------------------
  |  Branch (1073:6): [True: 2, False: 0]
  ------------------
 1074|      2|		_gnutls_debug_log("Intel AES accelerator was detected\n");
  ------------------
  |  |  139|      2|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      2|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      2|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      2|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1075|      2|		ret =
 1076|      2|		    gnutls_crypto_single_cipher_register
 1077|      2|		    (GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aesni_x86, 0);
 1078|      2|		if (ret < 0) {
  ------------------
  |  Branch (1078:7): [True: 0, False: 2]
  ------------------
 1079|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1080|      0|		}
 1081|       |
 1082|      2|		ret =
 1083|      2|		    gnutls_crypto_single_cipher_register
 1084|      2|		    (GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aesni_x86, 0);
 1085|      2|		if (ret < 0) {
  ------------------
  |  Branch (1085:7): [True: 0, False: 2]
  ------------------
 1086|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1087|      0|		}
 1088|       |
 1089|      2|		ret =
 1090|      2|		    gnutls_crypto_single_cipher_register
 1091|      2|		    (GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aesni_x86, 0);
 1092|      2|		if (ret < 0) {
  ------------------
  |  Branch (1092:7): [True: 0, False: 2]
  ------------------
 1093|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1094|      0|		}
 1095|       |
 1096|      2|		ret =
 1097|      2|		    gnutls_crypto_single_cipher_register
 1098|      2|		    (GNUTLS_CIPHER_AES_128_CCM, 80,
 1099|      2|		     &_gnutls_aes_ccm_x86_aesni, 0);
 1100|      2|		if (ret < 0) {
  ------------------
  |  Branch (1100:7): [True: 0, False: 2]
  ------------------
 1101|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1102|      0|		}
 1103|       |
 1104|      2|		ret =
 1105|      2|		    gnutls_crypto_single_cipher_register
 1106|      2|		    (GNUTLS_CIPHER_AES_256_CCM, 80,
 1107|      2|		     &_gnutls_aes_ccm_x86_aesni, 0);
 1108|      2|		if (ret < 0) {
  ------------------
  |  Branch (1108:7): [True: 0, False: 2]
  ------------------
 1109|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1110|      0|		}
 1111|       |
 1112|      2|		ret =
 1113|      2|		    gnutls_crypto_single_cipher_register
 1114|      2|		    (GNUTLS_CIPHER_AES_128_CCM_8, 80,
 1115|      2|		     &_gnutls_aes_ccm_x86_aesni, 0);
 1116|      2|		if (ret < 0) {
  ------------------
  |  Branch (1116:7): [True: 0, False: 2]
  ------------------
 1117|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1118|      0|		}
 1119|       |
 1120|      2|		ret =
 1121|      2|		    gnutls_crypto_single_cipher_register
 1122|      2|		    (GNUTLS_CIPHER_AES_256_CCM_8, 80,
 1123|      2|		     &_gnutls_aes_ccm_x86_aesni, 0);
 1124|      2|		if (ret < 0) {
  ------------------
  |  Branch (1124:7): [True: 0, False: 2]
  ------------------
 1125|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1126|      0|		}
 1127|       |
 1128|      2|		ret =
 1129|      2|		    gnutls_crypto_single_cipher_register
 1130|      2|		    (GNUTLS_CIPHER_AES_128_XTS, 80,
 1131|      2|		     &_gnutls_aes_xts_x86_aesni, 0);
 1132|      2|		if (ret < 0) {
  ------------------
  |  Branch (1132:7): [True: 0, False: 2]
  ------------------
 1133|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1134|      0|		}
 1135|       |
 1136|      2|		ret =
 1137|      2|		    gnutls_crypto_single_cipher_register
 1138|      2|		    (GNUTLS_CIPHER_AES_256_XTS, 80,
 1139|      2|		     &_gnutls_aes_xts_x86_aesni, 0);
 1140|      2|		if (ret < 0) {
  ------------------
  |  Branch (1140:7): [True: 0, False: 2]
  ------------------
 1141|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1142|      0|		}
 1143|       |
 1144|      2|#ifdef ASM_X86_64
 1145|      2|		if (check_pclmul()) {
  ------------------
  |  Branch (1145:7): [True: 2, False: 0]
  ------------------
 1146|       |			/* register GCM ciphers */
 1147|      2|			if (check_avx_movbe()) {
  ------------------
  |  Branch (1147:8): [True: 2, False: 0]
  ------------------
 1148|      2|				_gnutls_debug_log
  ------------------
  |  |  139|      2|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      2|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      2|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      2|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1149|      2|				    ("Intel GCM accelerator (AVX) was detected\n");
 1150|      2|				ret =
 1151|      2|				    gnutls_crypto_single_cipher_register
 1152|      2|				    (GNUTLS_CIPHER_AES_128_GCM, 80,
 1153|      2|				     &_gnutls_aes_gcm_pclmul_avx, 0);
 1154|      2|				if (ret < 0) {
  ------------------
  |  Branch (1154:9): [True: 0, False: 2]
  ------------------
 1155|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1156|      0|				}
 1157|       |
 1158|      2|				ret =
 1159|      2|				    gnutls_crypto_single_cipher_register
 1160|      2|				    (GNUTLS_CIPHER_AES_192_GCM, 80,
 1161|      2|				     &_gnutls_aes_gcm_pclmul_avx, 0);
 1162|      2|				if (ret < 0) {
  ------------------
  |  Branch (1162:9): [True: 0, False: 2]
  ------------------
 1163|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1164|      0|				}
 1165|       |
 1166|      2|				ret =
 1167|      2|				    gnutls_crypto_single_cipher_register
 1168|      2|				    (GNUTLS_CIPHER_AES_256_GCM, 80,
 1169|      2|				     &_gnutls_aes_gcm_pclmul_avx, 0);
 1170|      2|				if (ret < 0) {
  ------------------
  |  Branch (1170:9): [True: 0, False: 2]
  ------------------
 1171|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1172|      0|				}
 1173|      2|			} else {
 1174|      0|				_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1175|      0|				    ("Intel GCM accelerator was detected\n");
 1176|      0|				ret =
 1177|      0|				    gnutls_crypto_single_cipher_register
 1178|      0|				    (GNUTLS_CIPHER_AES_128_GCM, 80,
 1179|      0|				     &_gnutls_aes_gcm_pclmul, 0);
 1180|      0|				if (ret < 0) {
  ------------------
  |  Branch (1180:9): [True: 0, False: 0]
  ------------------
 1181|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1182|      0|				}
 1183|       |
 1184|      0|				ret =
 1185|      0|				    gnutls_crypto_single_cipher_register
 1186|      0|				    (GNUTLS_CIPHER_AES_192_GCM, 80,
 1187|      0|				     &_gnutls_aes_gcm_pclmul, 0);
 1188|      0|				if (ret < 0) {
  ------------------
  |  Branch (1188:9): [True: 0, False: 0]
  ------------------
 1189|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1190|      0|				}
 1191|       |
 1192|      0|				ret =
 1193|      0|				    gnutls_crypto_single_cipher_register
 1194|      0|				    (GNUTLS_CIPHER_AES_256_GCM, 80,
 1195|      0|				     &_gnutls_aes_gcm_pclmul, 0);
 1196|      0|				if (ret < 0) {
  ------------------
  |  Branch (1196:9): [True: 0, False: 0]
  ------------------
 1197|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1198|      0|				}
 1199|      0|			}
 1200|      2|		} else
 1201|      0|#endif
 1202|      0|		{
 1203|      0|			ret =
 1204|      0|			    gnutls_crypto_single_cipher_register
 1205|      0|			    (GNUTLS_CIPHER_AES_128_GCM, 80,
 1206|      0|			     &_gnutls_aes_gcm_x86_aesni, 0);
 1207|      0|			if (ret < 0) {
  ------------------
  |  Branch (1207:8): [True: 0, False: 0]
  ------------------
 1208|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1209|      0|			}
 1210|       |
 1211|      0|			ret =
 1212|      0|			    gnutls_crypto_single_cipher_register
 1213|      0|			    (GNUTLS_CIPHER_AES_192_GCM, 80,
 1214|      0|			     &_gnutls_aes_gcm_x86_aesni, 0);
 1215|      0|			if (ret < 0) {
  ------------------
  |  Branch (1215:8): [True: 0, False: 0]
  ------------------
 1216|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1217|      0|			}
 1218|       |
 1219|      0|			ret =
 1220|      0|			    gnutls_crypto_single_cipher_register
 1221|      0|			    (GNUTLS_CIPHER_AES_256_GCM, 80,
 1222|      0|			     &_gnutls_aes_gcm_x86_aesni, 0);
 1223|      0|			if (ret < 0) {
  ------------------
  |  Branch (1223:8): [True: 0, False: 0]
  ------------------
 1224|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1225|      0|			}
 1226|      0|		}
 1227|      2|	} else {
 1228|      0|		_gnutls_priority_update_non_aesni();
 1229|      0|	}
 1230|       |
 1231|      2|	return;
 1232|      2|}
x86-common.c:check_x86_cpu_vendor:
  878|      2|{
  879|      2|	unsigned int a, b, c, d;
  880|       |
  881|      2|	if (!__get_cpuid(0, &a, &b, &c, &d)) {
  ------------------
  |  Branch (881:6): [True: 0, False: 2]
  ------------------
  882|      0|		return X86_CPU_VENDOR_OTHER;
  883|      0|	}
  884|       |
  885|      2|	if (memcmp(&b, "Genu", 4) == 0 &&
  ------------------
  |  Branch (885:6): [True: 0, False: 2]
  ------------------
  886|      2|	    memcmp(&d, "ineI", 4) == 0 && memcmp(&c, "ntel", 4) == 0) {
  ------------------
  |  Branch (886:6): [True: 0, False: 0]
  |  Branch (886:36): [True: 0, False: 0]
  ------------------
  887|      0|		return X86_CPU_VENDOR_INTEL;
  888|      0|	}
  889|       |
  890|      2|	if (memcmp(&b, "Auth", 4) == 0 &&
  ------------------
  |  Branch (890:6): [True: 2, False: 0]
  ------------------
  891|      2|	    memcmp(&d, "enti", 4) == 0 && memcmp(&c, "cAMD", 4) == 0) {
  ------------------
  |  Branch (891:6): [True: 2, False: 0]
  |  Branch (891:36): [True: 2, False: 0]
  ------------------
  892|      2|		return X86_CPU_VENDOR_AMD;
  893|      2|	}
  894|       |
  895|      0|	return X86_CPU_VENDOR_OTHER;
  896|      2|}
x86-common.c:read_cpuid_vals:
  145|      2|{
  146|      2|	unsigned t1, t2, t3;
  147|      2|	vals[0] = vals[1] = vals[2] = vals[3] = 0;
  148|       |
  149|      2|	if (!__get_cpuid(1, &t1, &t2, &vals[1], &vals[0]))
  ------------------
  |  Branch (149:6): [True: 0, False: 2]
  ------------------
  150|      0|		return 0;
  151|       |	/* suppress AVX512; it works conditionally on certain CPUs on the original code */
  152|      2|	vals[1] &= 0xfffff7ff;
  153|       |
  154|      2|	get_cpuid_level7(&t1, &vals[2], &t2, &t3);
  ------------------
  |  |  141|      2|# define get_cpuid_level7(a,b,c,d) __get_cpuid_count(7, 0, a, b, c, d)
  ------------------
  155|       |
  156|      2|	return 1;
  157|      2|}
x86-common.c:check_4th_gen_intel_features:
  164|      2|{
  165|      2|	uint32_t xcr0;
  166|       |
  167|      2|	if ((ecx & bit_OSXSAVE) != bit_OSXSAVE)
  ------------------
  |  Branch (167:6): [True: 0, False: 2]
  ------------------
  168|      0|		return 0;
  169|       |
  170|       |#if defined(_MSC_VER) && !defined(__clang__)
  171|       |	xcr0 = _xgetbv(0);
  172|       |#else
  173|      2| __asm__("xgetbv": "=a"(xcr0): "c"(0):"%edx");
  174|      2|#endif
  175|       |	/* Check if xmm and ymm state are enabled in XCR0. */
  176|      2|	return (xcr0 & 6) == 6;
  177|      2|}
x86-common.c:check_ssse3:
  243|      2|{
  244|      2|	return (GNUTLS_x86_cpuid_s[1] & bit_SSSE3);
  245|      2|}
x86-common.c:check_sha:
  248|      4|{
  249|      4|	return (GNUTLS_x86_cpuid_s[2] & bit_SHA);
  250|      4|}
x86-common.c:check_optimized_aes:
  238|      2|{
  239|      2|	return (GNUTLS_x86_cpuid_s[1] & bit_AES);
  240|      2|}
x86-common.c:check_pclmul:
  260|      2|{
  261|      2|	return (GNUTLS_x86_cpuid_s[1] & bit_PCLMUL);
  262|      2|}
x86-common.c:check_avx_movbe:
  254|      2|{
  255|      2|	return (GNUTLS_x86_cpuid_s[1] & (bit_AVX | bit_MOVBE)) ==
  256|      2|	    (bit_AVX | bit_MOVBE);
  257|      2|}
x86-common.c:register_x86_padlock_crypto:
  384|      2|{
  385|      2|	int ret, phe;
  386|      2|	unsigned edx;
  387|       |
  388|      2|	if (check_zhaoxin() == 0)
  ------------------
  |  Branch (388:6): [True: 2, False: 0]
  ------------------
  389|      2|		return;
  390|       |
  391|      0|	memset(GNUTLS_x86_cpuid_s, 0, sizeof(GNUTLS_x86_cpuid_s));
  392|       |
  393|      0|	if (capabilities == 0) {
  ------------------
  |  Branch (393:6): [True: 0, False: 0]
  ------------------
  394|      0|		if (!read_cpuid_vals(GNUTLS_x86_cpuid_s))
  ------------------
  |  Branch (394:7): [True: 0, False: 0]
  ------------------
  395|      0|			return;
  396|      0|		edx = padlock_capability();
  397|      0|	} else {
  398|      0|		capabilities_to_intel_cpuid(capabilities);
  399|      0|		edx = capabilities_to_zhaoxin_edx(capabilities);
  400|      0|	}
  401|       |
  402|      0|	if (check_ssse3()) {
  ------------------
  |  Branch (402:6): [True: 0, False: 0]
  ------------------
  403|      0|		_gnutls_debug_log("Zhaoxin SSSE3 was detected\n");
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  404|       |
  405|      0|		ret =
  406|      0|		    gnutls_crypto_single_cipher_register
  407|      0|		    (GNUTLS_CIPHER_AES_128_GCM, 90,
  408|      0|		     &_gnutls_aes_gcm_x86_ssse3, 0);
  409|      0|		if (ret < 0) {
  ------------------
  |  Branch (409:7): [True: 0, False: 0]
  ------------------
  410|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  411|      0|		}
  412|       |
  413|      0|		ret =
  414|      0|		    gnutls_crypto_single_cipher_register
  415|      0|		    (GNUTLS_CIPHER_AES_192_GCM, 90,
  416|      0|		     &_gnutls_aes_gcm_x86_ssse3, 0);
  417|      0|		if (ret < 0) {
  ------------------
  |  Branch (417:7): [True: 0, False: 0]
  ------------------
  418|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  419|      0|		}
  420|       |
  421|      0|		ret =
  422|      0|		    gnutls_crypto_single_cipher_register
  423|      0|		    (GNUTLS_CIPHER_AES_256_GCM, 90,
  424|      0|		     &_gnutls_aes_gcm_x86_ssse3, 0);
  425|      0|		if (ret < 0) {
  ------------------
  |  Branch (425:7): [True: 0, False: 0]
  ------------------
  426|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  427|      0|		}
  428|       |
  429|      0|		ret =
  430|      0|		    gnutls_crypto_single_cipher_register
  431|      0|		    (GNUTLS_CIPHER_AES_128_CBC, 90, &_gnutls_aes_ssse3, 0);
  432|      0|		if (ret < 0) {
  ------------------
  |  Branch (432:7): [True: 0, False: 0]
  ------------------
  433|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  434|      0|		}
  435|       |
  436|      0|		ret =
  437|      0|		    gnutls_crypto_single_cipher_register
  438|      0|		    (GNUTLS_CIPHER_AES_192_CBC, 90, &_gnutls_aes_ssse3, 0);
  439|      0|		if (ret < 0) {
  ------------------
  |  Branch (439:7): [True: 0, False: 0]
  ------------------
  440|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  441|      0|		}
  442|       |
  443|      0|		ret =
  444|      0|		    gnutls_crypto_single_cipher_register
  445|      0|		    (GNUTLS_CIPHER_AES_256_CBC, 90, &_gnutls_aes_ssse3, 0);
  446|      0|		if (ret < 0) {
  ------------------
  |  Branch (446:7): [True: 0, False: 0]
  ------------------
  447|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  448|      0|		}
  449|      0|	}
  450|       |
  451|      0|	if (check_sha() || check_ssse3()) {
  ------------------
  |  Branch (451:6): [True: 0, False: 0]
  |  Branch (451:21): [True: 0, False: 0]
  ------------------
  452|      0|		if (check_sha())
  ------------------
  |  Branch (452:7): [True: 0, False: 0]
  ------------------
  453|      0|			_gnutls_debug_log("Zhaoxin SHA was detected\n");
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  454|       |
  455|      0|		ret =
  456|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1,
  457|      0|							 80,
  458|      0|							 &_gnutls_sha_x86_ssse3,
  459|      0|							 0);
  460|      0|		if (ret < 0) {
  ------------------
  |  Branch (460:7): [True: 0, False: 0]
  ------------------
  461|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  462|      0|		}
  463|       |
  464|      0|		ret =
  465|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA224,
  466|      0|							 80,
  467|      0|							 &_gnutls_sha_x86_ssse3,
  468|      0|							 0);
  469|      0|		if (ret < 0) {
  ------------------
  |  Branch (469:7): [True: 0, False: 0]
  ------------------
  470|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  471|      0|		}
  472|       |
  473|      0|		ret =
  474|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256,
  475|      0|							 80,
  476|      0|							 &_gnutls_sha_x86_ssse3,
  477|      0|							 0);
  478|      0|		if (ret < 0) {
  ------------------
  |  Branch (478:7): [True: 0, False: 0]
  ------------------
  479|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  480|      0|		}
  481|       |
  482|      0|		ret =
  483|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1,
  484|      0|						      80,
  485|      0|						      &_gnutls_hmac_sha_x86_ssse3,
  486|      0|						      0);
  487|      0|		if (ret < 0)
  ------------------
  |  Branch (487:7): [True: 0, False: 0]
  ------------------
  488|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  489|       |
  490|      0|		ret =
  491|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA224,
  492|      0|						      80,
  493|      0|						      &_gnutls_hmac_sha_x86_ssse3,
  494|      0|						      0);
  495|      0|		if (ret < 0)
  ------------------
  |  Branch (495:7): [True: 0, False: 0]
  ------------------
  496|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  497|       |
  498|      0|		ret =
  499|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256,
  500|      0|						      80,
  501|      0|						      &_gnutls_hmac_sha_x86_ssse3,
  502|      0|						      0);
  503|      0|		if (ret < 0)
  ------------------
  |  Branch (503:7): [True: 0, False: 0]
  ------------------
  504|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  505|       |
  506|      0|		ret =
  507|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA384,
  508|      0|							 80,
  509|      0|							 &_gnutls_sha_x86_ssse3,
  510|      0|							 0);
  511|      0|		if (ret < 0)
  ------------------
  |  Branch (511:7): [True: 0, False: 0]
  ------------------
  512|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  513|       |
  514|      0|		ret =
  515|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA512,
  516|      0|							 80,
  517|      0|							 &_gnutls_sha_x86_ssse3,
  518|      0|							 0);
  519|      0|		if (ret < 0)
  ------------------
  |  Branch (519:7): [True: 0, False: 0]
  ------------------
  520|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  521|      0|		ret =
  522|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA384,
  523|      0|						      80,
  524|      0|						      &_gnutls_hmac_sha_x86_ssse3,
  525|      0|						      0);
  526|      0|		if (ret < 0)
  ------------------
  |  Branch (526:7): [True: 0, False: 0]
  ------------------
  527|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  528|       |
  529|      0|		ret =
  530|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA512,
  531|      0|						      80,
  532|      0|						      &_gnutls_hmac_sha_x86_ssse3,
  533|      0|						      0);
  534|      0|		if (ret < 0)
  ------------------
  |  Branch (534:7): [True: 0, False: 0]
  ------------------
  535|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  536|      0|	}
  537|       |
  538|      0|	if (check_optimized_aes()) {
  ------------------
  |  Branch (538:6): [True: 0, False: 0]
  ------------------
  539|      0|		_gnutls_debug_log("Zhaoxin AES accelerator was detected\n");
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  540|      0|		ret =
  541|      0|		    gnutls_crypto_single_cipher_register
  542|      0|		    (GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aesni_x86, 0);
  543|      0|		if (ret < 0) {
  ------------------
  |  Branch (543:7): [True: 0, False: 0]
  ------------------
  544|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  545|      0|		}
  546|       |
  547|      0|		ret =
  548|      0|		    gnutls_crypto_single_cipher_register
  549|      0|		    (GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aesni_x86, 0);
  550|      0|		if (ret < 0) {
  ------------------
  |  Branch (550:7): [True: 0, False: 0]
  ------------------
  551|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  552|      0|		}
  553|       |
  554|      0|		ret =
  555|      0|		    gnutls_crypto_single_cipher_register
  556|      0|		    (GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aesni_x86, 0);
  557|      0|		if (ret < 0) {
  ------------------
  |  Branch (557:7): [True: 0, False: 0]
  ------------------
  558|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  559|      0|		}
  560|       |
  561|      0|		ret =
  562|      0|		    gnutls_crypto_single_cipher_register
  563|      0|		    (GNUTLS_CIPHER_AES_128_CCM, 80,
  564|      0|		     &_gnutls_aes_ccm_x86_aesni, 0);
  565|      0|		if (ret < 0) {
  ------------------
  |  Branch (565:7): [True: 0, False: 0]
  ------------------
  566|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  567|      0|		}
  568|       |
  569|      0|		ret =
  570|      0|		    gnutls_crypto_single_cipher_register
  571|      0|		    (GNUTLS_CIPHER_AES_256_CCM, 80,
  572|      0|		     &_gnutls_aes_ccm_x86_aesni, 0);
  573|      0|		if (ret < 0) {
  ------------------
  |  Branch (573:7): [True: 0, False: 0]
  ------------------
  574|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  575|      0|		}
  576|       |
  577|      0|		ret =
  578|      0|		    gnutls_crypto_single_cipher_register
  579|      0|		    (GNUTLS_CIPHER_AES_128_CCM_8, 80,
  580|      0|		     &_gnutls_aes_ccm_x86_aesni, 0);
  581|      0|		if (ret < 0) {
  ------------------
  |  Branch (581:7): [True: 0, False: 0]
  ------------------
  582|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  583|      0|		}
  584|       |
  585|      0|		ret =
  586|      0|		    gnutls_crypto_single_cipher_register
  587|      0|		    (GNUTLS_CIPHER_AES_256_CCM_8, 80,
  588|      0|		     &_gnutls_aes_ccm_x86_aesni, 0);
  589|      0|		if (ret < 0) {
  ------------------
  |  Branch (589:7): [True: 0, False: 0]
  ------------------
  590|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  591|      0|		}
  592|       |
  593|      0|		ret =
  594|      0|		    gnutls_crypto_single_cipher_register
  595|      0|		    (GNUTLS_CIPHER_AES_128_XTS, 80,
  596|      0|		     &_gnutls_aes_xts_x86_aesni, 0);
  597|      0|		if (ret < 0) {
  ------------------
  |  Branch (597:7): [True: 0, False: 0]
  ------------------
  598|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  599|      0|		}
  600|       |
  601|      0|		ret =
  602|      0|		    gnutls_crypto_single_cipher_register
  603|      0|		    (GNUTLS_CIPHER_AES_256_XTS, 80,
  604|      0|		     &_gnutls_aes_xts_x86_aesni, 0);
  605|      0|		if (ret < 0) {
  ------------------
  |  Branch (605:7): [True: 0, False: 0]
  ------------------
  606|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  607|      0|		}
  608|       |
  609|      0|# ifdef ASM_X86_64
  610|      0|		if (check_pclmul()) {
  ------------------
  |  Branch (610:7): [True: 0, False: 0]
  ------------------
  611|       |			/* register GCM ciphers */
  612|      0|			_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  613|      0|			    ("Zhaoxin GCM accelerator was detected\n");
  614|      0|			if (check_avx_movbe() && check_fast_pclmul()) {
  ------------------
  |  Branch (614:8): [True: 0, False: 0]
  |  Branch (614:29): [True: 0, False: 0]
  ------------------
  615|      0|				_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  616|      0|				    ("Zhaoxin GCM accelerator (AVX) was detected\n");
  617|      0|				ret =
  618|      0|				    gnutls_crypto_single_cipher_register
  619|      0|				    (GNUTLS_CIPHER_AES_128_GCM, 80,
  620|      0|				     &_gnutls_aes_gcm_pclmul_avx, 0);
  621|      0|				if (ret < 0) {
  ------------------
  |  Branch (621:9): [True: 0, False: 0]
  ------------------
  622|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  623|      0|				}
  624|       |
  625|      0|				ret =
  626|      0|				    gnutls_crypto_single_cipher_register
  627|      0|				    (GNUTLS_CIPHER_AES_192_GCM, 80,
  628|      0|				     &_gnutls_aes_gcm_pclmul_avx, 0);
  629|      0|				if (ret < 0) {
  ------------------
  |  Branch (629:9): [True: 0, False: 0]
  ------------------
  630|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  631|      0|				}
  632|       |
  633|      0|				ret =
  634|      0|				    gnutls_crypto_single_cipher_register
  635|      0|				    (GNUTLS_CIPHER_AES_256_GCM, 80,
  636|      0|				     &_gnutls_aes_gcm_pclmul_avx, 0);
  637|      0|				if (ret < 0) {
  ------------------
  |  Branch (637:9): [True: 0, False: 0]
  ------------------
  638|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  639|      0|				}
  640|      0|			} else {
  641|      0|				ret =
  642|      0|				    gnutls_crypto_single_cipher_register
  643|      0|				    (GNUTLS_CIPHER_AES_128_GCM, 80,
  644|      0|				     &_gnutls_aes_gcm_pclmul, 0);
  645|      0|				if (ret < 0) {
  ------------------
  |  Branch (645:9): [True: 0, False: 0]
  ------------------
  646|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  647|      0|				}
  648|       |
  649|      0|				ret =
  650|      0|				    gnutls_crypto_single_cipher_register
  651|      0|				    (GNUTLS_CIPHER_AES_192_GCM, 80,
  652|      0|				     &_gnutls_aes_gcm_pclmul, 0);
  653|      0|				if (ret < 0) {
  ------------------
  |  Branch (653:9): [True: 0, False: 0]
  ------------------
  654|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  655|      0|				}
  656|       |
  657|      0|				ret =
  658|      0|				    gnutls_crypto_single_cipher_register
  659|      0|				    (GNUTLS_CIPHER_AES_256_GCM, 80,
  660|      0|				     &_gnutls_aes_gcm_pclmul, 0);
  661|      0|				if (ret < 0) {
  ------------------
  |  Branch (661:9): [True: 0, False: 0]
  ------------------
  662|      0|					gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  663|      0|				}
  664|      0|			}
  665|      0|		} else
  666|      0|# endif
  667|      0|		{
  668|      0|			ret =
  669|      0|			    gnutls_crypto_single_cipher_register
  670|      0|			    (GNUTLS_CIPHER_AES_128_GCM, 80,
  671|      0|			     &_gnutls_aes_gcm_x86_aesni, 0);
  672|      0|			if (ret < 0) {
  ------------------
  |  Branch (672:8): [True: 0, False: 0]
  ------------------
  673|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  674|      0|			}
  675|       |
  676|      0|			ret =
  677|      0|			    gnutls_crypto_single_cipher_register
  678|      0|			    (GNUTLS_CIPHER_AES_192_GCM, 80,
  679|      0|			     &_gnutls_aes_gcm_x86_aesni, 0);
  680|      0|			if (ret < 0) {
  ------------------
  |  Branch (680:8): [True: 0, False: 0]
  ------------------
  681|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  682|      0|			}
  683|       |
  684|      0|			ret =
  685|      0|			    gnutls_crypto_single_cipher_register
  686|      0|			    (GNUTLS_CIPHER_AES_256_GCM, 80,
  687|      0|			     &_gnutls_aes_gcm_x86_aesni, 0);
  688|      0|			if (ret < 0) {
  ------------------
  |  Branch (688:8): [True: 0, False: 0]
  ------------------
  689|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  690|      0|			}
  691|      0|		}
  692|      0|	}
  693|       |
  694|      0|	if (check_padlock(edx)) {
  ------------------
  |  Branch (694:6): [True: 0, False: 0]
  ------------------
  695|      0|		_gnutls_debug_log("Padlock AES accelerator was detected\n");
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  696|      0|		ret =
  697|      0|		    gnutls_crypto_single_cipher_register
  698|      0|		    (GNUTLS_CIPHER_AES_128_CBC, 80, &_gnutls_aes_padlock, 0);
  699|      0|		if (ret < 0) {
  ------------------
  |  Branch (699:7): [True: 0, False: 0]
  ------------------
  700|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  701|      0|		}
  702|       |
  703|      0|		ret =
  704|      0|		    gnutls_crypto_single_cipher_register
  705|      0|		    (GNUTLS_CIPHER_AES_192_CBC, 80, &_gnutls_aes_padlock, 0);
  706|      0|		if (ret < 0) {
  ------------------
  |  Branch (706:7): [True: 0, False: 0]
  ------------------
  707|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  708|      0|		}
  709|       |
  710|       |		/* register GCM ciphers */
  711|      0|		ret =
  712|      0|		    gnutls_crypto_single_cipher_register
  713|      0|		    (GNUTLS_CIPHER_AES_128_GCM, 90,
  714|      0|		     &_gnutls_aes_gcm_padlock, 0);
  715|      0|		if (ret < 0) {
  ------------------
  |  Branch (715:7): [True: 0, False: 0]
  ------------------
  716|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  717|      0|		}
  718|       |
  719|      0|		ret =
  720|      0|		    gnutls_crypto_single_cipher_register
  721|      0|		    (GNUTLS_CIPHER_AES_256_CBC, 80, &_gnutls_aes_padlock, 0);
  722|      0|		if (ret < 0) {
  ------------------
  |  Branch (722:7): [True: 0, False: 0]
  ------------------
  723|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  724|      0|		}
  725|       |
  726|      0|		ret =
  727|      0|		    gnutls_crypto_single_cipher_register
  728|      0|		    (GNUTLS_CIPHER_AES_256_GCM, 90,
  729|      0|		     &_gnutls_aes_gcm_padlock, 0);
  730|      0|		if (ret < 0) {
  ------------------
  |  Branch (730:7): [True: 0, False: 0]
  ------------------
  731|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  732|      0|		}
  733|      0|	}
  734|       |
  735|      0|	if (!check_optimized_aes() && !check_padlock(edx))
  ------------------
  |  Branch (735:6): [True: 0, False: 0]
  |  Branch (735:32): [True: 0, False: 0]
  ------------------
  736|      0|		_gnutls_priority_update_non_aesni();
  737|       |
  738|      0|# ifdef HAVE_LIBNETTLE
  739|      0|	phe = check_phe(edx);
  740|       |
  741|      0|	if (phe && check_phe_partial()) {
  ------------------
  |  Branch (741:6): [True: 0, False: 0]
  |  Branch (741:13): [True: 0, False: 0]
  ------------------
  742|      0|		_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  743|      0|		    ("Padlock SHA1 and SHA256 (partial) accelerator was detected\n");
  744|      0|		if (check_phe_sha512(edx)) {
  ------------------
  |  Branch (744:7): [True: 0, False: 0]
  ------------------
  745|      0|			_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  746|      0|			    ("Padlock SHA512 (partial) accelerator was detected\n");
  747|      0|			ret =
  748|      0|			    gnutls_crypto_single_digest_register
  749|      0|			    (GNUTLS_DIG_SHA384, 80, &_gnutls_sha_padlock, 0);
  750|      0|			if (ret < 0) {
  ------------------
  |  Branch (750:8): [True: 0, False: 0]
  ------------------
  751|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  752|      0|			}
  753|       |
  754|      0|			ret =
  755|      0|			    gnutls_crypto_single_digest_register
  756|      0|			    (GNUTLS_DIG_SHA512, 80, &_gnutls_sha_padlock, 0);
  757|      0|			if (ret < 0) {
  ------------------
  |  Branch (757:8): [True: 0, False: 0]
  ------------------
  758|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  759|      0|			}
  760|       |
  761|      0|			ret =
  762|      0|			    gnutls_crypto_single_mac_register
  763|      0|			    (GNUTLS_MAC_SHA384, 80,
  764|      0|			     &_gnutls_hmac_sha_padlock, 0);
  765|      0|			if (ret < 0) {
  ------------------
  |  Branch (765:8): [True: 0, False: 0]
  ------------------
  766|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  767|      0|			}
  768|       |
  769|      0|			ret =
  770|      0|			    gnutls_crypto_single_mac_register
  771|      0|			    (GNUTLS_MAC_SHA512, 80,
  772|      0|			     &_gnutls_hmac_sha_padlock, 0);
  773|      0|			if (ret < 0) {
  ------------------
  |  Branch (773:8): [True: 0, False: 0]
  ------------------
  774|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  775|      0|			}
  776|      0|		}
  777|       |
  778|      0|		ret =
  779|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1,
  780|      0|							 90,
  781|      0|							 &_gnutls_sha_padlock,
  782|      0|							 0);
  783|      0|		if (ret < 0) {
  ------------------
  |  Branch (783:7): [True: 0, False: 0]
  ------------------
  784|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  785|      0|		}
  786|       |
  787|      0|		ret =
  788|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA224,
  789|      0|							 90,
  790|      0|							 &_gnutls_sha_padlock,
  791|      0|							 0);
  792|      0|		if (ret < 0) {
  ------------------
  |  Branch (792:7): [True: 0, False: 0]
  ------------------
  793|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  794|      0|		}
  795|       |
  796|      0|		ret =
  797|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256,
  798|      0|							 90,
  799|      0|							 &_gnutls_sha_padlock,
  800|      0|							 0);
  801|      0|		if (ret < 0) {
  ------------------
  |  Branch (801:7): [True: 0, False: 0]
  ------------------
  802|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  803|      0|		}
  804|       |
  805|      0|		ret =
  806|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1,
  807|      0|						      90,
  808|      0|						      &_gnutls_hmac_sha_padlock,
  809|      0|						      0);
  810|      0|		if (ret < 0) {
  ------------------
  |  Branch (810:7): [True: 0, False: 0]
  ------------------
  811|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  812|      0|		}
  813|       |
  814|       |		/* we don't register MAC_SHA224 because it is not used by TLS */
  815|       |
  816|      0|		ret =
  817|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256,
  818|      0|						      90,
  819|      0|						      &_gnutls_hmac_sha_padlock,
  820|      0|						      0);
  821|      0|		if (ret < 0) {
  ------------------
  |  Branch (821:7): [True: 0, False: 0]
  ------------------
  822|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  823|      0|		}
  824|      0|	} else if (phe) {
  ------------------
  |  Branch (824:13): [True: 0, False: 0]
  ------------------
  825|       |		/* Original padlock PHE. Does not support incremental operations.
  826|       |		 */
  827|      0|		_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|      0|		    ("Padlock SHA1 and SHA256 accelerator was detected\n");
  829|      0|		ret =
  830|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA1,
  831|      0|							 90,
  832|      0|							 &_gnutls_sha_padlock_oneshot,
  833|      0|							 0);
  834|      0|		if (ret < 0) {
  ------------------
  |  Branch (834:7): [True: 0, False: 0]
  ------------------
  835|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  836|      0|		}
  837|       |
  838|      0|		ret =
  839|      0|		    gnutls_crypto_single_digest_register(GNUTLS_DIG_SHA256,
  840|      0|							 90,
  841|      0|							 &_gnutls_sha_padlock_oneshot,
  842|      0|							 0);
  843|      0|		if (ret < 0) {
  ------------------
  |  Branch (843:7): [True: 0, False: 0]
  ------------------
  844|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  845|      0|		}
  846|       |
  847|      0|		ret =
  848|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA1,
  849|      0|						      90,
  850|      0|						      &_gnutls_hmac_sha_padlock_oneshot,
  851|      0|						      0);
  852|      0|		if (ret < 0) {
  ------------------
  |  Branch (852:7): [True: 0, False: 0]
  ------------------
  853|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  854|      0|		}
  855|       |
  856|      0|		ret =
  857|      0|		    gnutls_crypto_single_mac_register(GNUTLS_MAC_SHA256,
  858|      0|						      90,
  859|      0|						      &_gnutls_hmac_sha_padlock_oneshot,
  860|      0|						      0);
  861|      0|		if (ret < 0) {
  ------------------
  |  Branch (861:7): [True: 0, False: 0]
  ------------------
  862|      0|			gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  863|      0|		}
  864|      0|	}
  865|      0|# endif
  866|       |
  867|      0|	return;
  868|      0|}
x86-common.c:check_zhaoxin:
  364|      2|{
  365|      2|	unsigned int a, b, c, d;
  366|       |
  367|      2|	if (!__get_cpuid(0, &a, &b, &c, &d))
  ------------------
  |  Branch (367:6): [True: 0, False: 2]
  ------------------
  368|      0|		return 0;
  369|       |
  370|       |	/* Zhaoxin and VIA CPU was detected */
  371|      2|	if ((memcmp(&b, "Cent", 4) == 0 &&
  ------------------
  |  Branch (371:7): [True: 0, False: 2]
  ------------------
  372|      2|	     memcmp(&d, "aurH", 4) == 0 &&
  ------------------
  |  Branch (372:7): [True: 0, False: 0]
  ------------------
  373|      2|	     memcmp(&c, "auls", 4) == 0) ||
  ------------------
  |  Branch (373:7): [True: 0, False: 0]
  ------------------
  374|      2|	    (memcmp(&b, "  Sh", 4) == 0 &&
  ------------------
  |  Branch (374:7): [True: 0, False: 2]
  ------------------
  375|      2|	     memcmp(&d, "angh", 4) == 0 && memcmp(&c, "ai  ", 4) == 0)) {
  ------------------
  |  Branch (375:7): [True: 0, False: 0]
  |  Branch (375:37): [True: 0, False: 0]
  ------------------
  376|      0|		return 1;
  377|      0|	}
  378|       |
  379|      2|	return 0;
  380|      2|}

_gnutls_register_fork_handler:
   51|      2|{
   52|      2|	if (__register_atfork(NULL, NULL, fork_handler, __dso_handle) != 0)
  ------------------
  |  Branch (52:6): [True: 0, False: 2]
  ------------------
   53|      0|		return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
   54|      2|	return 0;
   55|      2|}

gnutls_crypto_single_cipher_register:
  180|     36|{
  181|       |	/* we override const in case free_s is set */
  182|     36|	return _algo_register(&glob_cl, algorithm, priority, (void *)s, free_s);
  183|     36|}
gnutls_crypto_single_mac_register:
  359|     10|{
  360|     10|	return _algo_register(&glob_ml, algorithm, priority, (void *)s, free_s);
  361|     10|}
gnutls_crypto_single_digest_register:
  394|     10|{
  395|     10|	return _algo_register(&glob_dl, algorithm, priority, (void *)s, free_s);
  396|     10|}
crypto-backend.c:_algo_register:
   52|     56|{
   53|     56|	algo_list *cl;
   54|     56|	algo_list *last_cl = al;
   55|     56|	int ret;
   56|       |
   57|     56|	if (al == NULL) {
  ------------------
  |  Branch (57:6): [True: 0, False: 56]
  ------------------
   58|      0|		ret = gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
   59|      0|		goto cleanup;
   60|      0|	}
   61|       |
   62|       |	/* look if there is any cipher with lowest priority. In that case do not add.
   63|       |	 */
   64|     56|	cl = al;
   65|    258|	while (cl && cl->alg_data) {
  ------------------
  |  Branch (65:9): [True: 258, False: 0]
  |  Branch (65:15): [True: 214, False: 44]
  ------------------
   66|    214|		if (cl->algorithm == algorithm) {
  ------------------
  |  Branch (66:7): [True: 12, False: 202]
  ------------------
   67|     12|			if (cl->priority < priority) {
  ------------------
  |  Branch (67:8): [True: 0, False: 12]
  ------------------
   68|      0|				gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   69|      0|				ret = GNUTLS_E_CRYPTO_ALREADY_REGISTERED;
  ------------------
  |  | 3522|      0|# define GNUTLS_E_CRYPTO_ALREADY_REGISTERED GNUTLS_E_ALREADY_REGISTERED
  |  |  ------------------
  |  |  |  | 3523|      0|# define GNUTLS_E_ALREADY_REGISTERED -209
  |  |  ------------------
  ------------------
   70|      0|				goto cleanup;
   71|     12|			} else {
   72|       |				/* the current has higher priority -> overwrite */
   73|     12|				cl->algorithm = algorithm;
   74|     12|				cl->priority = priority;
   75|     12|				cl->alg_data = s;
   76|     12|				cl->free_alg_data = free_s;
   77|     12|				return 0;
   78|     12|			}
   79|     12|		}
   80|    202|		cl = cl->next;
   81|    202|		if (cl)
  ------------------
  |  Branch (81:7): [True: 202, False: 0]
  ------------------
   82|    202|			last_cl = cl;
   83|    202|	}
   84|       |
   85|     44|	cl = gnutls_calloc(1, sizeof(cipher_list));
   86|       |
   87|     44|	if (cl == NULL) {
  ------------------
  |  Branch (87:6): [True: 0, False: 44]
  ------------------
   88|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|      0|		ret = GNUTLS_E_MEMORY_ERROR;
  ------------------
  |  | 3406|      0|# define GNUTLS_E_MEMORY_ERROR -25
  ------------------
   90|      0|		goto cleanup;
   91|      0|	}
   92|       |
   93|     44|	last_cl->algorithm = algorithm;
   94|     44|	last_cl->priority = priority;
   95|     44|	last_cl->alg_data = s;
   96|     44|	last_cl->free_alg_data = free_s;
   97|     44|	last_cl->next = cl;
   98|       |
   99|     44|	return 0;
  100|      0| cleanup:
  101|      0|	if (free_s)
  ------------------
  |  Branch (101:6): [True: 0, False: 0]
  ------------------
  102|      0|		gnutls_free(s);
  ------------------
  |  | 2296|      0|#  define gnutls_free(a) gnutls_free((void *) (a)), a=NULL
  ------------------
  103|      0|	return ret;
  104|     44|}

global.c:_gnutls_switch_lib_state:
   48|      4|{
   49|       |	/* Once into zombie state no errors can change us */
   50|      4|	_gnutls_lib_state = state;
   51|      4|}

_gnutls_global_init_skip:
   60|      2|{
   61|      2|	return 0;
   62|      2|}
global.c:lib_init:
  488|      2|{
  489|      2|	int ret;
  490|      2|	const char *e;
  491|       |
  492|      2|	if (_gnutls_global_init_skip() != 0)
  ------------------
  |  Branch (492:6): [True: 0, False: 2]
  ------------------
  493|      0|		return;
  494|       |
  495|      2|	e = secure_getenv("GNUTLS_NO_IMPLICIT_INIT");
  496|      2|	if (e != NULL) {
  ------------------
  |  Branch (496:6): [True: 0, False: 2]
  ------------------
  497|      0|		ret = atoi(e);
  498|      0|		if (ret == 1)
  ------------------
  |  Branch (498:7): [True: 0, False: 0]
  ------------------
  499|      0|			return;
  500|      0|	}
  501|       |
  502|      2|	e = secure_getenv("GNUTLS_NO_EXPLICIT_INIT");
  503|      2|	if (e != NULL) {
  ------------------
  |  Branch (503:6): [True: 0, False: 2]
  ------------------
  504|      0|		_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  505|      0|		    ("GNUTLS_NO_EXPLICIT_INIT is deprecated; use GNUTLS_NO_IMPLICIT_INIT\n");
  506|      0|		ret = atoi(e);
  507|      0|		if (ret == 1)
  ------------------
  |  Branch (507:7): [True: 0, False: 0]
  ------------------
  508|      0|			return;
  509|      0|	}
  510|       |
  511|      2|	ret = _gnutls_global_init(1);
  512|      2|	if (ret < 0) {
  ------------------
  |  Branch (512:6): [True: 0, False: 2]
  ------------------
  513|      0|		fprintf(stderr, "Error in GnuTLS initialization: %s\n",
  514|      0|			gnutls_strerror(ret));
  515|      0|		_gnutls_switch_lib_state(LIB_STATE_ERROR);
  516|      0|	}
  517|      2|}
global.c:_gnutls_global_init:
  228|      2|{
  229|      2|	int ret = 0, res;
  230|      2|	int level;
  231|      2|	const char *e;
  232|       |
  233|      2|	if (!constructor) {
  ------------------
  |  Branch (233:6): [True: 0, False: 2]
  ------------------
  234|      0|		ret = gnutls_static_mutex_lock(&global_init_mutex);
  ------------------
  |  |   45|      0|	(unlikely(glthread_lock_lock(LOCK)) ?		\
  |  |  ------------------
  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   46|      0|	gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0)
  |  |  ------------------
  |  |  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  |  |  ------------------
  ------------------
  235|      0|		if (ret < 0) {
  ------------------
  |  Branch (235:7): [True: 0, False: 0]
  ------------------
  236|      0|			return gnutls_assert_val(ret);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
  237|      0|		}
  238|      0|	}
  239|       |
  240|      2|	_gnutls_init++;
  241|      2|	if (_gnutls_init > 1) {
  ------------------
  |  Branch (241:6): [True: 0, False: 2]
  ------------------
  242|      0|		ret = _gnutls_init_ret;
  243|      0|		goto out;
  244|      0|	}
  245|       |
  246|      2|	_gnutls_switch_lib_state(LIB_STATE_INIT);
  247|       |
  248|      2|	e = secure_getenv("GNUTLS_DEBUG_LEVEL");
  249|      2|	if (e != NULL) {
  ------------------
  |  Branch (249:6): [True: 0, False: 2]
  ------------------
  250|      0|		level = atoi(e);
  251|      0|		gnutls_global_set_log_level(level);
  252|      0|		if (_gnutls_log_func == NULL)
  ------------------
  |  Branch (252:7): [True: 0, False: 0]
  ------------------
  253|      0|			gnutls_global_set_log_function(default_log_func);
  254|      0|		_gnutls_debug_log("Enabled GnuTLS " VERSION " logging...\n");
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  255|      0|	}
  256|       |
  257|      2|#ifdef HAVE_DCGETTEXT
  258|      2|	bindtextdomain(PACKAGE, LOCALEDIR);
  ------------------
  |  | 1835|      2|#define PACKAGE "gnutls"
  ------------------
  259|      2|#endif
  260|       |
  261|      2|	res = gnutls_crypto_init();
  262|      2|	if (res != 0) {
  ------------------
  |  Branch (262:6): [True: 0, False: 2]
  ------------------
  263|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  264|      0|		ret = GNUTLS_E_CRYPTO_INIT_FAILED;
  ------------------
  |  | 3561|      0|# define GNUTLS_E_CRYPTO_INIT_FAILED -318
  ------------------
  265|      0|		goto out;
  266|      0|	}
  267|       |
  268|      2|	ret = _gnutls_system_key_init();
  269|      2|	if (ret != 0) {
  ------------------
  |  Branch (269:6): [True: 0, False: 2]
  ------------------
  270|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  271|      0|	}
  272|       |
  273|       |	/* initialize ASN.1 parser
  274|       |	 */
  275|      2|	if (asn1_check_version(GNUTLS_MIN_LIBTASN1_VERSION) == NULL) {
  ------------------
  |  |   45|      2|#define GNUTLS_MIN_LIBTASN1_VERSION "0.3.4"
  ------------------
  |  Branch (275:6): [True: 0, False: 2]
  ------------------
  276|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  277|      0|		_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  278|      0|		    ("Checking for libtasn1 failed: %s < %s\n",
  279|      0|		     asn1_check_version(NULL), GNUTLS_MIN_LIBTASN1_VERSION);
  280|      0|		ret = GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY;
  ------------------
  |  | 3512|      0|# define GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY -203
  ------------------
  281|      0|		goto out;
  282|      0|	}
  283|       |
  284|      2|	_gnutls_pkix1_asn = NULL;
  285|      2|	res = asn1_array2tree(pkix_asn1_tab, &_gnutls_pkix1_asn, NULL);
  286|      2|	if (res != ASN1_SUCCESS) {
  ------------------
  |  |  116|      2|# define ASN1_SUCCESS			0
  ------------------
  |  Branch (286:6): [True: 0, False: 2]
  ------------------
  287|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  288|      0|		ret = _gnutls_asn2err(res);
  289|      0|		goto out;
  290|      0|	}
  291|       |
  292|      2|	res = asn1_array2tree(gnutls_asn1_tab, &_gnutls_gnutls_asn, NULL);
  293|      2|	if (res != ASN1_SUCCESS) {
  ------------------
  |  |  116|      2|# define ASN1_SUCCESS			0
  ------------------
  |  Branch (293:6): [True: 0, False: 2]
  ------------------
  294|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  295|      0|		ret = _gnutls_asn2err(res);
  296|      0|		goto out;
  297|      0|	}
  298|       |
  299|       |	/* Initialize the random generator */
  300|      2|	ret = _gnutls_rnd_preinit();
  301|      2|	if (ret < 0) {
  ------------------
  |  Branch (301:6): [True: 0, False: 2]
  ------------------
  302|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  303|      0|		goto out;
  304|      0|	}
  305|       |
  306|       |	/* Initialize the default TLS extensions */
  307|      2|	ret = _gnutls_hello_ext_init();
  308|      2|	if (ret < 0) {
  ------------------
  |  Branch (308:6): [True: 0, False: 2]
  ------------------
  309|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  310|      0|		goto out;
  311|      0|	}
  312|       |
  313|      2|	ret = gnutls_system_global_init();
  314|      2|	if (ret < 0) {
  ------------------
  |  Branch (314:6): [True: 0, False: 2]
  ------------------
  315|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  316|      0|		goto out;
  317|      0|	}
  318|       |
  319|      2|#ifndef _WIN32
  320|      2|	ret = _gnutls_register_fork_handler();
  321|      2|	if (ret < 0) {
  ------------------
  |  Branch (321:6): [True: 0, False: 2]
  ------------------
  322|      0|		gnutls_assert();
  ------------------
  |  |   33|      0|#   define gnutls_assert() _gnutls_assert_log( "ASSERT: %s[%s]:%d\n", __FILE__,__func__,__LINE__);
  |  |  ------------------
  |  |  |  |  140|      0|#  define _gnutls_assert_log(...) LEVEL(3, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  323|      0|		goto out;
  324|      0|	}
  325|      2|#endif
  326|       |
  327|       |#ifdef ENABLE_FIPS140
  328|       |	res = _gnutls_fips_mode_enabled();
  329|       |	/* res == 1 -> fips140-2 mode enabled
  330|       |	 * res == 2 -> only self checks performed - but no failure
  331|       |	 * res == not in fips140 mode
  332|       |	 */
  333|       |	if (res != 0) {
  334|       |		_gnutls_debug_log("FIPS140-2 mode: %d\n", res);
  335|       |		_gnutls_priority_update_fips();
  336|       |
  337|       |		/* first round of self checks, these are done on the
  338|       |		 * nettle algorithms which are used internally */
  339|       |		_gnutls_switch_lib_state(LIB_STATE_SELFTEST);
  340|       |		ret = _gnutls_fips_perform_self_checks1();
  341|       |		if (ret < 0) {
  342|       |			_gnutls_switch_lib_state(LIB_STATE_ERROR);
  343|       |			_gnutls_audit_log(NULL,
  344|       |					  "FIPS140-2 self testing part1 failed\n");
  345|       |			if (res != 2) {
  346|       |				gnutls_assert();
  347|       |				goto out;
  348|       |			}
  349|       |		}
  350|       |	}
  351|       |#endif
  352|       |
  353|      2|	_gnutls_register_accel_crypto();
  354|      2|	_gnutls_cryptodev_init();
  355|      2|	_gnutls_afalg_init();
  356|       |
  357|       |#ifdef ENABLE_FIPS140
  358|       |	/* These self tests are performed on the overridden algorithms
  359|       |	 * (e.g., AESNI overridden AES). They are after _gnutls_register_accel_crypto()
  360|       |	 * intentionally */
  361|       |	if (res != 0) {
  362|       |		_gnutls_switch_lib_state(LIB_STATE_SELFTEST);
  363|       |		ret = _gnutls_fips_perform_self_checks2();
  364|       |		if (ret < 0) {
  365|       |			_gnutls_switch_lib_state(LIB_STATE_ERROR);
  366|       |			_gnutls_audit_log(NULL,
  367|       |					  "FIPS140-2 self testing part 2 failed\n");
  368|       |			if (res != 2) {
  369|       |				gnutls_assert();
  370|       |				goto out;
  371|       |			}
  372|       |		}
  373|       |		_gnutls_fips_mode_reset_zombie();
  374|       |	}
  375|       |#endif
  376|      2|	_gnutls_prepare_to_load_system_priorities();
  377|      2|	_gnutls_switch_lib_state(LIB_STATE_OPERATIONAL);
  378|      2|	ret = 0;
  379|       |
  380|      2| out:
  381|      2|	_gnutls_init_ret = ret;
  382|      2|	if (!constructor) {
  ------------------
  |  Branch (382:6): [True: 0, False: 2]
  ------------------
  383|      0|		(void)gnutls_static_mutex_unlock(&global_init_mutex);
  ------------------
  |  |   49|      0|	(unlikely(glthread_lock_unlock(LOCK)) ?		\
  |  |  ------------------
  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   50|      0|	gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0)
  |  |  ------------------
  |  |  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  |  |  ------------------
  ------------------
  384|      0|	}
  385|      2|	return ret;
  386|      2|}

_gnutls_hello_ext_init:
  477|      2|{
  478|      2|	return GNUTLS_E_SUCCESS;
  ------------------
  |  | 3388|      2|# define GNUTLS_E_SUCCESS 0
  ------------------
  479|      2|}

_asn1_str_cat:
   33|    532|{
   34|    532|  size_t str_size = strlen (src);
   35|    532|  size_t dest_size = strlen (dest);
   36|       |
   37|    532|  if (dest_tot_size - dest_size > str_size)
  ------------------
  |  Branch (37:7): [True: 532, False: 0]
  ------------------
   38|    532|    {
   39|    532|      strcat (dest, src);
   40|    532|    }
   41|      0|  else
   42|      0|    {
   43|      0|      if (dest_tot_size > dest_size)
  ------------------
  |  Branch (43:11): [True: 0, False: 0]
  ------------------
   44|      0|	{
   45|      0|	  strncat (dest, src, (dest_tot_size - dest_size) - 1);
   46|      0|	  dest[dest_tot_size - 1] = 0;
   47|      0|	}
   48|      0|    }
   49|    532|}
_asn1_str_cpy:
   54|  1.43k|{
   55|  1.43k|  size_t str_size = strlen (src);
   56|       |
   57|  1.43k|  if (dest_tot_size > str_size)
  ------------------
  |  Branch (57:7): [True: 1.43k, False: 0]
  ------------------
   58|  1.43k|    {
   59|  1.43k|      strcpy (dest, src);
   60|  1.43k|      return str_size;
   61|  1.43k|    }
   62|      0|  else
   63|      0|    {
   64|      0|      if (dest_tot_size > 0)
  ------------------
  |  Branch (64:11): [True: 0, False: 0]
  ------------------
   65|      0|	{
   66|      0|	  str_size = dest_tot_size - 1;
   67|      0|	  memcpy (dest, src, str_size);
   68|      0|	  dest[str_size] = 0;
   69|      0|	  return str_size;
   70|      0|	}
   71|      0|      else
   72|      0|	return 0;
   73|      0|    }
   74|  1.43k|}

parser_aux.c:type_field:
  179|  5.64k|{
  180|  5.64k|  return (ntype & 0xff);
  181|  5.64k|}
structure.c:convert_old_type:
  186|  1.14k|{
  187|  1.14k|  unsigned int type = ntype & 0xff;
  188|  1.14k|  if (type == ASN1_ETYPE_TIME)
  ------------------
  |  |  172|  1.14k|# define ASN1_ETYPE_TIME 17
  ------------------
  |  Branch (188:7): [True: 0, False: 1.14k]
  ------------------
  189|      0|    {
  190|      0|      if (ntype & CONST_UTC)
  ------------------
  |  |  160|      0|# define CONST_UTC         (1U<<24)
  ------------------
  |  Branch (190:11): [True: 0, False: 0]
  ------------------
  191|      0|	type = ASN1_ETYPE_UTC_TIME;
  ------------------
  |  |  244|      0|# define ASN1_ETYPE_UTC_TIME       36
  ------------------
  192|      0|      else
  193|      0|	type = ASN1_ETYPE_GENERALIZED_TIME;
  ------------------
  |  |  245|      0|# define ASN1_ETYPE_GENERALIZED_TIME 37
  ------------------
  194|       |
  195|      0|      ntype &= ~(CONST_UTC | CONST_GENERALIZED);
  ------------------
  |  |  160|      0|# define CONST_UTC         (1U<<24)
  ------------------
                    ntype &= ~(CONST_UTC | CONST_GENERALIZED);
  ------------------
  |  |  159|      0|# define CONST_GENERALIZED (1U<<23)
  ------------------
  196|      0|      ntype &= 0xffffff00;
  197|      0|      ntype |= type;
  198|       |
  199|      0|      return ntype;
  200|      0|    }
  201|  1.14k|  else
  202|  1.14k|    return ntype;
  203|  1.14k|}

_asn1_add_static_node:
   66|  1.14k|{
   67|  1.14k|  list_type *p;
   68|  1.14k|  asn1_node punt;
   69|       |
   70|  1.14k|  punt = calloc (1, sizeof (struct asn1_node_st));
   71|  1.14k|  if (punt == NULL)
  ------------------
  |  Branch (71:7): [True: 0, False: 1.14k]
  ------------------
   72|      0|    return NULL;
   73|       |
   74|  1.14k|  p = malloc (sizeof (list_type));
   75|  1.14k|  if (p == NULL)
  ------------------
  |  Branch (75:7): [True: 0, False: 1.14k]
  ------------------
   76|      0|    {
   77|      0|      free (punt);
   78|      0|      return NULL;
   79|      0|    }
   80|       |
   81|  1.14k|  p->node = punt;
   82|  1.14k|  p->next = *e_list;
   83|  1.14k|  *e_list = p;
   84|       |
   85|  1.14k|  punt->type = type;
   86|       |
   87|  1.14k|  return punt;
   88|  1.14k|}
asn1_find_node:
  122|    266|{
  123|    266|  asn1_node_const p;
  124|    266|  char *n_end, n[ASN1_MAX_NAME_SIZE + 1];
  125|    266|  const char *n_start;
  126|    266|  unsigned int nsize;
  127|    266|  unsigned int nhash;
  128|       |
  129|    266|  if (pointer == NULL)
  ------------------
  |  Branch (129:7): [True: 0, False: 266]
  ------------------
  130|      0|    return NULL;
  131|       |
  132|    266|  if (name == NULL)
  ------------------
  |  Branch (132:7): [True: 0, False: 266]
  ------------------
  133|      0|    return NULL;
  134|       |
  135|    266|  p = pointer;
  136|    266|  n_start = name;
  137|       |
  138|    266|  if (name[0] == '?' && name[1] == 'C' && p->name[0] == '?')
  ------------------
  |  Branch (138:7): [True: 0, False: 266]
  |  Branch (138:25): [True: 0, False: 0]
  |  Branch (138:43): [True: 0, False: 0]
  ------------------
  139|      0|    {				/* ?CURRENT */
  140|      0|      n_start = strchr (n_start, '.');
  141|      0|      if (n_start)
  ------------------
  |  Branch (141:11): [True: 0, False: 0]
  ------------------
  142|      0|	n_start++;
  143|      0|    }
  144|    266|  else if (p->name[0] != 0)
  ------------------
  |  Branch (144:12): [True: 266, False: 0]
  ------------------
  145|    266|    {				/* has *pointer got a name ? */
  146|    266|      n_end = strchr (n_start, '.');	/* search the first dot */
  147|    266|      if (n_end)
  ------------------
  |  Branch (147:11): [True: 266, False: 0]
  ------------------
  148|    266|	{
  149|    266|	  nsize = n_end - n_start;
  150|    266|	  if (nsize >= sizeof (n))
  ------------------
  |  Branch (150:8): [True: 0, False: 266]
  ------------------
  151|      0|	    return NULL;
  152|       |
  153|    266|	  memcpy (n, n_start, nsize);
  154|    266|	  n[nsize] = 0;
  155|    266|	  n_start = n_end;
  156|    266|	  n_start++;
  157|       |
  158|    266|	  nhash = _asn1_hash_name (n);
  159|    266|	}
  160|      0|      else
  161|      0|	{
  162|      0|	  _asn1_str_cpy (n, sizeof (n), n_start);
  163|      0|	  nhash = _asn1_hash_name (n);
  164|       |
  165|      0|	  n_start = NULL;
  166|      0|	}
  167|       |
  168|    266|      while (p)
  ------------------
  |  Branch (168:14): [True: 266, False: 0]
  ------------------
  169|    266|	{
  170|    266|	  if (nhash == p->name_hash && (!strcmp (p->name, n)))
  ------------------
  |  Branch (170:8): [True: 266, False: 0]
  |  Branch (170:33): [True: 266, False: 0]
  ------------------
  171|    266|	    break;
  172|      0|	  else
  173|      0|	    p = p->right;
  174|    266|	}			/* while */
  175|       |
  176|    266|      if (p == NULL)
  ------------------
  |  Branch (176:11): [True: 0, False: 266]
  ------------------
  177|      0|	return NULL;
  178|    266|    }
  179|      0|  else
  180|      0|    {				/* *pointer doesn't have a name */
  181|      0|      if (n_start[0] == 0)
  ------------------
  |  Branch (181:11): [True: 0, False: 0]
  ------------------
  182|      0|	return (asn1_node) p;
  183|      0|    }
  184|       |
  185|    532|  while (n_start)
  ------------------
  |  Branch (185:10): [True: 266, False: 266]
  ------------------
  186|    266|    {				/* Has the end of NAME been reached? */
  187|    266|      n_end = strchr (n_start, '.');	/* search the next dot */
  188|    266|      if (n_end)
  ------------------
  |  Branch (188:11): [True: 0, False: 266]
  ------------------
  189|      0|	{
  190|      0|	  nsize = n_end - n_start;
  191|      0|	  if (nsize >= sizeof (n))
  ------------------
  |  Branch (191:8): [True: 0, False: 0]
  ------------------
  192|      0|	    return NULL;
  193|       |
  194|      0|	  memcpy (n, n_start, nsize);
  195|      0|	  n[nsize] = 0;
  196|      0|	  n_start = n_end;
  197|      0|	  n_start++;
  198|       |
  199|      0|	  nhash = _asn1_hash_name (n);
  200|      0|	}
  201|    266|      else
  202|    266|	{
  203|    266|	  _asn1_str_cpy (n, sizeof (n), n_start);
  204|    266|	  nhash = _asn1_hash_name (n);
  205|    266|	  n_start = NULL;
  206|    266|	}
  207|       |
  208|    266|      if (p->down == NULL)
  ------------------
  |  Branch (208:11): [True: 0, False: 266]
  ------------------
  209|      0|	return NULL;
  210|       |
  211|    266|      p = p->down;
  212|    266|      if (p == NULL)
  ------------------
  |  Branch (212:11): [True: 0, False: 266]
  ------------------
  213|      0|	return NULL;
  214|       |
  215|       |      /* The identifier "?LAST" indicates the last element
  216|       |         in the right chain. */
  217|    266|      if (n[0] == '?' && n[1] == 'L')	/* ?LAST */
  ------------------
  |  Branch (217:11): [True: 0, False: 266]
  |  Branch (217:26): [True: 0, False: 0]
  ------------------
  218|      0|	{
  219|      0|	  while (p->right)
  ------------------
  |  Branch (219:11): [True: 0, False: 0]
  ------------------
  220|      0|	    p = p->right;
  221|      0|	}
  222|    266|      else
  223|    266|	{			/* no "?LAST" */
  224|  11.1k|	  while (p)
  ------------------
  |  Branch (224:11): [True: 11.1k, False: 0]
  ------------------
  225|  11.1k|	    {
  226|  11.1k|	      if (p->name_hash == nhash && !strcmp (p->name, n))
  ------------------
  |  Branch (226:12): [True: 266, False: 10.8k]
  |  Branch (226:37): [True: 266, False: 0]
  ------------------
  227|    266|		break;
  228|  10.8k|	      else
  229|  10.8k|		p = p->right;
  230|  11.1k|	    }
  231|    266|	}
  232|    266|      if (p == NULL)
  ------------------
  |  Branch (232:11): [True: 0, False: 266]
  ------------------
  233|      0|	return NULL;
  234|    266|    }				/* while */
  235|       |
  236|    266|  return (asn1_node) p;
  237|    266|}
_asn1_set_value:
  252|    462|{
  253|    462|  if (node == NULL)
  ------------------
  |  Branch (253:7): [True: 0, False: 462]
  ------------------
  254|      0|    return node;
  255|    462|  if (node->value)
  ------------------
  |  Branch (255:7): [True: 0, False: 462]
  ------------------
  256|      0|    {
  257|      0|      if (node->value != node->small_value)
  ------------------
  |  Branch (257:11): [True: 0, False: 0]
  ------------------
  258|      0|	free (node->value);
  259|      0|      node->value = NULL;
  260|      0|      node->value_len = 0;
  261|      0|    }
  262|       |
  263|    462|  if (!len)
  ------------------
  |  Branch (263:7): [True: 0, False: 462]
  ------------------
  264|      0|    return node;
  265|       |
  266|    462|  if (len < sizeof (node->small_value))
  ------------------
  |  Branch (266:7): [True: 314, False: 148]
  ------------------
  267|    314|    {
  268|    314|      node->value = node->small_value;
  269|    314|    }
  270|    148|  else
  271|    148|    {
  272|    148|      node->value = malloc (len);
  273|    148|      if (node->value == NULL)
  ------------------
  |  Branch (273:11): [True: 0, False: 148]
  ------------------
  274|      0|	return NULL;
  275|    148|    }
  276|    462|  node->value_len = len;
  277|       |
  278|    462|  memcpy (node->value, value, len);
  279|    462|  return node;
  280|    462|}
_asn1_set_name:
  409|    898|{
  410|    898|  if (node == NULL)
  ------------------
  |  Branch (410:7): [True: 0, False: 898]
  ------------------
  411|      0|    return node;
  412|       |
  413|    898|  _asn1_str_cpy (node->name, sizeof (node->name), name ? name : "");
  ------------------
  |  Branch (413:51): [True: 898, False: 0]
  ------------------
  414|    898|  node->name_hash = _asn1_hash_name (node->name);
  415|       |
  416|    898|  return node;
  417|    898|}
_asn1_set_right:
  457|    714|{
  458|    714|  if (node == NULL)
  ------------------
  |  Branch (458:7): [True: 0, False: 714]
  ------------------
  459|      0|    return node;
  460|    714|  node->right = right;
  461|    714|  if (right)
  ------------------
  |  Branch (461:7): [True: 714, False: 0]
  ------------------
  462|    714|    right->left = node;
  463|    714|  return node;
  464|    714|}
_asn1_find_up:
  523|  2.12k|{
  524|  2.12k|  asn1_node_const p;
  525|       |
  526|  2.12k|  if (node == NULL)
  ------------------
  |  Branch (526:7): [True: 0, False: 2.12k]
  ------------------
  527|      0|    return NULL;
  528|       |
  529|  2.12k|  p = node;
  530|       |
  531|  5.69k|  while ((p->left != NULL) && (p->left->right == p))
  ------------------
  |  Branch (531:10): [True: 5.69k, False: 0]
  |  Branch (531:31): [True: 3.57k, False: 2.12k]
  ------------------
  532|  3.57k|    p = p->left;
  533|       |
  534|  2.12k|  return p->left;
  535|  2.12k|}
_asn1_delete_list:
  581|      4|{
  582|      4|  list_type *p;
  583|       |
  584|  1.14k|  while (e_list)
  ------------------
  |  Branch (584:10): [True: 1.14k, False: 4]
  ------------------
  585|  1.14k|    {
  586|  1.14k|      p = e_list;
  587|  1.14k|      e_list = e_list->next;
  588|  1.14k|      free (p);
  589|  1.14k|    }
  590|      4|}
_asn1_change_integer_value:
  662|      4|{
  663|      4|  asn1_node p;
  664|      4|  unsigned char val[SIZEOF_UNSIGNED_LONG_INT];
  665|      4|  unsigned char val2[SIZEOF_UNSIGNED_LONG_INT + 1];
  666|      4|  int len;
  667|       |
  668|      4|  if (node == NULL)
  ------------------
  |  Branch (668:7): [True: 0, False: 4]
  ------------------
  669|      0|    return ASN1_ELEMENT_NOT_FOUND;
  ------------------
  |  |  118|      0|# define ASN1_ELEMENT_NOT_FOUND		2
  ------------------
  670|       |
  671|      4|  p = node;
  672|  1.14k|  while (p)
  ------------------
  |  Branch (672:10): [True: 1.14k, False: 4]
  ------------------
  673|  1.14k|    {
  674|  1.14k|      if ((type_field (p->type) == ASN1_ETYPE_INTEGER)
  ------------------
  |  |  217|  1.14k|# define ASN1_ETYPE_INTEGER        3
  ------------------
  |  Branch (674:11): [True: 124, False: 1.01k]
  ------------------
  675|  1.14k|	  && (p->type & CONST_ASSIGN))
  ------------------
  |  |  166|    124|# define CONST_ASSIGN      (1U<<28)
  ------------------
  |  Branch (675:7): [True: 0, False: 124]
  ------------------
  676|      0|	{
  677|      0|	  if (p->value)
  ------------------
  |  Branch (677:8): [True: 0, False: 0]
  ------------------
  678|      0|	    {
  679|      0|	      _asn1_convert_integer (p->value, val, sizeof (val), &len);
  680|      0|	      asn1_octet_der (val, len, val2, &len);
  681|      0|	      _asn1_set_value (p, val2, len);
  682|      0|	    }
  683|      0|	}
  684|       |
  685|  1.14k|      if (p->down)
  ------------------
  |  Branch (685:11): [True: 424, False: 718]
  ------------------
  686|    424|	{
  687|    424|	  p = p->down;
  688|    424|	}
  689|    718|      else
  690|    718|	{
  691|    718|	  if (p == node)
  ------------------
  |  Branch (691:8): [True: 0, False: 718]
  ------------------
  692|      0|	    p = NULL;
  693|    718|	  else if (p->right)
  ------------------
  |  Branch (693:13): [True: 392, False: 326]
  ------------------
  694|    392|	    p = p->right;
  695|    326|	  else
  696|    326|	    {
  697|    424|	      while (1)
  ------------------
  |  Branch (697:15): [Folded - Ignored]
  ------------------
  698|    424|		{
  699|    424|		  p = _asn1_find_up (p);
  700|    424|		  if (p == node)
  ------------------
  |  Branch (700:9): [True: 4, False: 420]
  ------------------
  701|      4|		    {
  702|      4|		      p = NULL;
  703|      4|		      break;
  704|      4|		    }
  705|    420|		  if (p && p->right)
  ------------------
  |  Branch (705:9): [True: 420, False: 0]
  |  Branch (705:14): [True: 322, False: 98]
  ------------------
  706|    322|		    {
  707|    322|		      p = p->right;
  708|    322|		      break;
  709|    322|		    }
  710|    420|		}
  711|    326|	    }
  712|    718|	}
  713|  1.14k|    }
  714|       |
  715|      4|  return ASN1_SUCCESS;
  ------------------
  |  |  116|      4|# define ASN1_SUCCESS			0
  ------------------
  716|      4|}
_asn1_expand_object_id:
  731|      4|{
  732|      4|  asn1_node p, p2, p3, p4, p5;
  733|      4|  char name_root[ASN1_MAX_NAME_SIZE], name2[2 * ASN1_MAX_NAME_SIZE + 1];
  734|      4|  int move, tlen, tries;
  735|      4|  unsigned max_constants;
  736|       |
  737|      4|  if (node == NULL)
  ------------------
  |  Branch (737:7): [True: 0, False: 4]
  ------------------
  738|      0|    return ASN1_ELEMENT_NOT_FOUND;
  ------------------
  |  |  118|      0|# define ASN1_ELEMENT_NOT_FOUND		2
  ------------------
  739|       |
  740|      4|  _asn1_str_cpy (name_root, sizeof (name_root), node->name);
  741|       |
  742|      4|  p = node;
  743|      4|  move = DOWN;
  ------------------
  |  |  131|      4|# define DOWN   3
  ------------------
  744|      4|  tries = 0;
  745|       |
  746|  1.56k|  while (!((p == node) && (move == UP)))
  ------------------
  |  |  129|      8|# define UP     1
  ------------------
  |  Branch (746:12): [True: 8, False: 1.55k]
  |  Branch (746:27): [True: 4, False: 4]
  ------------------
  747|  1.56k|    {
  748|  1.56k|      if (move != UP)
  ------------------
  |  |  129|  1.56k|# define UP     1
  ------------------
  |  Branch (748:11): [True: 1.14k, False: 420]
  ------------------
  749|  1.14k|	{
  750|  1.14k|	  if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID)
  ------------------
  |  |  226|  1.14k|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (750:8): [True: 68, False: 1.07k]
  ------------------
  751|  1.14k|	      && (p->type & CONST_ASSIGN))
  ------------------
  |  |  166|     68|# define CONST_ASSIGN      (1U<<28)
  ------------------
  |  Branch (751:11): [True: 2, False: 66]
  ------------------
  752|      2|	    {
  753|      2|	      p2 = p->down;
  754|      2|	      if (p2 && (type_field (p2->type) == ASN1_ETYPE_CONSTANT))
  ------------------
  |  |  215|      2|# define ASN1_ETYPE_CONSTANT       1
  ------------------
  |  Branch (754:12): [True: 2, False: 0]
  |  Branch (754:18): [True: 2, False: 0]
  ------------------
  755|      2|		{
  756|      2|		  if (p2->value && !c_isdigit (p2->value[0]))
  ------------------
  |  Branch (756:9): [True: 2, False: 0]
  |  Branch (756:22): [True: 0, False: 2]
  ------------------
  757|      0|		    {
  758|      0|		      _asn1_str_cpy (name2, sizeof (name2), name_root);
  759|      0|		      _asn1_str_cat (name2, sizeof (name2), ".");
  760|      0|		      _asn1_str_cat (name2, sizeof (name2),
  761|      0|				     (char *) p2->value);
  762|      0|		      p3 = asn1_find_node (node, name2);
  763|      0|		      if (!p3 || _asn1_is_up (p2, p3) ||
  ------------------
  |  Branch (763:13): [True: 0, False: 0]
  |  Branch (763:20): [True: 0, False: 0]
  ------------------
  764|      0|			  (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) ||
  ------------------
  |  |  226|      0|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (764:6): [True: 0, False: 0]
  ------------------
  765|      0|			  !(p3->type & CONST_ASSIGN))
  ------------------
  |  |  166|      0|# define CONST_ASSIGN      (1U<<28)
  ------------------
  |  Branch (765:6): [True: 0, False: 0]
  ------------------
  766|      0|			return ASN1_ELEMENT_NOT_FOUND;
  ------------------
  |  |  118|      0|# define ASN1_ELEMENT_NOT_FOUND		2
  ------------------
  767|       |
  768|      0|		      _asn1_set_down (p, p2->right);
  769|      0|		      if (p2->down)
  ------------------
  |  Branch (769:13): [True: 0, False: 0]
  ------------------
  770|      0|			_asn1_delete_structure (*list, &p2->down, 0);
  771|      0|		      _asn1_delete_node_from_list (*list, p2);
  772|      0|		      _asn1_remove_node (p2, 0);
  773|      0|		      p2 = p;
  774|      0|		      p4 = p3->down;
  775|      0|		      max_constants = 0;
  776|      0|		      while (p4)
  ------------------
  |  Branch (776:16): [True: 0, False: 0]
  ------------------
  777|      0|			{
  778|      0|			  if (type_field (p4->type) == ASN1_ETYPE_CONSTANT)
  ------------------
  |  |  215|      0|# define ASN1_ETYPE_CONSTANT       1
  ------------------
  |  Branch (778:10): [True: 0, False: 0]
  ------------------
  779|      0|			    {
  780|      0|			      max_constants++;
  781|      0|			      if (max_constants == MAX_CONSTANTS)
  ------------------
  |  |  718|      0|#define MAX_CONSTANTS 1024
  ------------------
  |  Branch (781:14): [True: 0, False: 0]
  ------------------
  782|      0|				return ASN1_RECURSION;
  ------------------
  |  |  135|      0|# define ASN1_RECURSION			19
  ------------------
  783|       |
  784|      0|			      p5 =
  785|      0|				_asn1_add_single_node (ASN1_ETYPE_CONSTANT);
  ------------------
  |  |  215|      0|# define ASN1_ETYPE_CONSTANT       1
  ------------------
  786|      0|			      _asn1_set_name (p5, p4->name);
  787|      0|			      if (p4->value)
  ------------------
  |  Branch (787:14): [True: 0, False: 0]
  ------------------
  788|      0|				{
  789|      0|				  tlen = _asn1_strlen (p4->value);
  ------------------
  |  |  113|      0|# define _asn1_strlen(s) strlen((const char *) s)
  ------------------
  790|      0|				  if (tlen > 0)
  ------------------
  |  Branch (790:11): [True: 0, False: 0]
  ------------------
  791|      0|				    _asn1_set_value (p5, p4->value, tlen + 1);
  792|      0|				}
  793|      0|			      _asn1_add_static_node2 (list, p5);
  794|       |
  795|      0|			      if (p2 == p)
  ------------------
  |  Branch (795:14): [True: 0, False: 0]
  ------------------
  796|      0|				{
  797|      0|				  _asn1_set_right (p5, p->down);
  798|      0|				  _asn1_set_down (p, p5);
  799|      0|				}
  800|      0|			      else
  801|      0|				{
  802|      0|				  _asn1_set_right (p5, p2->right);
  803|      0|				  _asn1_set_right (p2, p5);
  804|      0|				}
  805|      0|			      p2 = p5;
  806|      0|			    }
  807|      0|			  p4 = p4->right;
  808|      0|			}
  809|      0|		      move = DOWN;
  ------------------
  |  |  131|      0|# define DOWN   3
  ------------------
  810|       |
  811|      0|		      tries++;
  812|      0|		      if (tries >= EXPAND_OBJECT_ID_MAX_RECURSION)
  ------------------
  |  |   76|      0|# define EXPAND_OBJECT_ID_MAX_RECURSION 16
  ------------------
  |  Branch (812:13): [True: 0, False: 0]
  ------------------
  813|      0|			return ASN1_RECURSION;
  ------------------
  |  |  135|      0|# define ASN1_RECURSION			19
  ------------------
  814|       |
  815|      0|		      continue;
  816|      0|		    }
  817|      2|		}
  818|      2|	    }
  819|  1.14k|	  move = DOWN;
  ------------------
  |  |  131|  1.14k|# define DOWN   3
  ------------------
  820|  1.14k|	}
  821|    420|      else
  822|    420|	move = RIGHT;
  ------------------
  |  |  130|    420|# define RIGHT  2
  ------------------
  823|       |
  824|  1.56k|      tries = 0;
  825|  1.56k|      if (move == DOWN)
  ------------------
  |  |  131|  1.56k|# define DOWN   3
  ------------------
  |  Branch (825:11): [True: 1.14k, False: 420]
  ------------------
  826|  1.14k|	{
  827|  1.14k|	  if (p->down)
  ------------------
  |  Branch (827:8): [True: 424, False: 718]
  ------------------
  828|    424|	    p = p->down;
  829|    718|	  else
  830|    718|	    move = RIGHT;
  ------------------
  |  |  130|    718|# define RIGHT  2
  ------------------
  831|  1.14k|	}
  832|       |
  833|  1.56k|      if (p == node)
  ------------------
  |  Branch (833:11): [True: 0, False: 1.56k]
  ------------------
  834|      0|	{
  835|      0|	  move = UP;
  ------------------
  |  |  129|      0|# define UP     1
  ------------------
  836|      0|	  continue;
  837|      0|	}
  838|       |
  839|  1.56k|      if (move == RIGHT)
  ------------------
  |  |  130|  1.56k|# define RIGHT  2
  ------------------
  |  Branch (839:11): [True: 1.13k, False: 424]
  ------------------
  840|  1.13k|	{
  841|  1.13k|	  if (p && p->right)
  ------------------
  |  Branch (841:8): [True: 1.13k, False: 0]
  |  Branch (841:13): [True: 714, False: 424]
  ------------------
  842|    714|	    p = p->right;
  843|    424|	  else
  844|    424|	    move = UP;
  ------------------
  |  |  129|    424|# define UP     1
  ------------------
  845|  1.13k|	}
  846|  1.56k|      if (move == UP)
  ------------------
  |  |  129|  1.56k|# define UP     1
  ------------------
  |  Branch (846:11): [True: 424, False: 1.13k]
  ------------------
  847|    424|	p = _asn1_find_up (p);
  848|  1.56k|    }
  849|       |
  850|       |  /*******************************/
  851|       |  /*       expand DEFAULT        */
  852|       |  /*******************************/
  853|      4|  p = node;
  854|      4|  move = DOWN;
  ------------------
  |  |  131|      4|# define DOWN   3
  ------------------
  855|       |
  856|  1.56k|  while (!((p == node) && (move == UP)))
  ------------------
  |  |  129|      8|# define UP     1
  ------------------
  |  Branch (856:12): [True: 8, False: 1.55k]
  |  Branch (856:27): [True: 4, False: 4]
  ------------------
  857|  1.56k|    {
  858|  1.56k|      if (move != UP)
  ------------------
  |  |  129|  1.56k|# define UP     1
  ------------------
  |  Branch (858:11): [True: 1.14k, False: 420]
  ------------------
  859|  1.14k|	{
  860|  1.14k|	  if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) &&
  ------------------
  |  |  226|  1.14k|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (860:8): [True: 68, False: 1.07k]
  ------------------
  861|  1.14k|	      (p->type & CONST_DEFAULT))
  ------------------
  |  |  145|     68|# define CONST_DEFAULT     (1U<<15)
  ------------------
  |  Branch (861:8): [True: 0, False: 68]
  ------------------
  862|      0|	    {
  863|      0|	      p2 = p->down;
  864|      0|	      if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT))
  ------------------
  |  |  223|      0|# define ASN1_ETYPE_DEFAULT        9
  ------------------
  |  Branch (864:12): [True: 0, False: 0]
  |  Branch (864:18): [True: 0, False: 0]
  ------------------
  865|      0|		{
  866|      0|		  _asn1_str_cpy (name2, sizeof (name2), name_root);
  867|      0|		  _asn1_str_cat (name2, sizeof (name2), ".");
  868|      0|		  if (p2->value)
  ------------------
  |  Branch (868:9): [True: 0, False: 0]
  ------------------
  869|      0|		    _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
  870|      0|		  p3 = asn1_find_node (node, name2);
  871|      0|		  if (!p3 || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID)
  ------------------
  |  |  226|      0|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (871:9): [True: 0, False: 0]
  |  Branch (871:16): [True: 0, False: 0]
  ------------------
  872|      0|		      || !(p3->type & CONST_ASSIGN))
  ------------------
  |  |  166|      0|# define CONST_ASSIGN      (1U<<28)
  ------------------
  |  Branch (872:12): [True: 0, False: 0]
  ------------------
  873|      0|		    return ASN1_ELEMENT_NOT_FOUND;
  ------------------
  |  |  118|      0|# define ASN1_ELEMENT_NOT_FOUND		2
  ------------------
  874|      0|		  p4 = p3->down;
  875|      0|		  name2[0] = 0;
  876|      0|		  while (p4)
  ------------------
  |  Branch (876:12): [True: 0, False: 0]
  ------------------
  877|      0|		    {
  878|      0|		      if (type_field (p4->type) == ASN1_ETYPE_CONSTANT)
  ------------------
  |  |  215|      0|# define ASN1_ETYPE_CONSTANT       1
  ------------------
  |  Branch (878:13): [True: 0, False: 0]
  ------------------
  879|      0|			{
  880|      0|			  if (p4->value == NULL)
  ------------------
  |  Branch (880:10): [True: 0, False: 0]
  ------------------
  881|      0|			    return ASN1_VALUE_NOT_FOUND;
  ------------------
  |  |  121|      0|# define ASN1_VALUE_NOT_FOUND		5
  ------------------
  882|       |
  883|      0|			  if (name2[0])
  ------------------
  |  Branch (883:10): [True: 0, False: 0]
  ------------------
  884|      0|			    _asn1_str_cat (name2, sizeof (name2), ".");
  885|      0|			  _asn1_str_cat (name2, sizeof (name2),
  886|      0|					 (char *) p4->value);
  887|      0|			}
  888|      0|		      p4 = p4->right;
  889|      0|		    }
  890|      0|		  tlen = strlen (name2);
  891|      0|		  if (tlen > 0)
  ------------------
  |  Branch (891:9): [True: 0, False: 0]
  ------------------
  892|      0|		    _asn1_set_value (p2, name2, tlen + 1);
  893|      0|		}
  894|      0|	    }
  895|  1.14k|	  move = DOWN;
  ------------------
  |  |  131|  1.14k|# define DOWN   3
  ------------------
  896|  1.14k|	}
  897|    420|      else
  898|    420|	move = RIGHT;
  ------------------
  |  |  130|    420|# define RIGHT  2
  ------------------
  899|       |
  900|  1.56k|      if (move == DOWN)
  ------------------
  |  |  131|  1.56k|# define DOWN   3
  ------------------
  |  Branch (900:11): [True: 1.14k, False: 420]
  ------------------
  901|  1.14k|	{
  902|  1.14k|	  if (p->down)
  ------------------
  |  Branch (902:8): [True: 424, False: 718]
  ------------------
  903|    424|	    p = p->down;
  904|    718|	  else
  905|    718|	    move = RIGHT;
  ------------------
  |  |  130|    718|# define RIGHT  2
  ------------------
  906|  1.14k|	}
  907|       |
  908|  1.56k|      if (p == node)
  ------------------
  |  Branch (908:11): [True: 0, False: 1.56k]
  ------------------
  909|      0|	{
  910|      0|	  move = UP;
  ------------------
  |  |  129|      0|# define UP     1
  ------------------
  911|      0|	  continue;
  912|      0|	}
  913|       |
  914|  1.56k|      if (move == RIGHT)
  ------------------
  |  |  130|  1.56k|# define RIGHT  2
  ------------------
  |  Branch (914:11): [True: 1.13k, False: 424]
  ------------------
  915|  1.13k|	{
  916|  1.13k|	  if (p && p->right)
  ------------------
  |  Branch (916:8): [True: 1.13k, False: 0]
  |  Branch (916:13): [True: 714, False: 424]
  ------------------
  917|    714|	    p = p->right;
  918|    424|	  else
  919|    424|	    move = UP;
  ------------------
  |  |  129|    424|# define UP     1
  ------------------
  920|  1.13k|	}
  921|  1.56k|      if (move == UP)
  ------------------
  |  |  129|  1.56k|# define UP     1
  ------------------
  |  Branch (921:11): [True: 424, False: 1.13k]
  ------------------
  922|    424|	p = _asn1_find_up (p);
  923|  1.56k|    }
  924|       |
  925|      4|  return ASN1_SUCCESS;
  ------------------
  |  |  116|      4|# define ASN1_SUCCESS			0
  ------------------
  926|      4|}
_asn1_check_identifier:
 1014|      4|{
 1015|      4|  asn1_node_const p, p2;
 1016|      4|  char name2[ASN1_MAX_NAME_SIZE * 2 + 2];
 1017|       |
 1018|      4|  if (node == NULL)
  ------------------
  |  Branch (1018:7): [True: 0, False: 4]
  ------------------
 1019|      0|    return ASN1_ELEMENT_NOT_FOUND;
  ------------------
  |  |  118|      0|# define ASN1_ELEMENT_NOT_FOUND		2
  ------------------
 1020|       |
 1021|      4|  p = node;
 1022|  1.14k|  while (p)
  ------------------
  |  Branch (1022:10): [True: 1.14k, False: 4]
  ------------------
 1023|  1.14k|    {
 1024|  1.14k|      if (p->value && type_field (p->type) == ASN1_ETYPE_IDENTIFIER)
  ------------------
  |  |  216|    462|# define ASN1_ETYPE_IDENTIFIER     2
  ------------------
  |  Branch (1024:11): [True: 462, False: 680]
  |  Branch (1024:23): [True: 266, False: 196]
  ------------------
 1025|    266|	{
 1026|    266|	  _asn1_str_cpy (name2, sizeof (name2), node->name);
 1027|    266|	  _asn1_str_cat (name2, sizeof (name2), ".");
 1028|    266|	  _asn1_str_cat (name2, sizeof (name2), (char *) p->value);
 1029|    266|	  p2 = asn1_find_node (node, name2);
 1030|    266|	  if (p2 == NULL)
  ------------------
  |  Branch (1030:8): [True: 0, False: 266]
  ------------------
 1031|      0|	    {
 1032|      0|	      if (p->value)
  ------------------
  |  Branch (1032:12): [True: 0, False: 0]
  ------------------
 1033|      0|		_asn1_str_cpy (_asn1_identifierMissing,
 1034|      0|			       sizeof (_asn1_identifierMissing),
 1035|      0|			       (char *) p->value);
 1036|      0|	      else
 1037|      0|		_asn1_strcpy (_asn1_identifierMissing, "(null)");
  ------------------
  |  |  117|      0|# define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b)
  ------------------
 1038|      0|	      return ASN1_IDENTIFIER_NOT_FOUND;
  ------------------
  |  |  119|      0|# define ASN1_IDENTIFIER_NOT_FOUND	3
  ------------------
 1039|      0|	    }
 1040|    266|	}
 1041|    876|      else if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) &&
  ------------------
  |  |  226|    876|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (1041:16): [True: 68, False: 808]
  ------------------
 1042|    876|	       (p->type & CONST_DEFAULT))
  ------------------
  |  |  145|     68|# define CONST_DEFAULT     (1U<<15)
  ------------------
  |  Branch (1042:9): [True: 0, False: 68]
  ------------------
 1043|      0|	{
 1044|      0|	  p2 = p->down;
 1045|      0|	  if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT))
  ------------------
  |  |  223|      0|# define ASN1_ETYPE_DEFAULT        9
  ------------------
  |  Branch (1045:8): [True: 0, False: 0]
  |  Branch (1045:14): [True: 0, False: 0]
  ------------------
 1046|      0|	    {
 1047|      0|	      _asn1_str_cpy (name2, sizeof (name2), node->name);
 1048|      0|	      if (p2->value)
  ------------------
  |  Branch (1048:12): [True: 0, False: 0]
  ------------------
 1049|      0|		{
 1050|      0|		  _asn1_str_cat (name2, sizeof (name2), ".");
 1051|      0|		  _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
 1052|      0|		  _asn1_str_cpy (_asn1_identifierMissing,
 1053|      0|				 sizeof (_asn1_identifierMissing),
 1054|      0|				 (char *) p2->value);
 1055|      0|		}
 1056|      0|	      else
 1057|      0|		_asn1_strcpy (_asn1_identifierMissing, "(null)");
  ------------------
  |  |  117|      0|# define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b)
  ------------------
 1058|       |
 1059|      0|	      p2 = asn1_find_node (node, name2);
 1060|      0|	      if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID) ||
  ------------------
  |  |  226|      0|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (1060:12): [True: 0, False: 0]
  |  Branch (1060:19): [True: 0, False: 0]
  ------------------
 1061|      0|		  !(p2->type & CONST_ASSIGN))
  ------------------
  |  |  166|      0|# define CONST_ASSIGN      (1U<<28)
  ------------------
  |  Branch (1061:5): [True: 0, False: 0]
  ------------------
 1062|      0|		return ASN1_IDENTIFIER_NOT_FOUND;
  ------------------
  |  |  119|      0|# define ASN1_IDENTIFIER_NOT_FOUND	3
  ------------------
 1063|      0|	      else
 1064|      0|		_asn1_identifierMissing[0] = 0;
 1065|      0|	    }
 1066|      0|	}
 1067|    876|      else if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) &&
  ------------------
  |  |  226|    876|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (1067:16): [True: 68, False: 808]
  ------------------
 1068|    876|	       (p->type & CONST_ASSIGN))
  ------------------
  |  |  166|     68|# define CONST_ASSIGN      (1U<<28)
  ------------------
  |  Branch (1068:9): [True: 2, False: 66]
  ------------------
 1069|      2|	{
 1070|      2|	  p2 = p->down;
 1071|      2|	  if (p2 && (type_field (p2->type) == ASN1_ETYPE_CONSTANT))
  ------------------
  |  |  215|      2|# define ASN1_ETYPE_CONSTANT       1
  ------------------
  |  Branch (1071:8): [True: 2, False: 0]
  |  Branch (1071:14): [True: 2, False: 0]
  ------------------
 1072|      2|	    {
 1073|      2|	      if (p2->value && !c_isdigit (p2->value[0]))
  ------------------
  |  Branch (1073:12): [True: 2, False: 0]
  |  Branch (1073:25): [True: 0, False: 2]
  ------------------
 1074|      0|		{
 1075|      0|		  _asn1_str_cpy (name2, sizeof (name2), node->name);
 1076|      0|		  _asn1_str_cat (name2, sizeof (name2), ".");
 1077|      0|		  _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
 1078|      0|		  _asn1_str_cpy (_asn1_identifierMissing,
 1079|      0|				 sizeof (_asn1_identifierMissing),
 1080|      0|				 (char *) p2->value);
 1081|       |
 1082|      0|		  p2 = asn1_find_node (node, name2);
 1083|      0|		  if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID)
  ------------------
  |  |  226|      0|# define ASN1_ETYPE_OBJECT_ID     12
  ------------------
  |  Branch (1083:9): [True: 0, False: 0]
  |  Branch (1083:16): [True: 0, False: 0]
  ------------------
 1084|      0|		      || !(p2->type & CONST_ASSIGN))
  ------------------
  |  |  166|      0|# define CONST_ASSIGN      (1U<<28)
  ------------------
  |  Branch (1084:12): [True: 0, False: 0]
  ------------------
 1085|      0|		    return ASN1_IDENTIFIER_NOT_FOUND;
  ------------------
  |  |  119|      0|# define ASN1_IDENTIFIER_NOT_FOUND	3
  ------------------
 1086|      0|		  else
 1087|      0|		    _asn1_identifierMissing[0] = 0;
 1088|      0|		}
 1089|      2|	    }
 1090|      2|	}
 1091|       |
 1092|  1.14k|      if (p->down)
  ------------------
  |  Branch (1092:11): [True: 424, False: 718]
  ------------------
 1093|    424|	{
 1094|    424|	  p = p->down;
 1095|    424|	}
 1096|    718|      else if (p->right)
  ------------------
  |  Branch (1096:16): [True: 392, False: 326]
  ------------------
 1097|    392|	p = p->right;
 1098|    326|      else
 1099|    326|	{
 1100|    424|	  while (p)
  ------------------
  |  Branch (1100:11): [True: 424, False: 0]
  ------------------
 1101|    424|	    {
 1102|    424|	      p = _asn1_find_up (p);
 1103|    424|	      if (p == node)
  ------------------
  |  Branch (1103:12): [True: 4, False: 420]
  ------------------
 1104|      4|		{
 1105|      4|		  p = NULL;
 1106|      4|		  break;
 1107|      4|		}
 1108|    420|	      if (p && p->right)
  ------------------
  |  Branch (1108:12): [True: 420, False: 0]
  |  Branch (1108:17): [True: 322, False: 98]
  ------------------
 1109|    322|		{
 1110|    322|		  p = p->right;
 1111|    322|		  break;
 1112|    322|		}
 1113|    420|	    }
 1114|    326|	}
 1115|  1.14k|    }
 1116|       |
 1117|      4|  return ASN1_SUCCESS;
  ------------------
  |  |  116|      4|# define ASN1_SUCCESS			0
  ------------------
 1118|      4|}
parser_aux.c:_asn1_hash_name:
   44|  1.43k|{
   45|  1.43k|  const unsigned char *s = (unsigned char *) x;
   46|  1.43k|  unsigned h = 0;
   47|       |
   48|  17.9k|  while (*s)
  ------------------
  |  Branch (48:10): [True: 16.5k, False: 1.43k]
  ------------------
   49|  16.5k|    h = (*s++) + ((h << 9) | (h >> (WORD_BIT - 9)));
   50|       |
   51|  1.43k|  return h;
   52|  1.43k|}

structure.c:_asn1_set_down:
  112|    424|{
  113|    424|  if (node == NULL)
  ------------------
  |  Branch (113:7): [True: 0, False: 424]
  ------------------
  114|      0|    return node;
  115|    424|  node->down = down;
  116|    424|  if (down)
  ------------------
  |  Branch (116:7): [True: 424, False: 0]
  ------------------
  117|    424|    down->left = node;
  118|    424|  return node;
  119|    424|}

asn1_array2tree:
  179|      4|{
  180|      4|  asn1_node p, p_last = NULL;
  181|      4|  unsigned long k;
  182|      4|  int move;
  183|      4|  int result;
  184|      4|  unsigned int type;
  185|      4|  list_type *e_list = NULL;
  186|       |
  187|      4|  if (errorDescription)
  ------------------
  |  Branch (187:7): [True: 0, False: 4]
  ------------------
  188|      0|    errorDescription[0] = 0;
  189|       |
  190|      4|  if (*definitions != NULL)
  ------------------
  |  Branch (190:7): [True: 0, False: 4]
  ------------------
  191|      0|    return ASN1_ELEMENT_NOT_EMPTY;
  ------------------
  |  |  133|      0|# define ASN1_ELEMENT_NOT_EMPTY		17
  ------------------
  192|       |
  193|      4|  move = UP;
  ------------------
  |  |  129|      4|# define UP     1
  ------------------
  194|       |
  195|  1.14k|  for (k = 0; array[k].value || array[k].type || array[k].name; k++)
  ------------------
  |  Branch (195:15): [True: 462, False: 684]
  |  Branch (195:33): [True: 680, False: 4]
  |  Branch (195:50): [True: 0, False: 4]
  ------------------
  196|  1.14k|    {
  197|  1.14k|      type = convert_old_type (array[k].type);
  198|       |
  199|  1.14k|      p = _asn1_add_static_node (&e_list, type & (~CONST_DOWN));
  ------------------
  |  |  168|  1.14k|# define CONST_DOWN        (1U<<29)
  ------------------
  200|  1.14k|      if (array[k].name)
  ------------------
  |  Branch (200:11): [True: 898, False: 244]
  ------------------
  201|    898|	_asn1_set_name (p, array[k].name);
  202|  1.14k|      if (array[k].value)
  ------------------
  |  Branch (202:11): [True: 462, False: 680]
  ------------------
  203|    462|	_asn1_set_value (p, array[k].value, strlen (array[k].value) + 1);
  204|       |
  205|  1.14k|      if (*definitions == NULL)
  ------------------
  |  Branch (205:11): [True: 4, False: 1.13k]
  ------------------
  206|      4|	*definitions = p;
  207|       |
  208|  1.14k|      if (move == DOWN)
  ------------------
  |  |  131|  1.14k|# define DOWN   3
  ------------------
  |  Branch (208:11): [True: 424, False: 718]
  ------------------
  209|    424|	{
  210|    424|	  if (p_last && p_last->down)
  ------------------
  |  Branch (210:8): [True: 424, False: 0]
  |  Branch (210:18): [True: 0, False: 424]
  ------------------
  211|      0|	    _asn1_delete_structure (e_list, &p_last->down, 0);
  212|    424|	  _asn1_set_down (p_last, p);
  213|    424|	}
  214|    718|      else if (move == RIGHT)
  ------------------
  |  |  130|    718|# define RIGHT  2
  ------------------
  |  Branch (214:16): [True: 714, False: 4]
  ------------------
  215|    714|	{
  216|    714|	  if (p_last && p_last->right)
  ------------------
  |  Branch (216:8): [True: 714, False: 0]
  |  Branch (216:18): [True: 0, False: 714]
  ------------------
  217|      0|	    _asn1_delete_structure (e_list, &p_last->right, 0);
  218|    714|	  _asn1_set_right (p_last, p);
  219|    714|	}
  220|       |
  221|  1.14k|      p_last = p;
  222|       |
  223|  1.14k|      if (type & CONST_DOWN)
  ------------------
  |  |  168|  1.14k|# define CONST_DOWN        (1U<<29)
  ------------------
  |  Branch (223:11): [True: 424, False: 718]
  ------------------
  224|    424|	move = DOWN;
  ------------------
  |  |  131|    424|# define DOWN   3
  ------------------
  225|    718|      else if (type & CONST_RIGHT)
  ------------------
  |  |  169|    718|# define CONST_RIGHT       (1U<<30)
  ------------------
  |  Branch (225:16): [True: 392, False: 326]
  ------------------
  226|    392|	move = RIGHT;
  ------------------
  |  |  130|    392|# define RIGHT  2
  ------------------
  227|    326|      else
  228|    326|	{
  229|    428|	  while (p_last != *definitions)
  ------------------
  |  Branch (229:11): [True: 424, False: 4]
  ------------------
  230|    424|	    {
  231|    424|	      p_last = _asn1_find_up (p_last);
  232|       |
  233|    424|	      if (p_last == NULL)
  ------------------
  |  Branch (233:12): [True: 0, False: 424]
  ------------------
  234|      0|		break;
  235|       |
  236|    424|	      if (p_last->type & CONST_RIGHT)
  ------------------
  |  |  169|    424|# define CONST_RIGHT       (1U<<30)
  ------------------
  |  Branch (236:12): [True: 322, False: 102]
  ------------------
  237|    322|		{
  238|    322|		  p_last->type &= ~CONST_RIGHT;
  ------------------
  |  |  169|    322|# define CONST_RIGHT       (1U<<30)
  ------------------
  239|    322|		  move = RIGHT;
  ------------------
  |  |  130|    322|# define RIGHT  2
  ------------------
  240|    322|		  break;
  241|    322|		}
  242|    424|	    }			/* while */
  243|    326|	}
  244|  1.14k|    }				/* while */
  245|       |
  246|      4|  if (p_last == *definitions)
  ------------------
  |  Branch (246:7): [True: 4, False: 0]
  ------------------
  247|      4|    {
  248|      4|      result = _asn1_check_identifier (*definitions);
  249|      4|      if (result == ASN1_SUCCESS)
  ------------------
  |  |  116|      4|# define ASN1_SUCCESS			0
  ------------------
  |  Branch (249:11): [True: 4, False: 0]
  ------------------
  250|      4|	{
  251|      4|	  _asn1_change_integer_value (*definitions);
  252|      4|	  result = _asn1_expand_object_id (&e_list, *definitions);
  253|      4|	}
  254|      4|    }
  255|      0|  else
  256|      0|    {
  257|      0|      result = ASN1_ARRAY_ERROR;
  ------------------
  |  |  132|      0|# define ASN1_ARRAY_ERROR		16
  ------------------
  258|      0|    }
  259|       |
  260|      4|  if (errorDescription != NULL)
  ------------------
  |  Branch (260:7): [True: 0, False: 4]
  ------------------
  261|      0|    {
  262|      0|      if (result == ASN1_IDENTIFIER_NOT_FOUND)
  ------------------
  |  |  119|      0|# define ASN1_IDENTIFIER_NOT_FOUND	3
  ------------------
  |  Branch (262:11): [True: 0, False: 0]
  ------------------
  263|      0|	{
  264|      0|	  Estrcpy (errorDescription, ":: identifier '");
  ------------------
  |  |   29|      0|# define Estrcpy(x,y) _asn1_str_cpy(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y)
  |  |  ------------------
  |  |  |  |  315|      0|# define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128
  |  |  ------------------
  ------------------
  265|      0|	  Estrcat (errorDescription, _asn1_identifierMissing);
  ------------------
  |  |   30|      0|# define Estrcat(x,y) _asn1_str_cat(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y)
  |  |  ------------------
  |  |  |  |  315|      0|# define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128
  |  |  ------------------
  ------------------
  266|      0|	  Estrcat (errorDescription, "' not found");
  ------------------
  |  |   30|      0|# define Estrcat(x,y) _asn1_str_cat(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y)
  |  |  ------------------
  |  |  |  |  315|      0|# define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128
  |  |  ------------------
  ------------------
  267|      0|	}
  268|      0|      else
  269|      0|	errorDescription[0] = 0;
  270|      0|    }
  271|       |
  272|      4|  if (result != ASN1_SUCCESS)
  ------------------
  |  |  116|      4|# define ASN1_SUCCESS			0
  ------------------
  |  Branch (272:7): [True: 0, False: 4]
  ------------------
  273|      0|    {
  274|      0|      _asn1_delete_list_and_nodes (e_list);
  275|      0|      *definitions = NULL;
  276|      0|    }
  277|      4|  else
  278|      4|    _asn1_delete_list (e_list);
  279|       |
  280|      4|  return result;
  281|      4|}

asn1_check_version:
   46|      2|{
   47|      2|  if (!req_version || strverscmp (req_version, ASN1_VERSION) <= 0)
  ------------------
  |  |   71|      2|# define ASN1_VERSION "4.19.0"
  ------------------
  |  Branch (47:7): [True: 0, False: 2]
  |  Branch (47:23): [True: 2, False: 0]
  ------------------
   48|      2|    return ASN1_VERSION;
  ------------------
  |  |   71|      2|# define ASN1_VERSION "4.19.0"
  ------------------
   49|       |
   50|      0|  return NULL;
   51|      2|}

gnutls_crypto_init:
   41|      2|{
   42|      2|	void *(*defallocfunc)(size_t);
   43|      2|	void *(*defreallocfunc)(void *, size_t, size_t);
   44|      2|	void (*deffreefunc)(void *, size_t);
   45|       |
   46|       |	/* Check if non-default allocators are being used.
   47|       |	 * Some applications like guile override GMP allocators
   48|       |	 * with GC capable alternatives. Do nothing if this is
   49|       |	 * the case.
   50|       |	 */
   51|      2|	mp_get_memory_functions(&allocfunc, &reallocfunc, &freefunc);
   52|      2|	mp_set_memory_functions(NULL, NULL, NULL);
   53|      2|	mp_get_memory_functions(&defallocfunc, &defreallocfunc, &deffreefunc);
   54|      2|	if (reallocfunc != defreallocfunc || freefunc != deffreefunc) {
  ------------------
  |  Branch (54:6): [True: 0, False: 2]
  |  Branch (54:39): [True: 0, False: 2]
  ------------------
   55|      0|		mp_set_memory_functions(allocfunc, reallocfunc, freefunc);
   56|      0|		return (0);
   57|      0|	}
   58|       |
   59|       |	/* Overload GMP allocators with safe alternatives */
   60|      2|	mp_set_memory_functions(NULL, gnutls_realloc_zero, gnutls_free_zero);
   61|      2|	return 0;
   62|      2|}

_rnd_system_entropy_init:
  161|      2|{
  162|      2|	int urandom_fd;
  163|       |
  164|      2|#if defined(__linux__)
  165|       |	/* Enable getrandom() usage if available */
  166|      2|	if (have_getrandom()) {
  ------------------
  |  Branch (166:6): [True: 2, False: 0]
  ------------------
  167|      2|		_rnd_get_system_entropy = _rnd_get_system_entropy_getrandom;
  168|      2|		_gnutls_debug_log("getrandom random generator was selected\n");
  ------------------
  |  |  139|      2|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      2|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      2|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      2|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  169|      2|		return 0;
  170|      2|	} else {
  171|      0|		_gnutls_debug_log("getrandom is not available\n");
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  172|      0|	}
  173|      0|#endif
  174|       |
  175|       |	/* Fallback: /dev/urandom */
  176|       |
  177|       |	/* Check that we can open it */
  178|      0|	urandom_fd = open("/dev/urandom", O_RDONLY);
  179|      0|	if (urandom_fd < 0) {
  ------------------
  |  Branch (179:6): [True: 0, False: 0]
  ------------------
  180|      0|		_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  181|      0|		    ("Cannot open /dev/urandom during initialization!\n");
  182|      0|		return gnutls_assert_val(GNUTLS_E_RANDOM_DEVICE_ERROR);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
  183|      0|	}
  184|      0|	close(urandom_fd);
  185|       |
  186|      0|	_rnd_get_system_entropy = _rnd_get_system_entropy_urandom;
  187|      0|	_gnutls_debug_log("/dev/urandom random generator was selected\n");
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|       |
  189|      0|	return 0;
  190|      0|}
sysrng-linux.c:have_getrandom:
   71|      2|{
   72|      2|	char c;
   73|      2|	int ret;
   74|      2|	ret = getrandom(&c, 1, 1 /*GRND_NONBLOCK */ );
   75|      2|	if (ret == 1 || (ret == -1 && errno == EAGAIN))
  ------------------
  |  Branch (75:6): [True: 2, False: 0]
  |  Branch (75:19): [True: 0, False: 0]
  |  Branch (75:32): [True: 0, False: 0]
  ------------------
   76|      2|		return 1;
   77|      0|	return 0;
   78|      2|}

_gnutls_prepare_to_load_system_priorities:
 2425|      2|{
 2426|      2|	const char *p;
 2427|      2|	int ret;
 2428|       |
 2429|      2|	p = secure_getenv("GNUTLS_SYSTEM_PRIORITY_FILE");
 2430|      2|	if (p != NULL)
  ------------------
  |  Branch (2430:6): [True: 0, False: 2]
  ------------------
 2431|      0|		system_priority_file = p;
 2432|       |
 2433|      2|	p = secure_getenv("GNUTLS_SYSTEM_PRIORITY_FAIL_ON_INVALID");
 2434|      2|	if (p != NULL && p[0] == '1' && p[1] == 0)
  ------------------
  |  Branch (2434:6): [True: 0, False: 2]
  |  Branch (2434:19): [True: 0, False: 0]
  |  Branch (2434:34): [True: 0, False: 0]
  ------------------
 2435|      0|		fail_on_invalid_config = 1;
 2436|       |
 2437|      2|	ret = _gnutls_update_system_priorities(true /* defer_system_wide */ );
 2438|      2|	if (ret < 0) {
  ------------------
  |  Branch (2438:6): [True: 0, False: 2]
  ------------------
 2439|      0|		_gnutls_debug_log("failed to update system priorities: %s\n",
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2440|      0|				  gnutls_strerror(ret));
 2441|      0|	}
 2442|      2|}
priority.c:_gnutls_update_system_priorities:
 2302|      2|{
 2303|      2|	int ret, err = 0;
 2304|      2|	struct stat sb;
 2305|      2|	FILE *fp;
 2306|      2|	gnutls_buffer_st buf;
 2307|      2|	struct ini_ctx ctx;
 2308|       |
 2309|      2|	ret = gnutls_rwlock_rdlock(&system_wide_config_rwlock);
  ------------------
  |  |   60|      2|	(unlikely(glthread_rwlock_rdlock(RWLOCK)) ?	\
  |  |  ------------------
  |  |  |  |   73|      6|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  Branch (73:44): [True: 2, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   61|      2|	gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0)
  |  |  ------------------
  |  |  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  |  |  ------------------
  ------------------
 2310|      2|	if (ret < 0) {
  ------------------
  |  Branch (2310:6): [True: 0, False: 2]
  ------------------
 2311|      0|		return gnutls_assert_val(ret);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
 2312|      0|	}
 2313|       |
 2314|      2|	if (stat(system_priority_file, &sb) < 0) {
  ------------------
  |  Branch (2314:6): [True: 2, False: 0]
  ------------------
 2315|      2|		_gnutls_debug_log("cfg: unable to access: %s: %d\n",
  ------------------
  |  |  139|      2|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      2|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      2|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      2|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2316|      2|				  system_priority_file, errno);
 2317|      2|		goto out;
 2318|      2|	}
 2319|       |
 2320|      0|	if (system_priority_file_loaded &&
  ------------------
  |  Branch (2320:6): [True: 0, False: 0]
  ------------------
 2321|      0|	    system_priority_last_mod == sb.st_mtime) {
  ------------------
  |  Branch (2321:6): [True: 0, False: 0]
  ------------------
 2322|      0|		_gnutls_debug_log("cfg: system priority %s has not changed\n",
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2323|      0|				  system_priority_file);
 2324|      0|		if (system_wide_config.priority_string) {
  ------------------
  |  Branch (2324:7): [True: 0, False: 0]
  ------------------
 2325|      0|			goto out;	/* nothing to do */
 2326|      0|		}
 2327|      0|	}
 2328|       |
 2329|      0|	(void)gnutls_rwlock_unlock(&system_wide_config_rwlock);
  ------------------
  |  |   68|      0|	(unlikely(glthread_rwlock_unlock(RWLOCK)) ?	\
  |  |  ------------------
  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      0|	gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0)
  |  |  ------------------
  |  |  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  |  |  ------------------
  ------------------
 2330|       |
 2331|      0|	ret = gnutls_rwlock_wrlock(&system_wide_config_rwlock);
  ------------------
  |  |   64|      0|	(unlikely(glthread_rwlock_wrlock(RWLOCK)) ?	\
  |  |  ------------------
  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   65|      0|	gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0)
  |  |  ------------------
  |  |  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  |  |  ------------------
  ------------------
 2332|      0|	if (ret < 0) {
  ------------------
  |  Branch (2332:6): [True: 0, False: 0]
  ------------------
 2333|      0|		return gnutls_assert_val(ret);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
 2334|      0|	}
 2335|       |
 2336|       |	/* Another thread could have successfully re-read system-wide config,
 2337|       |	 * skip re-reading if the mtime it has used is exactly the same.
 2338|       |	 */
 2339|      0|	if (system_priority_file_loaded) {
  ------------------
  |  Branch (2339:6): [True: 0, False: 0]
  ------------------
 2340|      0|		system_priority_file_loaded =
 2341|      0|		    (system_priority_last_mod == sb.st_mtime);
 2342|      0|	}
 2343|       |
 2344|      0|	if (!system_priority_file_loaded) {
  ------------------
  |  Branch (2344:6): [True: 0, False: 0]
  ------------------
 2345|      0|		_name_val_array_clear(&system_wide_config.priority_strings);
 2346|       |
 2347|      0|		gnutls_free(system_wide_config.priority_string);
  ------------------
  |  | 2296|      0|#  define gnutls_free(a) gnutls_free((void *) (a)), a=NULL
  ------------------
 2348|      0|		system_wide_config.priority_string = NULL;
 2349|       |
 2350|      0|		fp = fopen(system_priority_file, "re");
 2351|      0|		if (fp == NULL) {
  ------------------
  |  Branch (2351:7): [True: 0, False: 0]
  ------------------
 2352|      0|			_gnutls_debug_log("cfg: unable to open: %s: %d\n",
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2353|      0|					  system_priority_file, errno);
 2354|      0|			goto out;
 2355|      0|		}
 2356|       |		/* Parsing the configuration file needs to be done in 2 phases:
 2357|       |		 * first parsing the [global] section
 2358|       |		 * and then the other sections,
 2359|       |		 * because the [global] section modifies the parsing behavior.
 2360|       |		 */
 2361|      0|		memset(&ctx, 0, sizeof(ctx));
 2362|      0|		err = ini_parse_file(fp, global_ini_handler, &ctx);
 2363|      0|		if (!err) {
  ------------------
  |  Branch (2363:7): [True: 0, False: 0]
  ------------------
 2364|      0|			if (fseek(fp, 0L, SEEK_SET) < 0) {
  ------------------
  |  Branch (2364:8): [True: 0, False: 0]
  ------------------
 2365|      0|				_gnutls_debug_log("cfg: unable to rewind: %s\n",
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2366|      0|						  system_priority_file);
 2367|      0|				if (fail_on_invalid_config)
  ------------------
  |  Branch (2367:9): [True: 0, False: 0]
  ------------------
 2368|      0|					exit(1);
 2369|      0|			}
 2370|      0|			err = ini_parse_file(fp, cfg_ini_handler, &ctx);
 2371|      0|		}
 2372|      0|		fclose(fp);
 2373|      0|		if (err) {
  ------------------
  |  Branch (2373:7): [True: 0, False: 0]
  ------------------
 2374|      0|			ini_ctx_deinit(&ctx);
 2375|      0|			_gnutls_debug_log("cfg: unable to parse: %s: %d\n",
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2376|      0|					  system_priority_file, err);
 2377|      0|			goto out;
 2378|      0|		}
 2379|      0|		cfg_apply(&system_wide_config, &ctx);
 2380|      0|		ini_ctx_deinit(&ctx);
 2381|      0|		_gnutls_debug_log("cfg: loaded system config %s mtime %lld\n",
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2382|      0|				  system_priority_file,
 2383|      0|				  (unsigned long long)sb.st_mtime);
 2384|       |
 2385|      0|	}
 2386|       |
 2387|      0|	if (system_wide_config.allowlisting) {
  ------------------
  |  Branch (2387:6): [True: 0, False: 0]
  ------------------
 2388|      0|		if (defer_system_wide) {
  ------------------
  |  Branch (2388:7): [True: 0, False: 0]
  ------------------
 2389|       |			/* try constructing a priority string,
 2390|       |			 * but don't apply it yet, at this point
 2391|       |			 * we're only interested in whether we can */
 2392|      0|			ret = construct_system_wide_priority_string(&buf);
 2393|      0|			_gnutls_buffer_clear(&buf);
 2394|      0|			_gnutls_debug_log("cfg: deferred setting "
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2395|      0|					  "system-wide priority string\n");
 2396|      0|		} else {
 2397|      0|			ret = update_system_wide_priority_string();
 2398|      0|			_gnutls_debug_log("cfg: finalized "
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2399|      0|					  "system-wide priority string\n");
 2400|      0|		}
 2401|      0|		if (ret < 0) {
  ------------------
  |  Branch (2401:7): [True: 0, False: 0]
  ------------------
 2402|      0|			_gnutls_debug_log
  ------------------
  |  |  139|      0|#  define _gnutls_debug_log(...) LEVEL(2, __VA_ARGS__)
  |  |  ------------------
  |  |  |  |  136|      0|#  define LEVEL(l, ...) do { if (unlikely(_gnutls_log_level >= l)) \
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|      0|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (73:26): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  137|      0|      _gnutls_log( l, __VA_ARGS__); } while(0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (137:45): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2403|      0|			    ("cfg: unable to build priority string: %s\n",
 2404|      0|			     gnutls_strerror(ret));
 2405|      0|			if (fail_on_invalid_config)
  ------------------
  |  Branch (2405:8): [True: 0, False: 0]
  ------------------
 2406|      0|				exit(1);
 2407|      0|			goto out;
 2408|      0|		}
 2409|      0|	}
 2410|       |
 2411|      0|	system_priority_file_loaded = 1;
 2412|      0|	system_priority_last_mod = sb.st_mtime;
 2413|       |
 2414|      2| out:
 2415|      2|	(void)gnutls_rwlock_unlock(&system_wide_config_rwlock);
  ------------------
  |  |   68|      2|	(unlikely(glthread_rwlock_unlock(RWLOCK)) ?	\
  |  |  ------------------
  |  |  |  |   73|      6|#  define unlikely(x)    __builtin_expect((x), 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (73:26): [True: 0, False: 2]
  |  |  |  |  |  Branch (73:44): [True: 2, False: 0]
  |  |  |  |  |  Branch (73:44): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   69|      2|	gnutls_assert_val(GNUTLS_E_LOCKING_ERROR) : 0)
  |  |  ------------------
  |  |  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  |  |  ------------------
  ------------------
 2416|       |
 2417|      2|	if (err && fail_on_invalid_config) {
  ------------------
  |  Branch (2417:6): [True: 0, False: 2]
  |  Branch (2417:13): [True: 0, False: 0]
  ------------------
 2418|      0|		exit(1);
 2419|      0|	}
 2420|       |
 2421|      2|	return ret;
 2422|      2|}

_gnutls_rnd_preinit:
  106|      2|{
  107|      2|	int ret;
  108|       |
  109|       |#if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
  110|       |# warning Insecure PRNG is enabled
  111|       |	ret = gnutls_crypto_rnd_register(100, &_gnutls_fuzz_rnd_ops);
  112|       |	if (ret < 0)
  113|       |		return ret;
  114|       |
  115|       |#elif defined(ENABLE_FIPS140)
  116|       |	/* The FIPS140 random generator is only enabled when we are compiled
  117|       |	 * with FIPS support, _and_ the system is in FIPS installed state.
  118|       |	 */
  119|       |	if (_gnutls_fips_mode_enabled()) {
  120|       |		ret = gnutls_crypto_rnd_register(100, &_gnutls_fips_rnd_ops);
  121|       |		if (ret < 0)
  122|       |			return ret;
  123|       |	}
  124|       |#endif
  125|       |
  126|      2|	ret = _rnd_system_entropy_init();
  127|      2|	if (ret < 0)
  ------------------
  |  Branch (127:6): [True: 0, False: 2]
  ------------------
  128|      0|		return gnutls_assert_val(GNUTLS_E_RANDOM_FAILED);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
  129|       |
  130|      2|	ret = glthread_tls_key_init(&ctx_key, delete_ctx);
  ------------------
  |  |  135|      2|    (pthread_in_use ()                              \
  |  |  ------------------
  |  |  |  |  115|      2|      (pthread_mutexattr_gettype != NULL || c11_threads_in_use ())
  |  |  |  |  ------------------
  |  |  |  |  |  |   89|      0|#  define c11_threads_in_use() (thrd_exit != NULL)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (89:32): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (115:8): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  136|      2|     ? pthread_key_create (&(KEY)->key, DESTRUCTOR) \
  |  |  137|      2|     : ((KEY)->singlethread_value = NULL, 0))
  ------------------
  131|      2|	if (ret)
  ------------------
  |  Branch (131:6): [True: 0, False: 2]
  ------------------
  132|      0|		return gnutls_assert_val(GNUTLS_E_RANDOM_FAILED);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
  133|       |
  134|      2|	list =
  135|      2|	    gl_list_nx_create_empty(GL_LINKEDHASH_LIST, NULL, NULL, free_ctx,
  ------------------
  |  |   28|      2|#define GL_LINKEDHASH_LIST &gl_linkedhash_list_implementation
  ------------------
  136|      2|				    false);
  137|      2|	if (list == NULL)
  ------------------
  |  Branch (137:6): [True: 0, False: 2]
  ------------------
  138|      0|		return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
  ------------------
  |  |  183|      0|# define gnutls_assert_val(x) gnutls_assert_val_int(x, __FILE__, __func__, __LINE__)
  ------------------
  139|       |
  140|      2|	return 0;
  141|      2|}

gnutls_system_global_init:
   69|      2|{
   70|       |#if defined(_WIN32) && defined(NEED_CERT_ENUM_CRLS)
   71|       |	/* used in system/certs.c */
   72|       |	HMODULE crypto;
   73|       |	crypto = LoadLibrary(TEXT("Crypt32.dll"));
   74|       |
   75|       |	if (crypto == NULL)
   76|       |		return GNUTLS_E_CRYPTO_INIT_FAILED;
   77|       |
   78|       |	pCertEnumCRLsInStore =
   79|       |	    (CertEnumCRLsInStoreFunc) GetProcAddress(crypto,
   80|       |						     "CertEnumCRLsInStore");
   81|       |	if (pCertEnumCRLsInStore == NULL) {
   82|       |		FreeLibrary(crypto);
   83|       |		return GNUTLS_E_CRYPTO_INIT_FAILED;
   84|       |	}
   85|       |
   86|       |	Crypt32_dll = crypto;
   87|       |#endif
   88|      2|	gnutls_time = time;
   89|      2|	gnutls_gettime = _gnutls_gettime;
   90|      2|	return 0;
   91|      2|}

_gnutls_system_key_init:
   70|      2|{
   71|      2|	return 0;
   72|      2|}

fat-x86_64.c:fat_init:
  177|      2|{
  178|      2|  struct x86_features features;
  179|      2|  int verbose;
  180|       |
  181|       |  /* FIXME: Replace all getenv calls by getenv_secure? */
  182|      2|  verbose = getenv (ENV_VERBOSE) != NULL;
  ------------------
  |  |   93|      2|#define ENV_VERBOSE "NETTLE_FAT_VERBOSE"
  ------------------
  183|      2|  if (verbose)
  ------------------
  |  Branch (183:7): [True: 0, False: 2]
  ------------------
  184|      0|    fprintf (stderr, "libnettle: fat library initialization.\n");
  185|       |
  186|      2|  get_x86_features (&features);
  187|      2|  if (verbose)
  ------------------
  |  Branch (187:7): [True: 0, False: 2]
  ------------------
  188|      0|    {
  189|      0|      const char * const vendor_names[3] =
  190|      0|	{ "other", "intel", "amd" };
  191|      0|      fprintf (stderr, "libnettle: cpu features: vendor:%s%s%s%s\n",
  192|      0|	       vendor_names[features.vendor],
  193|      0|	       features.have_aesni ? ",aesni" : "",
  ------------------
  |  Branch (193:9): [True: 0, False: 0]
  ------------------
  194|      0|	       features.have_sha_ni ? ",sha_ni" : "",
  ------------------
  |  Branch (194:9): [True: 0, False: 0]
  ------------------
  195|      0|	       features.have_pclmul ? ",pclmul" : "");
  ------------------
  |  Branch (195:9): [True: 0, False: 0]
  ------------------
  196|      0|    }
  197|      2|  if (features.have_aesni)
  ------------------
  |  Branch (197:7): [True: 2, False: 0]
  ------------------
  198|      2|    {
  199|      2|      if (verbose)
  ------------------
  |  Branch (199:11): [True: 0, False: 2]
  ------------------
  200|      0|	fprintf (stderr, "libnettle: using aes instructions.\n");
  201|      2|      nettle_aes128_encrypt_vec = _nettle_aes128_encrypt_aesni;
  202|      2|      nettle_aes128_decrypt_vec = _nettle_aes128_decrypt_aesni;
  203|      2|      nettle_aes192_encrypt_vec = _nettle_aes192_encrypt_aesni;
  204|      2|      nettle_aes192_decrypt_vec = _nettle_aes192_decrypt_aesni;
  205|      2|      nettle_aes256_encrypt_vec = _nettle_aes256_encrypt_aesni;
  206|      2|      nettle_aes256_decrypt_vec = _nettle_aes256_decrypt_aesni;
  207|      2|      nettle_cbc_aes128_encrypt_vec = _nettle_cbc_aes128_encrypt_aesni;
  208|      2|      nettle_cbc_aes192_encrypt_vec = _nettle_cbc_aes192_encrypt_aesni;
  209|      2|      nettle_cbc_aes256_encrypt_vec = _nettle_cbc_aes256_encrypt_aesni;
  210|      2|    }
  211|      0|  else
  212|      0|    {
  213|      0|      if (verbose)
  ------------------
  |  Branch (213:11): [True: 0, False: 0]
  ------------------
  214|      0|	fprintf (stderr, "libnettle: not using aes instructions.\n");
  215|      0|      nettle_aes128_encrypt_vec = _nettle_aes128_encrypt_c;
  216|      0|      nettle_aes128_decrypt_vec = _nettle_aes128_decrypt_c;
  217|      0|      nettle_aes192_encrypt_vec = _nettle_aes192_encrypt_c;
  218|      0|      nettle_aes192_decrypt_vec = _nettle_aes192_decrypt_c;
  219|      0|      nettle_aes256_encrypt_vec = _nettle_aes256_encrypt_c;
  220|      0|      nettle_aes256_decrypt_vec = _nettle_aes256_decrypt_c;
  221|      0|      nettle_cbc_aes128_encrypt_vec = _nettle_cbc_aes128_encrypt_c;
  222|      0|      nettle_cbc_aes192_encrypt_vec = _nettle_cbc_aes192_encrypt_c;
  223|      0|      nettle_cbc_aes256_encrypt_vec = _nettle_cbc_aes256_encrypt_c;
  224|      0|    }
  225|       |
  226|      2|  if (features.have_sha_ni)
  ------------------
  |  Branch (226:7): [True: 2, False: 0]
  ------------------
  227|      2|    {
  228|      2|      if (verbose)
  ------------------
  |  Branch (228:11): [True: 0, False: 2]
  ------------------
  229|      0|	fprintf (stderr, "libnettle: using sha_ni instructions.\n");
  230|      2|      nettle_sha1_compress_vec = _nettle_sha1_compress_sha_ni;
  231|      2|      _nettle_sha256_compress_n_vec = _nettle_sha256_compress_n_sha_ni;
  232|      2|    }
  233|      0|  else
  234|      0|    {
  235|      0|      if (verbose)
  ------------------
  |  Branch (235:11): [True: 0, False: 0]
  ------------------
  236|      0|	fprintf (stderr, "libnettle: not using sha_ni instructions.\n");
  237|      0|      nettle_sha1_compress_vec = _nettle_sha1_compress_x86_64;
  238|      0|      _nettle_sha256_compress_n_vec = _nettle_sha256_compress_n_x86_64;
  239|      0|    }
  240|       |
  241|      2|  if (features.have_pclmul)
  ------------------
  |  Branch (241:7): [True: 2, False: 0]
  ------------------
  242|      2|    {
  243|      2|      if (verbose)
  ------------------
  |  Branch (243:11): [True: 0, False: 2]
  ------------------
  244|      0|	fprintf (stderr, "libnettle: using pclmulqdq instructions.\n");
  245|      2|      _nettle_ghash_set_key_vec = _nettle_ghash_set_key_pclmul;
  246|      2|      _nettle_ghash_update_vec = _nettle_ghash_update_pclmul;
  247|      2|    }
  248|      0|  else
  249|      0|    {
  250|      0|      if (verbose)
  ------------------
  |  Branch (250:11): [True: 0, False: 0]
  ------------------
  251|      0|	fprintf (stderr, "libnettle: not using pclmulqdq instructions.\n");
  252|      0|      _nettle_ghash_set_key_vec = _nettle_ghash_set_key_c;
  253|      0|      _nettle_ghash_update_vec = _nettle_ghash_update_table;
  254|      0|    }
  255|       |
  256|      2|  if (features.vendor == X86_INTEL)
  ------------------
  |  Branch (256:7): [True: 0, False: 2]
  ------------------
  257|      0|    {
  258|      0|      if (verbose)
  ------------------
  |  Branch (258:11): [True: 0, False: 0]
  ------------------
  259|      0|	fprintf (stderr, "libnettle: intel SSE2 will be used for memxor.\n");
  260|      0|      nettle_memxor_vec = _nettle_memxor_sse2;
  261|      0|    }
  262|      2|  else
  263|      2|    {
  264|      2|      if (verbose)
  ------------------
  |  Branch (264:11): [True: 0, False: 2]
  ------------------
  265|      0|	fprintf (stderr, "libnettle: intel SSE2 will not be used for memxor.\n");
  266|      2|      nettle_memxor_vec = _nettle_memxor_x86_64;
  267|      2|    }
  268|      2|}
fat-x86_64.c:get_x86_features:
   68|      2|{
   69|      2|  const char *s;
   70|      2|  features->vendor = X86_OTHER;
   71|      2|  features->have_aesni = 0;
   72|      2|  features->have_sha_ni = 0;
   73|      2|  features->have_pclmul = 0;
   74|       |
   75|      2|  s = secure_getenv (ENV_OVERRIDE);
  ------------------
  |  |   94|      2|#define ENV_OVERRIDE "NETTLE_FAT_OVERRIDE"
  ------------------
   76|      2|  if (s)
  ------------------
  |  Branch (76:7): [True: 0, False: 2]
  ------------------
   77|      0|    for (;;)
   78|      0|      {
   79|      0|	const char *sep = strchr (s, ',');
   80|      0|	size_t length = sep ? (size_t) (sep - s) : strlen(s);
  ------------------
  |  Branch (80:18): [True: 0, False: 0]
  ------------------
   81|       |
   82|      0|	if (SKIP (s, length, "vendor:", 7))
  ------------------
  |  |   61|      0|  (((slen) >= (llen) && memcmp ((s), (literal), llen) == 0)	\
  |  |  ------------------
  |  |  |  Branch (61:3): [True: 0, False: 0]
  |  |  |  Branch (61:5): [True: 0, False: 0]
  |  |  |  Branch (61:25): [True: 0, False: 0]
  |  |  ------------------
  |  |   62|      0|   ? ((slen) -= (llen), (s) += (llen), 1) : 0)
  ------------------
   83|      0|	  {
   84|      0|	    if (MATCH(s, length, "intel", 5))
  ------------------
  |  |   64|      0|  ((slen) == (llen) && memcmp ((s), (literal), llen) == 0)
  |  |  ------------------
  |  |  |  Branch (64:4): [True: 0, False: 0]
  |  |  |  Branch (64:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   85|      0|	      features->vendor = X86_INTEL;
   86|      0|	    else if (MATCH(s, length, "amd", 3))
  ------------------
  |  |   64|      0|  ((slen) == (llen) && memcmp ((s), (literal), llen) == 0)
  |  |  ------------------
  |  |  |  Branch (64:4): [True: 0, False: 0]
  |  |  |  Branch (64:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   87|      0|	      features->vendor = X86_AMD;
   88|       |	    
   89|      0|	  }
   90|      0|	else if (MATCH (s, length, "aesni", 5))
  ------------------
  |  |   64|      0|  ((slen) == (llen) && memcmp ((s), (literal), llen) == 0)
  |  |  ------------------
  |  |  |  Branch (64:4): [True: 0, False: 0]
  |  |  |  Branch (64:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   91|      0|	  features->have_aesni = 1;
   92|      0|	else if (MATCH (s, length, "sha_ni", 6))
  ------------------
  |  |   64|      0|  ((slen) == (llen) && memcmp ((s), (literal), llen) == 0)
  |  |  ------------------
  |  |  |  Branch (64:4): [True: 0, False: 0]
  |  |  |  Branch (64:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   93|      0|	  features->have_sha_ni = 1;
   94|      0|	else if (MATCH (s, length, "pclmul", 6))
  ------------------
  |  |   64|      0|  ((slen) == (llen) && memcmp ((s), (literal), llen) == 0)
  |  |  ------------------
  |  |  |  Branch (64:4): [True: 0, False: 0]
  |  |  |  Branch (64:24): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   95|      0|	  features->have_pclmul = 1;
   96|      0|	if (!sep)
  ------------------
  |  Branch (96:6): [True: 0, False: 0]
  ------------------
   97|      0|	  break;
   98|      0|	s = sep + 1;
   99|      0|      }
  100|      2|  else
  101|      2|    {
  102|      2|      uint32_t cpuid_data[4];
  103|      2|      _nettle_cpuid (0, cpuid_data);
  104|      2|      if (memcmp (cpuid_data + 1, "Genu" "ntel" "ineI", 12) == 0)
  ------------------
  |  Branch (104:11): [True: 0, False: 2]
  ------------------
  105|      0|	features->vendor = X86_INTEL;
  106|      2|      else if (memcmp (cpuid_data + 1, "Auth" "cAMD" "enti", 12) == 0)
  ------------------
  |  Branch (106:16): [True: 2, False: 0]
  ------------------
  107|      2|	features->vendor = X86_AMD;
  108|       |
  109|      2|      _nettle_cpuid (1, cpuid_data);
  110|      2|      if (cpuid_data[2] & 0x2)
  ------------------
  |  Branch (110:11): [True: 2, False: 0]
  ------------------
  111|      2|	features->have_pclmul = 1;
  112|      2|      if (cpuid_data[2] & 0x02000000)
  ------------------
  |  Branch (112:11): [True: 2, False: 0]
  ------------------
  113|      2|	features->have_aesni = 1;
  114|       |
  115|      2|      _nettle_cpuid (7, cpuid_data);
  116|      2|      if (cpuid_data[1] & 0x20000000)
  ------------------
  |  Branch (116:11): [True: 2, False: 0]
  ------------------
  117|      2|	features->have_sha_ni = 1;
  118|      2|    }
  119|      2|}

mp_get_memory_functions:
  326|      4|{
  327|      4|  if (alloc_func)
  ------------------
  |  Branch (327:7): [True: 4, False: 0]
  ------------------
  328|      4|    *alloc_func = gmp_allocate_func;
  329|       |
  330|      4|  if (realloc_func)
  ------------------
  |  Branch (330:7): [True: 4, False: 0]
  ------------------
  331|      4|    *realloc_func = gmp_reallocate_func;
  332|       |
  333|      4|  if (free_func)
  ------------------
  |  Branch (333:7): [True: 4, False: 0]
  ------------------
  334|      4|    *free_func = gmp_free_func;
  335|      4|}
mp_set_memory_functions:
  341|      4|{
  342|      4|  if (!alloc_func)
  ------------------
  |  Branch (342:7): [True: 4, False: 0]
  ------------------
  343|      4|    alloc_func = gmp_default_alloc;
  344|      4|  if (!realloc_func)
  ------------------
  |  Branch (344:7): [True: 2, False: 2]
  ------------------
  345|      2|    realloc_func = gmp_default_realloc;
  346|      4|  if (!free_func)
  ------------------
  |  Branch (346:7): [True: 2, False: 2]
  ------------------
  347|      2|    free_func = gmp_default_free;
  348|       |
  349|      4|  gmp_allocate_func = alloc_func;
  350|      4|  gmp_reallocate_func = realloc_func;
  351|      4|  gmp_free_func = free_func;
  352|      4|}

LLVMFuzzerTestOneInput:
  182|    354|{
  183|    354|	char *hunk;
  184|       |
  185|    354|	if (size > 4096) // same as max_len = ... in .options file
  ------------------
  |  Branch (185:6): [True: 9, False: 345]
  ------------------
  186|      9|		return 0;
  187|       |
  188|       |//	CLOSE_STDERR
  189|       |
  190|    345|	g_data = data;
  191|    345|	g_size = size;
  192|    345|	g_read = 0;
  193|       |
  194|    345|	struct my_context *ctx = (struct my_context *) calloc(1, sizeof(struct my_context));
  195|    345|	fd_register_transport(99, &my_transport, ctx);
  196|       |
  197|  1.13k|	while ((hunk = fd_read_hunk(99, response_head_terminator, 512, 65536)))
  ------------------
  |  Branch (197:9): [True: 792, False: 345]
  ------------------
  198|    792|		free(hunk);
  199|       |
  200|    345|   connect_cleanup();
  201|    345|	free(ctx);
  202|       |
  203|       |//	RESTORE_STDERR
  204|       |
  205|    345|	return 0;
  206|    354|}
wget_read_hunk_fuzzer.c:my_read:
   96|  1.63k|{
   97|  1.63k|	(void) d;
   98|  1.63k|	struct my_context *ctx = (struct my_context *) arg;
   99|       |
  100|  1.63k|	if (ctx->peeklen) {
  ------------------
  |  Branch (100:6): [True: 1.10k, False: 527]
  ------------------
  101|       |      /* If we have any peek data, simply return that. */
  102|  1.10k|      int copysize = MIN (bufsize, ctx->peeklen);
  ------------------
  |  |  238|  1.10k|# define MIN(i, j) ((i) <= (j) ? (i) : (j))
  |  |  ------------------
  |  |  |  Branch (238:21): [True: 1.10k, False: 0]
  |  |  ------------------
  ------------------
  103|  1.10k|      memcpy (buf, ctx->peekbuf, copysize);
  104|  1.10k|      ctx->peeklen -= copysize;
  105|  1.10k|      if (ctx->peeklen)
  ------------------
  |  Branch (105:11): [True: 79, False: 1.03k]
  ------------------
  106|     79|        memmove (ctx->peekbuf, ctx->peekbuf + copysize, ctx->peeklen);
  107|       |
  108|  1.10k|      return copysize;
  109|  1.10k|	}
  110|       |
  111|    527|	if (g_read < g_size) {
  ------------------
  |  Branch (111:6): [True: 527, False: 0]
  ------------------
  112|    527|		int n = rand() % (g_size - g_read);
  113|    527|		if (n > bufsize)
  ------------------
  |  Branch (113:7): [True: 138, False: 389]
  ------------------
  114|    138|			n = bufsize;
  115|    527|		memcpy(buf, g_data + g_read, n);
  116|    527|		g_read += n;
  117|    527|		return n;
  118|    527|	}
  119|       |
  120|      0|	return 0;
  121|    527|}
wget_read_hunk_fuzzer.c:my_peek:
   78|  2.10k|{
   79|  2.10k|	(void) d;
   80|  2.10k|	if (g_read < g_size) {
  ------------------
  |  Branch (80:6): [True: 2.10k, False: 0]
  ------------------
   81|  2.10k|		struct my_context *ctx = (struct my_context *) arg;
   82|  2.10k|		int n = rand() % (g_size - g_read);
   83|  2.10k|		if (n > bufsize)
  ------------------
  |  Branch (83:7): [True: 223, False: 1.87k]
  ------------------
   84|    223|			n = bufsize;
   85|  2.10k|		if (n > (int) sizeof(ctx->peekbuf))
  ------------------
  |  Branch (85:7): [True: 47, False: 2.05k]
  ------------------
   86|     47|			n = sizeof(ctx->peekbuf);
   87|  2.10k|		memcpy(buf, g_data + g_read, n);
   88|  2.10k|		memcpy(ctx->peekbuf, g_data + g_read, n);
   89|  2.10k|		g_read += n;
   90|  2.10k|		ctx->peeklen=n;
   91|  2.10k|		return n;
   92|  2.10k|	}
   93|      0|	return 0;
   94|  2.10k|}
wget_read_hunk_fuzzer.c:response_head_terminator:
  149|  2.10k|{
  150|  2.10k|  const char *p, *end;
  151|       |
  152|       |  /* If at first peek, verify whether HUNK starts with "HTTP".  If
  153|       |     not, this is a HTTP/0.9 request and we must bail out without
  154|       |     reading anything.  */
  155|  2.10k|  if (start == peeked && 0 != memcmp (start, "HTTP", MIN (peeklen, 4)))
  ------------------
  |  |  238|  1.13k|# define MIN(i, j) ((i) <= (j) ? (i) : (j))
  |  |  ------------------
  |  |  |  Branch (238:21): [True: 651, False: 486]
  |  |  ------------------
  ------------------
  |  Branch (155:7): [True: 1.13k, False: 964]
  |  Branch (155:26): [True: 464, False: 673]
  ------------------
  156|    464|    return start;
  157|       |
  158|       |  /* Look for "\n[\r]\n", and return the following position if found.
  159|       |     Start two chars before the current to cover the possibility that
  160|       |     part of the terminator (e.g. "\n\r") arrived in the previous
  161|       |     batch.  */
  162|  1.63k|  p = peeked - start < 2 ? start : peeked - 2;
  ------------------
  |  Branch (162:7): [True: 722, False: 915]
  ------------------
  163|  1.63k|  end = peeked + peeklen;
  164|       |
  165|       |  /* Check for \n\r\n or \n\n anywhere in [p, end-2). */
  166|   143k|  for (; p < end - 2; p++)
  ------------------
  |  Branch (166:10): [True: 142k, False: 1.55k]
  ------------------
  167|   142k|    if (*p == '\n')
  ------------------
  |  Branch (167:9): [True: 6.77k, False: 135k]
  ------------------
  168|  6.77k|      {
  169|  6.77k|        if (p[1] == '\r' && p[2] == '\n')
  ------------------
  |  Branch (169:13): [True: 2.42k, False: 4.34k]
  |  Branch (169:29): [True: 31, False: 2.39k]
  ------------------
  170|     31|          return p + 3;
  171|  6.73k|        else if (p[1] == '\n')
  ------------------
  |  Branch (171:18): [True: 53, False: 6.68k]
  ------------------
  172|     53|          return p + 2;
  173|  6.77k|      }
  174|       |  /* p==end-2: check for \n\n directly preceding END. */
  175|  1.55k|  if (peeklen >= 2 && p[0] == '\n' && p[1] == '\n')
  ------------------
  |  Branch (175:7): [True: 886, False: 667]
  |  Branch (175:23): [True: 131, False: 755]
  |  Branch (175:39): [True: 62, False: 69]
  ------------------
  176|     62|    return p + 2;
  177|       |
  178|  1.49k|  return NULL;
  179|  1.55k|}

rpl_free:
   33|  3.65k|{
   34|       |# if defined __GNUC__ && !defined __clang__
   35|       |  /* An invalid GCC optimization
   36|       |     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98396>
   37|       |     would optimize away the assignments in the code below, when link-time
   38|       |     optimization (LTO) is enabled.  Make the code more complicated, so that
   39|       |     GCC does not grok how to optimize it.  */
   40|       |  int err[2];
   41|       |  err[0] = errno;
   42|       |  err[1] = errno;
   43|       |  errno = 0;
   44|       |  free (p);
   45|       |  errno = err[errno == 0];
   46|       |# else
   47|  3.65k|  int err = errno;
   48|  3.65k|  free (p);
   49|  3.65k|  errno = err;
   50|  3.65k|# endif
   51|  3.65k|}

xmalloc:
   44|  2.17k|{
   45|  2.17k|  return nonnull (malloc (s));
   46|  2.17k|}
xrealloc:
   65|     98|{
   66|     98|  void *r = realloc (p, s);
   67|     98|  if (!r && (!p || s))
  ------------------
  |  Branch (67:7): [True: 0, False: 98]
  |  Branch (67:14): [True: 0, False: 0]
  |  Branch (67:20): [True: 0, False: 0]
  ------------------
   68|      0|    xalloc_die ();
   69|     98|  return r;
   70|     98|}
xmalloc.c:nonnull:
   34|  2.17k|{
   35|  2.17k|  if (!p)
  ------------------
  |  Branch (35:7): [True: 0, False: 2.17k]
  ------------------
   36|      0|    xalloc_die ();
   37|  2.17k|  return p;
   38|  2.17k|}

c_isdigit:
  232|      4|{
  233|      4|  switch (c)
  234|      4|    {
  235|      4|    _C_CTYPE_DIGIT:
  ------------------
  |  |  133|      4|   case '0': case '1': case '2': case '3': \
  |  |  ------------------
  |  |  |  Branch (133:4): [True: 0, False: 4]
  |  |  |  Branch (133:14): [True: 4, False: 0]
  |  |  |  Branch (133:24): [True: 0, False: 4]
  |  |  |  Branch (133:34): [True: 0, False: 4]
  |  |  ------------------
  |  |  134|      4|   case '4': case '5': case '6': case '7': \
  |  |  ------------------
  |  |  |  Branch (134:4): [True: 0, False: 4]
  |  |  |  Branch (134:14): [True: 0, False: 4]
  |  |  |  Branch (134:24): [True: 0, False: 4]
  |  |  |  Branch (134:34): [True: 0, False: 4]
  |  |  ------------------
  |  |  135|      4|   case '8': case '9'
  |  |  ------------------
  |  |  |  Branch (135:4): [True: 0, False: 4]
  |  |  ------------------
  ------------------
  236|      4|      return true;
  237|      0|    default:
  ------------------
  |  Branch (237:5): [True: 0, False: 4]
  ------------------
  238|      0|      return false;
  239|      4|    }
  240|      4|}

fd_register_transport:
  859|    345|{
  860|    345|  struct transport_info *info;
  861|       |
  862|       |  /* The file descriptor must be non-negative to be registered.
  863|       |     Negative values are ignored by fd_close(), and -1 cannot be used as
  864|       |     hash key.  */
  865|    345|  assert (fd >= 0);
  866|       |
  867|    345|  info = xnew (struct transport_info);
  ------------------
  |  |   49|    345|#define xnew(type) (xmalloc (sizeof (type)))
  ------------------
  868|    345|  info->imp = imp;
  869|    345|  info->ctx = ctx;
  870|    345|  if (!transport_map)
  ------------------
  |  Branch (870:7): [True: 345, False: 0]
  ------------------
  871|    345|    transport_map = hash_table_new (0, NULL, NULL);
  872|    345|  hash_table_put (transport_map, (void *)(intptr_t) fd, info);
  873|    345|  ++transport_map_modified_tick;
  874|    345|}
fd_read:
  940|  1.63k|{
  941|  1.63k|  struct transport_info *info;
  942|  1.63k|  LAZY_RETRIEVE_INFO (info);
  ------------------
  |  |  896|  1.63k|#define LAZY_RETRIEVE_INFO(info) do {                                   \
  |  |  897|  1.63k|  static struct transport_info *last_info;                              \
  |  |  898|  1.63k|  static int last_fd = -1;                                              \
  |  |  899|  1.63k|  static unsigned int last_tick;                                        \
  |  |  900|  1.63k|  if (!transport_map)                                                   \
  |  |  ------------------
  |  |  |  Branch (900:7): [True: 0, False: 1.63k]
  |  |  ------------------
  |  |  901|  1.63k|    info = NULL;                                                        \
  |  |  902|  1.63k|  else if (last_fd == fd && last_tick == transport_map_modified_tick)   \
  |  |  ------------------
  |  |  |  Branch (902:12): [True: 1.63k, False: 1]
  |  |  |  Branch (902:29): [True: 1.29k, False: 344]
  |  |  ------------------
  |  |  903|  1.63k|    info = last_info;                                                   \
  |  |  904|  1.63k|  else                                                                  \
  |  |  905|  1.63k|    {                                                                   \
  |  |  906|    345|      info = hash_table_get (transport_map, (void *)(intptr_t) fd);     \
  |  |  907|    345|      last_fd = fd;                                                     \
  |  |  908|    345|      last_info = info;                                                 \
  |  |  909|    345|      last_tick = transport_map_modified_tick;                          \
  |  |  910|    345|    }                                                                   \
  |  |  911|  1.63k|} while (0)
  |  |  ------------------
  |  |  |  Branch (911:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  943|       |
  944|       |  /* let imp->reader take care about timeout.
  945|       |     (or in worst case timeout can be 2*timeout) */
  946|  1.63k|  if (info && info->imp->reader)
  ------------------
  |  Branch (946:7): [True: 1.63k, False: 0]
  |  Branch (946:15): [True: 1.63k, False: 0]
  ------------------
  947|  1.63k|    return info->imp->reader (fd, buf, bufsize, info->ctx, timeout);
  948|       |
  949|      0|  if (!poll_internal (fd, info, WAIT_FOR_READ, timeout))
  ------------------
  |  Branch (949:7): [True: 0, False: 0]
  ------------------
  950|      0|    return -1;
  951|      0|  return sock_read (fd, buf, bufsize);
  952|      0|}
fd_peek:
  968|  2.10k|{
  969|  2.10k|  struct transport_info *info;
  970|  2.10k|  LAZY_RETRIEVE_INFO (info);
  ------------------
  |  |  896|  2.10k|#define LAZY_RETRIEVE_INFO(info) do {                                   \
  |  |  897|  2.10k|  static struct transport_info *last_info;                              \
  |  |  898|  2.10k|  static int last_fd = -1;                                              \
  |  |  899|  2.10k|  static unsigned int last_tick;                                        \
  |  |  900|  2.10k|  if (!transport_map)                                                   \
  |  |  ------------------
  |  |  |  Branch (900:7): [True: 0, False: 2.10k]
  |  |  ------------------
  |  |  901|  2.10k|    info = NULL;                                                        \
  |  |  902|  2.10k|  else if (last_fd == fd && last_tick == transport_map_modified_tick)   \
  |  |  ------------------
  |  |  |  Branch (902:12): [True: 2.10k, False: 1]
  |  |  |  Branch (902:29): [True: 1.75k, False: 344]
  |  |  ------------------
  |  |  903|  2.10k|    info = last_info;                                                   \
  |  |  904|  2.10k|  else                                                                  \
  |  |  905|  2.10k|    {                                                                   \
  |  |  906|    345|      info = hash_table_get (transport_map, (void *)(intptr_t) fd);     \
  |  |  907|    345|      last_fd = fd;                                                     \
  |  |  908|    345|      last_info = info;                                                 \
  |  |  909|    345|      last_tick = transport_map_modified_tick;                          \
  |  |  910|    345|    }                                                                   \
  |  |  911|  2.10k|} while (0)
  |  |  ------------------
  |  |  |  Branch (911:10): [Folded - Ignored]
  |  |  ------------------
  ------------------
  971|       |
  972|  2.10k|  if (info && info->imp->peeker)
  ------------------
  |  Branch (972:7): [True: 2.10k, False: 0]
  |  Branch (972:15): [True: 2.10k, False: 0]
  ------------------
  973|  2.10k|    return info->imp->peeker (fd, buf, bufsize, info->ctx, timeout);
  974|       |
  975|      0|  if (!poll_internal (fd, info, WAIT_FOR_READ, timeout))
  ------------------
  |  Branch (975:7): [True: 0, False: 0]
  ------------------
  976|      0|    return -1;
  977|      0|  return sock_peek (fd, buf, bufsize);
  978|      0|}
connect_cleanup:
 1072|    345|{
 1073|    345|  if (transport_map)
  ------------------
  |  Branch (1073:7): [True: 345, False: 0]
  ------------------
 1074|    345|    {
 1075|    345|      hash_table_iterator iter;
 1076|    690|      for (hash_table_iterate (transport_map, &iter); hash_table_iter_next (&iter); )
  ------------------
  |  Branch (1076:55): [True: 345, False: 345]
  ------------------
 1077|    345|        {
 1078|    345|          xfree (iter.value);
  ------------------
  |  |   54|    345|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1079|    345|        }
 1080|    345|      hash_table_destroy (transport_map);
 1081|    345|      transport_map = NULL;
 1082|    345|    }
 1083|    345|}

hash_table_new:
  273|    345|{
  274|    345|  int size;
  275|    345|  struct hash_table *ht = xnew (struct hash_table);
  ------------------
  |  |   49|    345|#define xnew(type) (xmalloc (sizeof (type)))
  ------------------
  276|       |
  277|    345|  ht->hash_function = hash_function ? hash_function : hash_pointer;
  ------------------
  |  Branch (277:23): [True: 0, False: 345]
  ------------------
  278|    345|  ht->test_function = test_function ? test_function : cmp_pointer;
  ------------------
  |  Branch (278:23): [True: 0, False: 345]
  ------------------
  279|       |
  280|       |  /* If the size of struct hash_table ever becomes a concern, this
  281|       |     field can go.  (Wget doesn't create many hashes.)  */
  282|    345|  ht->prime_offset = 0;
  283|       |
  284|       |  /* Calculate the size that ensures that the table will store at
  285|       |     least ITEMS keys without the need to resize.  */
  286|    345|  size = (int) (1 + items / HASH_MAX_FULLNESS);
  ------------------
  |  |  138|    345|#define HASH_MAX_FULLNESS 0.75
  ------------------
  287|    345|  size = prime_size (size, &ht->prime_offset);
  288|    345|  ht->size = size;
  289|    345|  ht->resize_threshold = (int) (size * HASH_MAX_FULLNESS);
  ------------------
  |  |  138|    345|#define HASH_MAX_FULLNESS 0.75
  ------------------
  290|       |  /*assert (ht->resize_threshold >= items);*/
  291|       |
  292|    345|  ht->cells = xnew_array (struct cell, ht->size);
  ------------------
  |  |   51|    345|#define xnew_array(type, len) (xmalloc ((len) * sizeof (type)))
  ------------------
  293|       |
  294|       |  /* Mark cells as empty.  We use 0xff rather than 0 to mark empty
  295|       |     keys because it allows us to use NULL/0 as keys.  */
  296|    345|  memset (ht->cells, INVALID_PTR_CHAR, size * sizeof (struct cell));
  ------------------
  |  |  182|    345|#define INVALID_PTR_CHAR UCHAR_MAX
  ------------------
  297|       |
  298|    345|  ht->count = 0;
  299|       |
  300|    345|  return ht;
  301|    345|}
hash_table_destroy:
  307|    345|{
  308|    345|  xfree (ht->cells);
  ------------------
  |  |   54|    345|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  309|    345|  xfree (ht);
  ------------------
  |  |   54|    345|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  310|    345|}
hash_table_get:
  339|    690|{
  340|    690|  struct cell *c = find_cell (ht, key);
  341|    690|  if (CELL_OCCUPIED (c))
  ------------------
  |  |  185|    690|#define CELL_OCCUPIED(c) ((c)->key != INVALID_PTR)
  |  |  ------------------
  |  |  |  |  178|    690|#define INVALID_PTR ((void *) ~(uintptr_t) 0)
  |  |  ------------------
  |  |  |  Branch (185:26): [True: 690, False: 0]
  |  |  ------------------
  ------------------
  342|    690|    return c->value;
  343|      0|  else
  344|      0|    return NULL;
  345|    690|}
hash_table_put:
  424|    345|{
  425|    345|  struct cell *c = find_cell (ht, key);
  426|    345|  if (CELL_OCCUPIED (c))
  ------------------
  |  |  185|    345|#define CELL_OCCUPIED(c) ((c)->key != INVALID_PTR)
  |  |  ------------------
  |  |  |  |  178|    345|#define INVALID_PTR ((void *) ~(uintptr_t) 0)
  |  |  ------------------
  |  |  |  Branch (185:26): [True: 0, False: 345]
  |  |  ------------------
  ------------------
  427|      0|    {
  428|       |      /* update existing item */
  429|      0|      c->key   = (void *)key; /* const? */
  430|      0|      c->value = (void *)value;
  431|      0|      return;
  432|      0|    }
  433|       |
  434|       |  /* If adding the item would make the table exceed max. fullness,
  435|       |     grow the table first.  */
  436|    345|  if (ht->count >= ht->resize_threshold)
  ------------------
  |  Branch (436:7): [True: 0, False: 345]
  ------------------
  437|      0|    {
  438|      0|      grow_hash_table (ht);
  439|      0|      c = find_cell (ht, key);
  440|      0|    }
  441|       |
  442|       |  /* add new item */
  443|    345|  ++ht->count;
  444|    345|  c->key   = (void *)key;       /* const? */
  445|    345|  c->value = (void *)value;
  446|    345|}
hash_table_iterate:
  550|    345|{
  551|    345|  iter->pos = ht->cells;
  552|    345|  iter->end = ht->cells + ht->size;
  553|    345|}
hash_table_iter_next:
  566|    690|{
  567|    690|  struct cell *c = iter->pos;
  568|    690|  struct cell *end = iter->end;
  569|  4.83k|  for (; c < end; c++)
  ------------------
  |  Branch (569:10): [True: 4.48k, False: 345]
  ------------------
  570|  4.48k|    if (CELL_OCCUPIED (c))
  ------------------
  |  |  185|  4.48k|#define CELL_OCCUPIED(c) ((c)->key != INVALID_PTR)
  |  |  ------------------
  |  |  |  |  178|  4.48k|#define INVALID_PTR ((void *) ~(uintptr_t) 0)
  |  |  ------------------
  |  |  |  Branch (185:26): [True: 345, False: 4.14k]
  |  |  ------------------
  ------------------
  571|    345|      {
  572|    345|        iter->key = c->key;
  573|    345|        iter->value = c->value;
  574|    345|        iter->pos = c + 1;
  575|    345|        return 1;
  576|    345|      }
  577|    345|  return 0;
  578|    690|}
hash_pointer:
  725|  1.03k|{
  726|  1.03k|  uintptr_t key = (uintptr_t) ptr;
  727|  1.03k|  key += (key << 12);
  728|  1.03k|  key ^= (key >> 22);
  729|  1.03k|  key += (key << 4);
  730|  1.03k|  key ^= (key >> 9);
  731|  1.03k|  key += (key << 10);
  732|  1.03k|  key ^= (key >> 2);
  733|  1.03k|  key += (key << 7);
  734|  1.03k|  key ^= (key >> 12);
  735|       |#if SIZEOF_VOID_P > 4
  736|       |  key += (key << 44);
  737|       |  key ^= (key >> 54);
  738|       |  key += (key << 36);
  739|       |  key ^= (key >> 41);
  740|       |  key += (key << 42);
  741|       |  key ^= (key >> 34);
  742|       |  key += (key << 39);
  743|       |  key ^= (key >> 44);
  744|       |#endif
  745|  1.03k|  return (unsigned long) key;
  746|  1.03k|}
hash.c:prime_size:
  214|    345|{
  215|    345|  static const int primes[] = {
  216|    345|    13, 19, 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031,
  217|    345|    1361, 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783,
  218|    345|    19219, 24989, 32491, 42257, 54941, 71429, 92861, 120721, 156941,
  219|    345|    204047, 265271, 344857, 448321, 582821, 757693, 985003, 1280519,
  220|    345|    1664681, 2164111, 2813353, 3657361, 4754591, 6180989, 8035301,
  221|    345|    10445899, 13579681, 17653589, 22949669, 29834603, 38784989,
  222|    345|    50420551, 65546729, 85210757, 110774011, 144006217, 187208107,
  223|    345|    243370577, 316381771, 411296309, 534685237, 695090819, 903618083,
  224|    345|    1174703521, 1527114613, 1837299131, 2147483647
  225|    345|  };
  226|    345|  size_t i;
  227|       |
  228|    345|  for (i = *prime_offset; i < countof (primes); i++)
  ------------------
  |  |  175|    345|#define countof(array) (sizeof (array) / sizeof ((array)[0]))
  ------------------
  |  Branch (228:27): [True: 345, False: 0]
  ------------------
  229|    345|    if (primes[i] >= size)
  ------------------
  |  Branch (229:9): [True: 345, False: 0]
  ------------------
  230|    345|      {
  231|       |        /* Set the offset to the next prime.  That is safe because,
  232|       |           next time we are called, it will be with a larger SIZE,
  233|       |           which means we could never return the same prime anyway.
  234|       |           (If that is not the case, the caller can simply reset
  235|       |           *prime_offset.)  */
  236|    345|        *prime_offset = i + 1;
  237|    345|        return primes[i];
  238|    345|      }
  239|       |
  240|      0|  abort ();
  241|    345|}
hash.c:find_cell:
  318|  1.03k|{
  319|  1.03k|  struct cell *cells = ht->cells;
  320|  1.03k|  int size = ht->size;
  321|  1.03k|  struct cell *c = cells + HASH_POSITION (key, ht->hash_function, size);
  ------------------
  |  |  201|  1.03k|#define HASH_POSITION(key, hashfun, size) ((hashfun) (key) % size)
  ------------------
  322|  1.03k|  testfun_t equals = ht->test_function;
  323|       |
  324|  1.03k|  FOREACH_OCCUPIED_ADJACENT (c, cells, size)
  ------------------
  |  |  197|  1.03k|  for (; CELL_OCCUPIED (c); c = NEXT_CELL (c, cells, size))
  |  |  ------------------
  |  |  |  |  185|  1.03k|#define CELL_OCCUPIED(c) ((c)->key != INVALID_PTR)
  |  |  |  |  ------------------
  |  |  |  |  |  |  178|  1.03k|#define INVALID_PTR ((void *) ~(uintptr_t) 0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (185:26): [True: 690, False: 345]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |                 for (; CELL_OCCUPIED (c); c = NEXT_CELL (c, cells, size))
  |  |  ------------------
  |  |  |  |  192|      0|#define NEXT_CELL(c, cells, size) (c != cells + (size - 1) ? c + 1 : cells)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (192:36): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  325|    690|    if (equals (key, c->key))
  ------------------
  |  Branch (325:9): [True: 690, False: 0]
  ------------------
  326|    690|      break;
  327|  1.03k|  return c;
  328|  1.03k|}
hash.c:cmp_pointer:
  750|    690|{
  751|    690|  return ptr1 == ptr2;
  752|    690|}

fd_read_hunk:
  648|  1.13k|{
  649|  1.13k|  long bufsize = sizehint;
  650|  1.13k|  char *hunk = xmalloc (bufsize);
  651|  1.13k|  int tail = 0;                 /* tail position in HUNK */
  652|       |
  653|  1.13k|  assert (!maxsize || maxsize >= bufsize);
  654|       |
  655|  2.10k|  while (1)
  ------------------
  |  Branch (655:10): [Folded - Ignored]
  ------------------
  656|  2.10k|    {
  657|  2.10k|      const char *end;
  658|  2.10k|      int pklen, rdlen, remain;
  659|       |
  660|       |      /* First, peek at the available data. */
  661|       |
  662|  2.10k|      pklen = fd_peek (fd, hunk + tail, bufsize - 1 - tail, -1);
  663|  2.10k|      if (pklen < 0)
  ------------------
  |  Branch (663:11): [True: 0, False: 2.10k]
  ------------------
  664|      0|        {
  665|      0|          xfree (hunk);
  ------------------
  |  |   54|      0|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  666|      0|          return NULL;
  667|      0|        }
  668|  2.10k|      end = terminator (hunk, hunk + tail, pklen);
  669|  2.10k|      if (end)
  ------------------
  |  Branch (669:11): [True: 610, False: 1.49k]
  ------------------
  670|    610|        {
  671|       |          /* The data contains the terminator: we'll drain the data up
  672|       |             to the end of the terminator.  */
  673|    610|          remain = end - (hunk + tail);
  674|    610|          assert (remain >= 0);
  675|    610|          if (remain == 0)
  ------------------
  |  Branch (675:15): [True: 465, False: 145]
  ------------------
  676|    465|            {
  677|       |              /* No more data needs to be read. */
  678|    465|              hunk[tail] = '\0';
  679|    465|              return hunk;
  680|    465|            }
  681|    145|          if (bufsize - 1 < tail + remain)
  ------------------
  |  Branch (681:15): [True: 0, False: 145]
  ------------------
  682|      0|            {
  683|      0|              bufsize = tail + remain + 1;
  684|      0|              hunk = xrealloc (hunk, bufsize);
  685|      0|            }
  686|    145|        }
  687|  1.49k|      else
  688|       |        /* No terminator: simply read the data we know is (or should
  689|       |           be) available.  */
  690|  1.49k|        remain = pklen;
  691|       |
  692|       |      /* Now, read the data.  Note that we make no assumptions about
  693|       |         how much data we'll get.  (Some TCP stacks are notorious for
  694|       |         read returning less data than the previous MSG_PEEK.)  */
  695|       |
  696|  1.63k|      rdlen = fd_read (fd, hunk + tail, remain, 0);
  697|  1.63k|      if (rdlen < 0)
  ------------------
  |  Branch (697:11): [True: 0, False: 1.63k]
  ------------------
  698|      0|        {
  699|      0|          xfree (hunk);
  ------------------
  |  |   54|      0|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  700|      0|          return NULL;
  701|      0|        }
  702|  1.63k|      tail += rdlen;
  703|  1.63k|      hunk[tail] = '\0';
  704|       |
  705|  1.63k|      if (rdlen == 0)
  ------------------
  |  Branch (705:11): [True: 527, False: 1.10k]
  ------------------
  706|    527|        {
  707|    527|          if (tail == 0)
  ------------------
  |  Branch (707:15): [True: 345, False: 182]
  ------------------
  708|    345|            {
  709|       |              /* EOF without anything having been read */
  710|    345|              xfree (hunk);
  ------------------
  |  |   54|    345|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  711|    345|              errno = 0;
  712|    345|              return NULL;
  713|    345|            }
  714|    182|          else
  715|       |            /* EOF seen: return the data we've read. */
  716|    182|            return hunk;
  717|    527|        }
  718|  1.10k|      if (end && rdlen == remain)
  ------------------
  |  Branch (718:11): [True: 145, False: 964]
  |  Branch (718:18): [True: 145, False: 0]
  ------------------
  719|       |        /* The terminator was seen and the remaining data drained --
  720|       |           we got what we came for.  */
  721|    145|        return hunk;
  722|       |
  723|       |      /* Keep looping until all the data arrives. */
  724|       |
  725|    964|      if (tail == bufsize - 1)
  ------------------
  |  Branch (725:11): [True: 98, False: 866]
  ------------------
  726|     98|        {
  727|       |          /* Double the buffer size, but refuse to allocate more than
  728|       |             MAXSIZE bytes.  */
  729|     98|          if (maxsize && bufsize >= maxsize)
  ------------------
  |  Branch (729:15): [True: 98, False: 0]
  |  Branch (729:26): [True: 0, False: 98]
  ------------------
  730|      0|            {
  731|      0|              xfree (hunk);
  ------------------
  |  |   54|      0|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  732|      0|              errno = ENOMEM;
  733|      0|              return NULL;
  734|      0|            }
  735|     98|          bufsize <<= 1;
  736|     98|          if (maxsize && bufsize > maxsize)
  ------------------
  |  Branch (736:15): [True: 98, False: 0]
  |  Branch (736:26): [True: 0, False: 98]
  ------------------
  737|      0|            bufsize = maxsize;
  738|     98|          hunk = xrealloc (hunk, bufsize);
  739|     98|        }
  740|    964|    }
  741|  1.13k|}

