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:
   85|    797|{
   86|    797|#ifdef HAVE_FMEMOPEN
   87|    797|	FILE *fp;
   88|    797|	struct fileinfo *fi;
   89|    797|	const char *user = NULL, *pw = NULL;
   90|       |
   91|    797|	if (size > 4096) // same as max_len = ... in .options file
  ------------------
  |  Branch (91:6): [True: 9, False: 788]
  ------------------
   92|      9|		return 0;
   93|       |
   94|    788|	fp = fmemopen((void *) data, size, "r");
   95|    788|	if (!fp) return 0;
  ------------------
  |  Branch (95:6): [True: 0, False: 788]
  ------------------
   96|       |
   97|    788|	CLOSE_STDERR
  ------------------
  |  |   30|    788|	int bak = dup(STDERR_FILENO); \
  |  |   31|    788|	int fd = open("/dev/null", O_WRONLY); \
  |  |   32|    788|	dup2(fd, STDERR_FILENO); \
  |  |   33|    788|	close(fd);
  ------------------
   98|       |
   99|    788|	do_jump = 1;
  100|       |
  101|    788|	if (setjmp(jmpbuf))
  102|      0|		goto done;
  103|       |
  104|    788|	opt.netrc = 1;
  105|       |
  106|    788|	user = NULL; // get first entry
  107|    788|	search_netrc("x", &user, &pw, 1, fp);
  108|    788|	netrc_cleanup();
  109|       |
  110|    788|	user = "u"; // get entry for user 'u'
  111|    788|	search_netrc("x", &user, &pw, 1, fp);
  112|       |
  113|    788|done:
  114|    788|	netrc_cleanup();
  115|       |
  116|    788|	fclose(fp);
  117|       |
  118|    788|	do_jump = 0;
  119|       |
  120|    788|	RESTORE_STDERR
  ------------------
  |  |   36|    788|	dup2(bak, STDERR_FILENO); \
  |  |   37|    788|	close(bak);
  ------------------
  121|       |
  122|    788|#endif
  123|    788|	return 0;
  124|    788|}

quotearg.c:strcaseeq0:
  161|  9.48k|{
  162|  9.48k|  if (CASEEQ (s1[0], s20))
  ------------------
  |  |   35|  9.48k|     (c_isupper (upper) ? ((other) & ~0x20) == (upper) : (other) == (upper))
  |  |  ------------------
  |  |  |  Branch (35:6): [True: 0, False: 9.48k]
  |  |  |  Branch (35:7): [True: 9.48k, False: 0]
  |  |  ------------------
  ------------------
  163|      0|    {
  164|      0|      if (s20 == 0)
  ------------------
  |  Branch (164:11): [True: 0, False: 0]
  ------------------
  165|      0|        return 1;
  166|      0|      else
  167|      0|        return strcaseeq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
  168|      0|    }
  169|  9.48k|  else
  170|  9.48k|    return 0;
  171|  9.48k|}

rpl_free:
   33|  18.6k|{
   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|  18.6k|  int err = errno;
   48|  18.6k|  free (p);
   49|  18.6k|  errno = err;
   50|  18.6k|# endif
   51|  18.6k|}

locale_charset:
  832|  4.74k|{
  833|  4.74k|  const char *codeset;
  834|       |
  835|       |  /* This function must be multithread-safe.  To achieve this without using
  836|       |     thread-local storage, we use a simple strcpy or memcpy to fill this static
  837|       |     buffer.  Filling it through, for example, strcpy + strcat would not be
  838|       |     guaranteed to leave the buffer's contents intact if another thread is
  839|       |     currently accessing it.  If necessary, the contents is first assembled in
  840|       |     a stack-allocated buffer.  */
  841|       |
  842|  4.74k|#if HAVE_LANGINFO_CODESET || defined WINDOWS_NATIVE || defined OS2
  843|       |
  844|  4.74k|# if HAVE_LANGINFO_CODESET
  845|       |
  846|       |  /* Most systems support nl_langinfo (CODESET) nowadays.  */
  847|  4.74k|  codeset = nl_langinfo (CODESET);
  848|       |
  849|       |#  ifdef __CYGWIN__
  850|       |  /* Cygwin < 1.7 does not have locales.  nl_langinfo (CODESET) always
  851|       |     returns "US-ASCII".  Return the suffix of the locale name from the
  852|       |     environment variables (if present) or the codepage as a number.  */
  853|       |  if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
  854|       |    {
  855|       |      const char *locale;
  856|       |      static char resultbuf[2 + 10 + 1];
  857|       |
  858|       |      locale = getenv ("LC_ALL");
  859|       |      if (locale == NULL || locale[0] == '\0')
  860|       |        {
  861|       |          locale = getenv ("LC_CTYPE");
  862|       |          if (locale == NULL || locale[0] == '\0')
  863|       |            locale = getenv ("LANG");
  864|       |        }
  865|       |      if (locale != NULL && locale[0] != '\0')
  866|       |        {
  867|       |          /* If the locale name contains an encoding after the dot, return
  868|       |             it.  */
  869|       |          const char *dot = strchr (locale, '.');
  870|       |
  871|       |          if (dot != NULL)
  872|       |            {
  873|       |              const char *modifier;
  874|       |
  875|       |              dot++;
  876|       |              /* Look for the possible @... trailer and remove it, if any.  */
  877|       |              modifier = strchr (dot, '@');
  878|       |              if (modifier == NULL)
  879|       |                return dot;
  880|       |              if (modifier - dot < sizeof (resultbuf))
  881|       |                {
  882|       |                  /* This way of filling resultbuf is multithread-safe.  */
  883|       |                  memcpy (resultbuf, dot, modifier - dot);
  884|       |                  resultbuf [modifier - dot] = '\0';
  885|       |                  return resultbuf;
  886|       |                }
  887|       |            }
  888|       |        }
  889|       |
  890|       |      /* The Windows API has a function returning the locale's codepage as a
  891|       |         number: GetACP().  This encoding is used by Cygwin, unless the user
  892|       |         has set the environment variable CYGWIN=codepage:oem (which very few
  893|       |         people do).
  894|       |         Output directed to console windows needs to be converted (to
  895|       |         GetOEMCP() if the console is using a raster font, or to
  896|       |         GetConsoleOutputCP() if it is using a TrueType font).  Cygwin does
  897|       |         this conversion transparently (see winsup/cygwin/fhandler_console.cc),
  898|       |         converting to GetConsoleOutputCP().  This leads to correct results,
  899|       |         except when SetConsoleOutputCP has been called and a raster font is
  900|       |         in use.  */
  901|       |      {
  902|       |        char buf[2 + 10 + 1];
  903|       |
  904|       |        sprintf (buf, "CP%u", GetACP ());
  905|       |        strcpy (resultbuf, buf);
  906|       |        codeset = resultbuf;
  907|       |      }
  908|       |    }
  909|       |#  endif
  910|       |
  911|  4.74k|  if (codeset == NULL)
  ------------------
  |  Branch (911:7): [True: 0, False: 4.74k]
  ------------------
  912|       |    /* The canonical name cannot be determined.  */
  913|      0|    codeset = "";
  914|       |
  915|       |# elif defined WINDOWS_NATIVE
  916|       |
  917|       |  char buf[2 + 10 + 1];
  918|       |  static char resultbuf[2 + 10 + 1];
  919|       |
  920|       |  /* The Windows API has a function returning the locale's codepage as
  921|       |     a number, but the value doesn't change according to what the
  922|       |     'setlocale' call specified.  So we use it as a last resort, in
  923|       |     case the string returned by 'setlocale' doesn't specify the
  924|       |     codepage.  */
  925|       |  char *current_locale = setlocale (LC_CTYPE, NULL);
  926|       |  char *pdot = strrchr (current_locale, '.');
  927|       |
  928|       |  if (pdot && 2 + strlen (pdot + 1) + 1 <= sizeof (buf))
  929|       |    sprintf (buf, "CP%s", pdot + 1);
  930|       |  else
  931|       |    {
  932|       |      /* The Windows API has a function returning the locale's codepage as a
  933|       |         number: GetACP().
  934|       |         When the output goes to a console window, it needs to be provided in
  935|       |         GetOEMCP() encoding if the console is using a raster font, or in
  936|       |         GetConsoleOutputCP() encoding if it is using a TrueType font.
  937|       |         But in GUI programs and for output sent to files and pipes, GetACP()
  938|       |         encoding is the best bet.  */
  939|       |      sprintf (buf, "CP%u", GetACP ());
  940|       |    }
  941|       |  /* For a locale name such as "French_France.65001", in Windows 10,
  942|       |     setlocale now returns "French_France.utf8" instead.  */
  943|       |  if (strcmp (buf + 2, "65001") == 0 || strcmp (buf + 2, "utf8") == 0)
  944|       |    codeset = "UTF-8";
  945|       |  else
  946|       |    {
  947|       |      strcpy (resultbuf, buf);
  948|       |      codeset = resultbuf;
  949|       |    }
  950|       |
  951|       |# elif defined OS2
  952|       |
  953|       |  const char *locale;
  954|       |  static char resultbuf[2 + 10 + 1];
  955|       |  ULONG cp[3];
  956|       |  ULONG cplen;
  957|       |
  958|       |  codeset = NULL;
  959|       |
  960|       |  /* Allow user to override the codeset, as set in the operating system,
  961|       |     with standard language environment variables.  */
  962|       |  locale = getenv ("LC_ALL");
  963|       |  if (locale == NULL || locale[0] == '\0')
  964|       |    {
  965|       |      locale = getenv ("LC_CTYPE");
  966|       |      if (locale == NULL || locale[0] == '\0')
  967|       |        locale = getenv ("LANG");
  968|       |    }
  969|       |  if (locale != NULL && locale[0] != '\0')
  970|       |    {
  971|       |      /* If the locale name contains an encoding after the dot, return it.  */
  972|       |      const char *dot = strchr (locale, '.');
  973|       |
  974|       |      if (dot != NULL)
  975|       |        {
  976|       |          const char *modifier;
  977|       |
  978|       |          dot++;
  979|       |          /* Look for the possible @... trailer and remove it, if any.  */
  980|       |          modifier = strchr (dot, '@');
  981|       |          if (modifier == NULL)
  982|       |            return dot;
  983|       |          if (modifier - dot < sizeof (resultbuf))
  984|       |            {
  985|       |              /* This way of filling resultbuf is multithread-safe.  */
  986|       |              memcpy (resultbuf, dot, modifier - dot);
  987|       |              resultbuf [modifier - dot] = '\0';
  988|       |              return resultbuf;
  989|       |            }
  990|       |        }
  991|       |
  992|       |      /* For the POSIX locale, don't use the system's codepage.  */
  993|       |      if (strcmp (locale, "C") == 0 || strcmp (locale, "POSIX") == 0)
  994|       |        codeset = "";
  995|       |    }
  996|       |
  997|       |  if (codeset == NULL)
  998|       |    {
  999|       |      /* OS/2 has a function returning the locale's codepage as a number.  */
 1000|       |      if (DosQueryCp (sizeof (cp), cp, &cplen))
 1001|       |        codeset = "";
 1002|       |      else
 1003|       |        {
 1004|       |          char buf[2 + 10 + 1];
 1005|       |
 1006|       |          sprintf (buf, "CP%u", cp[0]);
 1007|       |          strcpy (resultbuf, buf);
 1008|       |          codeset = resultbuf;
 1009|       |        }
 1010|       |    }
 1011|       |
 1012|       |# else
 1013|       |
 1014|       |#  error "Add code for other platforms here."
 1015|       |
 1016|       |# endif
 1017|       |
 1018|       |  /* Resolve alias.  */
 1019|  4.74k|  {
 1020|       |# ifdef alias_table_defined
 1021|       |    /* On some platforms, UTF-8 locales are the most frequently used ones.
 1022|       |       Speed up the common case and slow down the less common cases by
 1023|       |       testing for this case first.  */
 1024|       |#  if defined __OpenBSD__ || (defined __APPLE__ && defined __MACH__) || defined __sun || defined __CYGWIN__
 1025|       |    if (strcmp (codeset, "UTF-8") == 0)
 1026|       |      goto done_table_lookup;
 1027|       |    else
 1028|       |#  endif
 1029|       |      {
 1030|       |        const struct table_entry * const table = alias_table;
 1031|       |        size_t const table_size =
 1032|       |          sizeof (alias_table) / sizeof (struct table_entry);
 1033|       |        /* The table is sorted.  Perform a binary search.  */
 1034|       |        size_t hi = table_size;
 1035|       |        size_t lo = 0;
 1036|       |        while (lo < hi)
 1037|       |          {
 1038|       |            /* Invariant:
 1039|       |               for i < lo, strcmp (table[i].alias, codeset) < 0,
 1040|       |               for i >= hi, strcmp (table[i].alias, codeset) > 0.  */
 1041|       |            size_t mid = (hi + lo) >> 1; /* >= lo, < hi */
 1042|       |            int cmp = strcmp (table[mid].alias, codeset);
 1043|       |            if (cmp < 0)
 1044|       |              lo = mid + 1;
 1045|       |            else if (cmp > 0)
 1046|       |              hi = mid;
 1047|       |            else
 1048|       |              {
 1049|       |                /* Found an i with
 1050|       |                     strcmp (table[i].alias, codeset) == 0.  */
 1051|       |                codeset = table[mid].canonical;
 1052|       |                goto done_table_lookup;
 1053|       |              }
 1054|       |          }
 1055|       |      }
 1056|       |    if (0)
 1057|       |      done_table_lookup: ;
 1058|       |    else
 1059|       |# endif
 1060|  4.74k|      {
 1061|       |        /* Did not find it in the table.  */
 1062|       |        /* On Mac OS X, all modern locales use the UTF-8 encoding.
 1063|       |           BeOS and Haiku have a single locale, and it has UTF-8 encoding.  */
 1064|       |# if (defined __APPLE__ && defined __MACH__) || defined __BEOS__ || defined __HAIKU__
 1065|       |        codeset = "UTF-8";
 1066|       |# else
 1067|       |        /* Don't return an empty string.  GNU libc and GNU libiconv interpret
 1068|       |           the empty string as denoting "the locale's character encoding",
 1069|       |           thus GNU libiconv would call this function a second time.  */
 1070|  4.74k|        if (codeset[0] == '\0')
  ------------------
  |  Branch (1070:13): [True: 0, False: 4.74k]
  ------------------
 1071|      0|          codeset = "ASCII";
 1072|  4.74k|# endif
 1073|  4.74k|      }
 1074|  4.74k|  }
 1075|       |
 1076|       |#else
 1077|       |
 1078|       |  /* On old systems which lack it, use setlocale or getenv.  */
 1079|       |  const char *locale = NULL;
 1080|       |
 1081|       |  /* But most old systems don't have a complete set of locales.  Some
 1082|       |     (like DJGPP) have only the C locale.  Therefore we don't use setlocale
 1083|       |     here; it would return "C" when it doesn't support the locale name the
 1084|       |     user has set.  */
 1085|       |# if 0
 1086|       |  locale = setlocale (LC_CTYPE, NULL);
 1087|       |# endif
 1088|       |  if (locale == NULL || locale[0] == '\0')
 1089|       |    {
 1090|       |      locale = getenv ("LC_ALL");
 1091|       |      if (locale == NULL || locale[0] == '\0')
 1092|       |        {
 1093|       |          locale = getenv ("LC_CTYPE");
 1094|       |          if (locale == NULL || locale[0] == '\0')
 1095|       |            locale = getenv ("LANG");
 1096|       |            if (locale == NULL)
 1097|       |              locale = "";
 1098|       |        }
 1099|       |    }
 1100|       |
 1101|       |  /* Map locale name to canonical encoding name.  */
 1102|       |  {
 1103|       |# ifdef locale_table_defined
 1104|       |    const struct table_entry * const table = locale_table;
 1105|       |    size_t const table_size =
 1106|       |      sizeof (locale_table) / sizeof (struct table_entry);
 1107|       |    /* The table is sorted.  Perform a binary search.  */
 1108|       |    size_t hi = table_size;
 1109|       |    size_t lo = 0;
 1110|       |    while (lo < hi)
 1111|       |      {
 1112|       |        /* Invariant:
 1113|       |           for i < lo, strcmp (table[i].locale, locale) < 0,
 1114|       |           for i >= hi, strcmp (table[i].locale, locale) > 0.  */
 1115|       |        size_t mid = (hi + lo) >> 1; /* >= lo, < hi */
 1116|       |        int cmp = strcmp (table[mid].locale, locale);
 1117|       |        if (cmp < 0)
 1118|       |          lo = mid + 1;
 1119|       |        else if (cmp > 0)
 1120|       |          hi = mid;
 1121|       |        else
 1122|       |          {
 1123|       |            /* Found an i with
 1124|       |                 strcmp (table[i].locale, locale) == 0.  */
 1125|       |            codeset = table[mid].canonical;
 1126|       |            goto done_table_lookup;
 1127|       |          }
 1128|       |      }
 1129|       |    if (0)
 1130|       |      done_table_lookup: ;
 1131|       |    else
 1132|       |# endif
 1133|       |      {
 1134|       |        /* Did not find it in the table.  */
 1135|       |        /* On Mac OS X, all modern locales use the UTF-8 encoding.
 1136|       |           BeOS and Haiku have a single locale, and it has UTF-8 encoding.  */
 1137|       |# if (defined __APPLE__ && defined __MACH__) || defined __BEOS__ || defined __HAIKU__
 1138|       |        codeset = "UTF-8";
 1139|       |# else
 1140|       |        /* The canonical name cannot be determined.  */
 1141|       |        /* Don't return an empty string.  GNU libc and GNU libiconv interpret
 1142|       |           the empty string as denoting "the locale's character encoding",
 1143|       |           thus GNU libiconv would call this function a second time.  */
 1144|       |        codeset = "ASCII";
 1145|       |# endif
 1146|       |      }
 1147|       |  }
 1148|       |
 1149|       |#endif
 1150|       |
 1151|       |#ifdef DARWIN7
 1152|       |  /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8"
 1153|       |     (the default codeset) does not work when MB_CUR_MAX is 1.  */
 1154|       |  if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX_L (uselocale (NULL)) <= 1)
 1155|       |    codeset = "ASCII";
 1156|       |#endif
 1157|       |
 1158|  4.74k|  return codeset;
 1159|  4.74k|}

quote_n_mem:
 1053|  2.37k|{
 1054|  2.37k|  return quotearg_n_options (n, arg, argsize, &quote_quoting_options);
 1055|  2.37k|}
quote_n:
 1065|  2.37k|{
 1066|  2.37k|  return quote_n_mem (n, arg, SIZE_MAX);
 1067|  2.37k|}
quote:
 1071|  2.37k|{
 1072|  2.37k|  return quote_n (0, arg);
 1073|  2.37k|}
quotearg.c:quotearg_buffer_restyled:
  254|  2.37k|{
  255|  2.37k|  size_t i;
  256|  2.37k|  size_t len = 0;
  257|  2.37k|  size_t orig_buffersize = 0;
  258|  2.37k|  char const *quote_string = 0;
  259|  2.37k|  size_t quote_string_len = 0;
  260|  2.37k|  bool backslash_escapes = false;
  261|  2.37k|  bool unibyte_locale = MB_CUR_MAX == 1;
  262|  2.37k|  bool elide_outer_quotes = (flags & QA_ELIDE_OUTER_QUOTES) != 0;
  263|  2.37k|  bool pending_shell_escape_end = false;
  264|  2.37k|  bool encountered_single_quote = false;
  265|  2.37k|  bool all_c_and_shell_quote_compat = true;
  266|       |
  267|  2.37k|#define STORE(c) \
  268|  2.37k|    do \
  269|  2.37k|      { \
  270|  2.37k|        if (len < buffersize) \
  271|  2.37k|          buffer[len] = (c); \
  272|  2.37k|        len++; \
  273|  2.37k|      } \
  274|  2.37k|    while (0)
  275|       |
  276|  2.37k|#define START_ESC() \
  277|  2.37k|    do \
  278|  2.37k|      { \
  279|  2.37k|        if (elide_outer_quotes) \
  280|  2.37k|          goto force_outer_quoting_style; \
  281|  2.37k|        escaping = true; \
  282|  2.37k|        if (quoting_style == shell_always_quoting_style \
  283|  2.37k|            && ! pending_shell_escape_end) \
  284|  2.37k|          { \
  285|  2.37k|            STORE ('\''); \
  286|  2.37k|            STORE ('$'); \
  287|  2.37k|            STORE ('\''); \
  288|  2.37k|            pending_shell_escape_end = true; \
  289|  2.37k|          } \
  290|  2.37k|        STORE ('\\'); \
  291|  2.37k|      } \
  292|  2.37k|    while (0)
  293|       |
  294|  2.37k|#define END_ESC() \
  295|  2.37k|    do \
  296|  2.37k|      { \
  297|  2.37k|        if (pending_shell_escape_end && ! escaping) \
  298|  2.37k|          { \
  299|  2.37k|            STORE ('\''); \
  300|  2.37k|            STORE ('\''); \
  301|  2.37k|            pending_shell_escape_end = false; \
  302|  2.37k|          } \
  303|  2.37k|      } \
  304|  2.37k|    while (0)
  305|       |
  306|  2.37k| process_input:
  307|       |
  308|  2.37k|  switch (quoting_style)
  309|  2.37k|    {
  310|      0|    case c_maybe_quoting_style:
  ------------------
  |  Branch (310:5): [True: 0, False: 2.37k]
  ------------------
  311|      0|      quoting_style = c_quoting_style;
  312|      0|      elide_outer_quotes = true;
  313|      0|      FALLTHROUGH;
  ------------------
  |  |  150|      0|#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
  |  |  ------------------
  |  |  |  | 2671|      0|#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
  |  |  ------------------
  ------------------
  314|      0|    case c_quoting_style:
  ------------------
  |  Branch (314:5): [True: 0, False: 2.37k]
  ------------------
  315|      0|      if (!elide_outer_quotes)
  ------------------
  |  Branch (315:11): [True: 0, False: 0]
  ------------------
  316|      0|        STORE ('"');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  317|      0|      backslash_escapes = true;
  318|      0|      quote_string = "\"";
  319|      0|      quote_string_len = 1;
  320|      0|      break;
  321|       |
  322|      0|    case escape_quoting_style:
  ------------------
  |  Branch (322:5): [True: 0, False: 2.37k]
  ------------------
  323|      0|      backslash_escapes = true;
  324|      0|      elide_outer_quotes = false;
  325|      0|      break;
  326|       |
  327|  2.37k|    case locale_quoting_style:
  ------------------
  |  Branch (327:5): [True: 2.37k, False: 0]
  ------------------
  328|  2.37k|    case clocale_quoting_style:
  ------------------
  |  Branch (328:5): [True: 0, False: 2.37k]
  ------------------
  329|  2.37k|    case custom_quoting_style:
  ------------------
  |  Branch (329:5): [True: 0, False: 2.37k]
  ------------------
  330|  2.37k|      {
  331|  2.37k|        if (quoting_style != custom_quoting_style)
  ------------------
  |  Branch (331:13): [True: 2.37k, False: 0]
  ------------------
  332|  2.37k|          {
  333|       |            /* TRANSLATORS:
  334|       |               Get translations for open and closing quotation marks.
  335|       |               The message catalog should translate "`" to a left
  336|       |               quotation mark suitable for the locale, and similarly for
  337|       |               "'".  For example, a French Unicode local should translate
  338|       |               these to U+00AB (LEFT-POINTING DOUBLE ANGLE
  339|       |               QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
  340|       |               QUOTATION MARK), respectively.
  341|       |
  342|       |               If the catalog has no translation, we will try to
  343|       |               use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
  344|       |               Unicode U+2019 (RIGHT SINGLE QUOTATION MARK).  If the
  345|       |               current locale is not Unicode, locale_quoting_style
  346|       |               will quote 'like this', and clocale_quoting_style will
  347|       |               quote "like this".  You should always include translations
  348|       |               for "`" and "'" even if U+2018 and U+2019 are appropriate
  349|       |               for your locale.
  350|       |
  351|       |               If you don't know what to put here, please see
  352|       |               <https://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
  353|       |               and use glyphs suitable for your language.  */
  354|  2.37k|            left_quote = gettext_quote (N_("`"), quoting_style);
  ------------------
  |  |   49|  2.37k|#define N_(msgid) msgid
  ------------------
  355|  2.37k|            right_quote = gettext_quote (N_("'"), quoting_style);
  ------------------
  |  |   49|  2.37k|#define N_(msgid) msgid
  ------------------
  356|  2.37k|          }
  357|  2.37k|        if (!elide_outer_quotes)
  ------------------
  |  Branch (357:13): [True: 2.37k, False: 0]
  ------------------
  358|  4.74k|          for (quote_string = left_quote; *quote_string; quote_string++)
  ------------------
  |  Branch (358:43): [True: 2.37k, False: 2.37k]
  ------------------
  359|  2.37k|            STORE (*quote_string);
  ------------------
  |  |  268|  2.37k|    do \
  |  |  269|  2.37k|      { \
  |  |  270|  2.37k|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 2.37k, False: 0]
  |  |  ------------------
  |  |  271|  2.37k|          buffer[len] = (c); \
  |  |  272|  2.37k|        len++; \
  |  |  273|  2.37k|      } \
  |  |  274|  2.37k|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  360|  2.37k|        backslash_escapes = true;
  361|  2.37k|        quote_string = right_quote;
  362|  2.37k|        quote_string_len = strlen (quote_string);
  363|  2.37k|      }
  364|  2.37k|      break;
  365|       |
  366|      0|    case shell_escape_quoting_style:
  ------------------
  |  Branch (366:5): [True: 0, False: 2.37k]
  ------------------
  367|      0|      backslash_escapes = true;
  368|      0|      FALLTHROUGH;
  ------------------
  |  |  150|      0|#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
  |  |  ------------------
  |  |  |  | 2671|      0|#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
  |  |  ------------------
  ------------------
  369|      0|    case shell_quoting_style:
  ------------------
  |  Branch (369:5): [True: 0, False: 2.37k]
  ------------------
  370|      0|      elide_outer_quotes = true;
  371|      0|      FALLTHROUGH;
  ------------------
  |  |  150|      0|#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
  |  |  ------------------
  |  |  |  | 2671|      0|#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
  |  |  ------------------
  ------------------
  372|      0|    case shell_escape_always_quoting_style:
  ------------------
  |  Branch (372:5): [True: 0, False: 2.37k]
  ------------------
  373|      0|      if (!elide_outer_quotes)
  ------------------
  |  Branch (373:11): [True: 0, False: 0]
  ------------------
  374|      0|        backslash_escapes = true;
  375|      0|      FALLTHROUGH;
  ------------------
  |  |  150|      0|#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
  |  |  ------------------
  |  |  |  | 2671|      0|#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
  |  |  ------------------
  ------------------
  376|      0|    case shell_always_quoting_style:
  ------------------
  |  Branch (376:5): [True: 0, False: 2.37k]
  ------------------
  377|      0|      quoting_style = shell_always_quoting_style;
  378|      0|      if (!elide_outer_quotes)
  ------------------
  |  Branch (378:11): [True: 0, False: 0]
  ------------------
  379|      0|        STORE ('\'');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  380|      0|      quote_string = "'";
  381|      0|      quote_string_len = 1;
  382|      0|      break;
  383|       |
  384|      0|    case literal_quoting_style:
  ------------------
  |  Branch (384:5): [True: 0, False: 2.37k]
  ------------------
  385|      0|      elide_outer_quotes = false;
  386|      0|      break;
  387|       |
  388|      0|    default:
  ------------------
  |  Branch (388:5): [True: 0, False: 2.37k]
  ------------------
  389|      0|      abort ();
  390|  2.37k|    }
  391|       |
  392|  16.7k|  for (i = 0;  ! (argsize == SIZE_MAX ? arg[i] == '\0' : i == argsize);  i++)
  ------------------
  |  Branch (392:16): [True: 14.3k, False: 2.37k]
  |  Branch (392:19): [True: 16.7k, False: 0]
  ------------------
  393|  14.3k|    {
  394|  14.3k|      unsigned char c;
  395|  14.3k|      unsigned char esc;
  396|  14.3k|      bool is_right_quote = false;
  397|  14.3k|      bool escaping = false;
  398|  14.3k|      bool c_and_shell_quote_compat = false;
  399|       |
  400|  14.3k|      if (backslash_escapes
  ------------------
  |  Branch (400:11): [True: 14.3k, False: 0]
  ------------------
  401|  14.3k|          && quoting_style != shell_always_quoting_style
  ------------------
  |  Branch (401:14): [True: 14.3k, False: 0]
  ------------------
  402|  14.3k|          && quote_string_len
  ------------------
  |  Branch (402:14): [True: 14.3k, False: 0]
  ------------------
  403|  14.3k|          && (i + quote_string_len
  ------------------
  |  Branch (403:14): [True: 14.3k, False: 0]
  ------------------
  404|  14.3k|              <= (argsize == SIZE_MAX && 1 < quote_string_len
  ------------------
  |  Branch (404:19): [True: 14.3k, False: 0]
  |  Branch (404:42): [True: 0, False: 14.3k]
  ------------------
  405|       |                  /* Use strlen only if we must: when argsize is SIZE_MAX,
  406|       |                     and when the quote string is more than 1 byte long.
  407|       |                     If we do call strlen, save the result.  */
  408|  14.3k|                  ? (argsize = strlen (arg)) : argsize))
  409|  14.3k|          && memcmp (arg + i, quote_string, quote_string_len) == 0)
  ------------------
  |  Branch (409:14): [True: 0, False: 14.3k]
  ------------------
  410|      0|        {
  411|      0|          if (elide_outer_quotes)
  ------------------
  |  Branch (411:15): [True: 0, False: 0]
  ------------------
  412|      0|            goto force_outer_quoting_style;
  413|      0|          is_right_quote = true;
  414|      0|        }
  415|       |
  416|  14.3k|      c = arg[i];
  417|  14.3k|      switch (c)
  418|  14.3k|        {
  419|      0|        case '\0':
  ------------------
  |  Branch (419:9): [True: 0, False: 14.3k]
  ------------------
  420|      0|          if (backslash_escapes)
  ------------------
  |  Branch (420:15): [True: 0, False: 0]
  ------------------
  421|      0|            {
  422|      0|              START_ESC ();
  ------------------
  |  |  277|      0|    do \
  |  |  278|      0|      { \
  |  |  279|      0|        if (elide_outer_quotes) \
  |  |  ------------------
  |  |  |  Branch (279:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  280|      0|          goto force_outer_quoting_style; \
  |  |  281|      0|        escaping = true; \
  |  |  282|      0|        if (quoting_style == shell_always_quoting_style \
  |  |  ------------------
  |  |  |  Branch (282:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  283|      0|            && ! pending_shell_escape_end) \
  |  |  ------------------
  |  |  |  Branch (283:16): [True: 0, False: 0]
  |  |  ------------------
  |  |  284|      0|          { \
  |  |  285|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  286|      0|            STORE ('$'); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  287|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  288|      0|            pending_shell_escape_end = true; \
  |  |  289|      0|          } \
  |  |  290|      0|        STORE ('\\'); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  291|      0|      } \
  |  |  292|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (292:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  423|       |              /* If quote_string were to begin with digits, we'd need to
  424|       |                 test for the end of the arg as well.  However, it's
  425|       |                 hard to imagine any locale that would use digits in
  426|       |                 quotes, and set_custom_quoting is documented not to
  427|       |                 accept them.  Use only a single \0 with shell-escape
  428|       |                 as currently digits are not printed within $'...'  */
  429|      0|              if (quoting_style != shell_always_quoting_style
  ------------------
  |  Branch (429:19): [True: 0, False: 0]
  ------------------
  430|      0|                  && i + 1 < argsize && '0' <= arg[i + 1] && arg[i + 1] <= '9')
  ------------------
  |  Branch (430:22): [True: 0, False: 0]
  |  Branch (430:41): [True: 0, False: 0]
  |  Branch (430:62): [True: 0, False: 0]
  ------------------
  431|      0|                {
  432|      0|                  STORE ('0');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  433|      0|                  STORE ('0');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  434|      0|                }
  435|      0|              c = '0';
  436|       |              /* We don't have to worry that this last '0' will be
  437|       |                 backslash-escaped because, again, quote_string should
  438|       |                 not start with it and because quote_these_too is
  439|       |                 documented as not accepting it.  */
  440|      0|            }
  441|      0|          else if (flags & QA_ELIDE_NULL_BYTES)
  ------------------
  |  Branch (441:20): [True: 0, False: 0]
  ------------------
  442|      0|            continue;
  443|      0|          break;
  444|       |
  445|      0|        case '?':
  ------------------
  |  Branch (445:9): [True: 0, False: 14.3k]
  ------------------
  446|      0|          switch (quoting_style)
  447|      0|            {
  448|      0|            case shell_always_quoting_style:
  ------------------
  |  Branch (448:13): [True: 0, False: 0]
  ------------------
  449|      0|              if (elide_outer_quotes)
  ------------------
  |  Branch (449:19): [True: 0, False: 0]
  ------------------
  450|      0|                goto force_outer_quoting_style;
  451|      0|              break;
  452|       |
  453|      0|            case c_quoting_style:
  ------------------
  |  Branch (453:13): [True: 0, False: 0]
  ------------------
  454|      0|              if ((flags & QA_SPLIT_TRIGRAPHS)
  ------------------
  |  Branch (454:19): [True: 0, False: 0]
  ------------------
  455|      0|                  && i + 2 < argsize && arg[i + 1] == '?')
  ------------------
  |  Branch (455:22): [True: 0, False: 0]
  |  Branch (455:41): [True: 0, False: 0]
  ------------------
  456|      0|                switch (arg[i + 2])
  457|      0|                  {
  458|      0|                  case '!': case '\'':
  ------------------
  |  Branch (458:19): [True: 0, False: 0]
  |  Branch (458:29): [True: 0, False: 0]
  ------------------
  459|      0|                  case '(': case ')': case '-': case '/':
  ------------------
  |  Branch (459:19): [True: 0, False: 0]
  |  Branch (459:29): [True: 0, False: 0]
  |  Branch (459:39): [True: 0, False: 0]
  |  Branch (459:49): [True: 0, False: 0]
  ------------------
  460|      0|                  case '<': case '=': case '>':
  ------------------
  |  Branch (460:19): [True: 0, False: 0]
  |  Branch (460:29): [True: 0, False: 0]
  |  Branch (460:39): [True: 0, False: 0]
  ------------------
  461|       |                    /* Escape the second '?' in what would otherwise be
  462|       |                       a trigraph.  */
  463|      0|                    if (elide_outer_quotes)
  ------------------
  |  Branch (463:25): [True: 0, False: 0]
  ------------------
  464|      0|                      goto force_outer_quoting_style;
  465|      0|                    c = arg[i + 2];
  466|      0|                    i += 2;
  467|      0|                    STORE ('?');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  468|      0|                    STORE ('"');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  469|      0|                    STORE ('"');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  470|      0|                    STORE ('?');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  471|      0|                    break;
  472|       |
  473|      0|                  default:
  ------------------
  |  Branch (473:19): [True: 0, False: 0]
  ------------------
  474|      0|                    break;
  475|      0|                  }
  476|      0|              break;
  477|       |
  478|      0|            default:
  ------------------
  |  Branch (478:13): [True: 0, False: 0]
  ------------------
  479|      0|              break;
  480|      0|            }
  481|      0|          break;
  482|       |
  483|      0|        case '\a': esc = 'a'; goto c_escape;
  ------------------
  |  Branch (483:9): [True: 0, False: 14.3k]
  ------------------
  484|      0|        case '\b': esc = 'b'; goto c_escape;
  ------------------
  |  Branch (484:9): [True: 0, False: 14.3k]
  ------------------
  485|      0|        case '\f': esc = 'f'; goto c_escape;
  ------------------
  |  Branch (485:9): [True: 0, False: 14.3k]
  ------------------
  486|      0|        case '\n': esc = 'n'; goto c_and_shell_escape;
  ------------------
  |  Branch (486:9): [True: 0, False: 14.3k]
  ------------------
  487|      0|        case '\r': esc = 'r'; goto c_and_shell_escape;
  ------------------
  |  Branch (487:9): [True: 0, False: 14.3k]
  ------------------
  488|      0|        case '\t': esc = 't'; goto c_and_shell_escape;
  ------------------
  |  Branch (488:9): [True: 0, False: 14.3k]
  ------------------
  489|      0|        case '\v': esc = 'v'; goto c_escape;
  ------------------
  |  Branch (489:9): [True: 0, False: 14.3k]
  ------------------
  490|      0|        case '\\': esc = c;
  ------------------
  |  Branch (490:9): [True: 0, False: 14.3k]
  ------------------
  491|       |          /* Never need to escape '\' in shell case.  */
  492|      0|          if (quoting_style == shell_always_quoting_style)
  ------------------
  |  Branch (492:15): [True: 0, False: 0]
  ------------------
  493|      0|            {
  494|      0|              if (elide_outer_quotes)
  ------------------
  |  Branch (494:19): [True: 0, False: 0]
  ------------------
  495|      0|                goto force_outer_quoting_style;
  496|      0|              goto store_c;
  497|      0|            }
  498|       |
  499|       |          /* No need to escape the escape if we are trying to elide
  500|       |             outer quotes and nothing else is problematic.  */
  501|      0|          if (backslash_escapes && elide_outer_quotes && quote_string_len)
  ------------------
  |  Branch (501:15): [True: 0, False: 0]
  |  Branch (501:36): [True: 0, False: 0]
  |  Branch (501:58): [True: 0, False: 0]
  ------------------
  502|      0|            goto store_c;
  503|       |
  504|      0|        c_and_shell_escape:
  505|      0|          if (quoting_style == shell_always_quoting_style
  ------------------
  |  Branch (505:15): [True: 0, False: 0]
  ------------------
  506|      0|              && elide_outer_quotes)
  ------------------
  |  Branch (506:18): [True: 0, False: 0]
  ------------------
  507|      0|            goto force_outer_quoting_style;
  508|       |          /* fall through */
  509|      0|        c_escape:
  510|      0|          if (backslash_escapes)
  ------------------
  |  Branch (510:15): [True: 0, False: 0]
  ------------------
  511|      0|            {
  512|      0|              c = esc;
  513|      0|              goto store_escape;
  514|      0|            }
  515|      0|          break;
  516|       |
  517|      0|        case '{': case '}': /* sometimes special if isolated */
  ------------------
  |  Branch (517:9): [True: 0, False: 14.3k]
  |  Branch (517:19): [True: 0, False: 14.3k]
  ------------------
  518|      0|          if (! (argsize == SIZE_MAX ? arg[1] == '\0' : argsize == 1))
  ------------------
  |  Branch (518:15): [True: 0, False: 0]
  |  Branch (518:18): [True: 0, False: 0]
  ------------------
  519|      0|            break;
  520|      0|          FALLTHROUGH;
  ------------------
  |  |  150|      0|#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
  |  |  ------------------
  |  |  |  | 2671|      0|#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
  |  |  ------------------
  ------------------
  521|      0|        case '#': case '~':
  ------------------
  |  Branch (521:9): [True: 0, False: 14.3k]
  |  Branch (521:19): [True: 0, False: 14.3k]
  ------------------
  522|      0|          if (i != 0)
  ------------------
  |  Branch (522:15): [True: 0, False: 0]
  ------------------
  523|      0|            break;
  524|      0|          FALLTHROUGH;
  ------------------
  |  |  150|      0|#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
  |  |  ------------------
  |  |  |  | 2671|      0|#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
  |  |  ------------------
  ------------------
  525|      0|        case ' ':
  ------------------
  |  Branch (525:9): [True: 0, False: 14.3k]
  ------------------
  526|      0|          c_and_shell_quote_compat = true;
  527|      0|          FALLTHROUGH;
  ------------------
  |  |  150|      0|#define FALLTHROUGH _GL_ATTRIBUTE_FALLTHROUGH
  |  |  ------------------
  |  |  |  | 2671|      0|#  define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
  |  |  ------------------
  ------------------
  528|      0|        case '!': /* special in bash */
  ------------------
  |  Branch (528:9): [True: 0, False: 14.3k]
  ------------------
  529|      0|        case '"': case '$': case '&':
  ------------------
  |  Branch (529:9): [True: 0, False: 14.3k]
  |  Branch (529:19): [True: 0, False: 14.3k]
  |  Branch (529:29): [True: 0, False: 14.3k]
  ------------------
  530|      0|        case '(': case ')': case '*': case ';':
  ------------------
  |  Branch (530:9): [True: 0, False: 14.3k]
  |  Branch (530:19): [True: 0, False: 14.3k]
  |  Branch (530:29): [True: 0, False: 14.3k]
  |  Branch (530:39): [True: 0, False: 14.3k]
  ------------------
  531|      0|        case '<':
  ------------------
  |  Branch (531:9): [True: 0, False: 14.3k]
  ------------------
  532|      0|        case '=': /* sometimes special in 0th or (with "set -k") later args */
  ------------------
  |  Branch (532:9): [True: 0, False: 14.3k]
  ------------------
  533|      0|        case '>': case '[':
  ------------------
  |  Branch (533:9): [True: 0, False: 14.3k]
  |  Branch (533:19): [True: 0, False: 14.3k]
  ------------------
  534|      0|        case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */
  ------------------
  |  Branch (534:9): [True: 0, False: 14.3k]
  ------------------
  535|      0|        case '`': case '|':
  ------------------
  |  Branch (535:9): [True: 0, False: 14.3k]
  |  Branch (535:19): [True: 0, False: 14.3k]
  ------------------
  536|       |          /* A shell special character.  In theory, '$' and '`' could
  537|       |             be the first bytes of multibyte characters, which means
  538|       |             we should check them with mbrtowc, but in practice this
  539|       |             doesn't happen so it's not worth worrying about.  */
  540|      0|          if (quoting_style == shell_always_quoting_style
  ------------------
  |  Branch (540:15): [True: 0, False: 0]
  ------------------
  541|      0|              && elide_outer_quotes)
  ------------------
  |  Branch (541:18): [True: 0, False: 0]
  ------------------
  542|      0|            goto force_outer_quoting_style;
  543|      0|          break;
  544|       |
  545|      0|        case '\'':
  ------------------
  |  Branch (545:9): [True: 0, False: 14.3k]
  ------------------
  546|      0|          encountered_single_quote = true;
  547|      0|          c_and_shell_quote_compat = true;
  548|      0|          if (quoting_style == shell_always_quoting_style)
  ------------------
  |  Branch (548:15): [True: 0, False: 0]
  ------------------
  549|      0|            {
  550|      0|              if (elide_outer_quotes)
  ------------------
  |  Branch (550:19): [True: 0, False: 0]
  ------------------
  551|      0|                goto force_outer_quoting_style;
  552|       |
  553|      0|              if (buffersize && ! orig_buffersize)
  ------------------
  |  Branch (553:19): [True: 0, False: 0]
  |  Branch (553:33): [True: 0, False: 0]
  ------------------
  554|      0|                {
  555|       |                  /* Just scan string to see if supports a more concise
  556|       |                     representation, rather than writing a longer string
  557|       |                     but returning the length of the more concise form.  */
  558|      0|                  orig_buffersize = buffersize;
  559|      0|                  buffersize = 0;
  560|      0|                }
  561|       |
  562|      0|              STORE ('\'');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  563|      0|              STORE ('\\');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  564|      0|              STORE ('\'');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  565|      0|              pending_shell_escape_end = false;
  566|      0|            }
  567|      0|          break;
  568|       |
  569|      0|        case '%': case '+': case ',': case '-': case '.': case '/':
  ------------------
  |  Branch (569:9): [True: 0, False: 14.3k]
  |  Branch (569:19): [True: 0, False: 14.3k]
  |  Branch (569:29): [True: 0, False: 14.3k]
  |  Branch (569:39): [True: 0, False: 14.3k]
  |  Branch (569:49): [True: 0, False: 14.3k]
  |  Branch (569:59): [True: 0, False: 14.3k]
  ------------------
  570|      0|        case '0': case '1': case '2': case '3': case '4': case '5':
  ------------------
  |  Branch (570:9): [True: 0, False: 14.3k]
  |  Branch (570:19): [True: 0, False: 14.3k]
  |  Branch (570:29): [True: 0, False: 14.3k]
  |  Branch (570:39): [True: 0, False: 14.3k]
  |  Branch (570:49): [True: 0, False: 14.3k]
  |  Branch (570:59): [True: 0, False: 14.3k]
  ------------------
  571|      0|        case '6': case '7': case '8': case '9': case ':':
  ------------------
  |  Branch (571:9): [True: 0, False: 14.3k]
  |  Branch (571:19): [True: 0, False: 14.3k]
  |  Branch (571:29): [True: 0, False: 14.3k]
  |  Branch (571:39): [True: 0, False: 14.3k]
  |  Branch (571:49): [True: 0, False: 14.3k]
  ------------------
  572|      0|        case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
  ------------------
  |  Branch (572:9): [True: 0, False: 14.3k]
  |  Branch (572:19): [True: 0, False: 14.3k]
  |  Branch (572:29): [True: 0, False: 14.3k]
  |  Branch (572:39): [True: 0, False: 14.3k]
  |  Branch (572:49): [True: 0, False: 14.3k]
  |  Branch (572:59): [True: 0, False: 14.3k]
  ------------------
  573|      0|        case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
  ------------------
  |  Branch (573:9): [True: 0, False: 14.3k]
  |  Branch (573:19): [True: 0, False: 14.3k]
  |  Branch (573:29): [True: 0, False: 14.3k]
  |  Branch (573:39): [True: 0, False: 14.3k]
  |  Branch (573:49): [True: 0, False: 14.3k]
  |  Branch (573:59): [True: 0, False: 14.3k]
  ------------------
  574|      0|        case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
  ------------------
  |  Branch (574:9): [True: 0, False: 14.3k]
  |  Branch (574:19): [True: 0, False: 14.3k]
  |  Branch (574:29): [True: 0, False: 14.3k]
  |  Branch (574:39): [True: 0, False: 14.3k]
  |  Branch (574:49): [True: 0, False: 14.3k]
  |  Branch (574:59): [True: 0, False: 14.3k]
  ------------------
  575|      0|        case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
  ------------------
  |  Branch (575:9): [True: 0, False: 14.3k]
  |  Branch (575:19): [True: 0, False: 14.3k]
  |  Branch (575:29): [True: 0, False: 14.3k]
  |  Branch (575:39): [True: 0, False: 14.3k]
  |  Branch (575:49): [True: 0, False: 14.3k]
  |  Branch (575:59): [True: 0, False: 14.3k]
  ------------------
  576|  1.14k|        case 'Y': case 'Z': case ']': case '_': case 'a': case 'b':
  ------------------
  |  Branch (576:9): [True: 0, False: 14.3k]
  |  Branch (576:19): [True: 0, False: 14.3k]
  |  Branch (576:29): [True: 0, False: 14.3k]
  |  Branch (576:39): [True: 0, False: 14.3k]
  |  Branch (576:49): [True: 1.14k, False: 13.2k]
  |  Branch (576:59): [True: 0, False: 14.3k]
  ------------------
  577|  4.33k|        case 'c': case 'd': case 'e': case 'f': case 'g': case 'h':
  ------------------
  |  Branch (577:9): [True: 1.35k, False: 12.9k]
  |  Branch (577:19): [True: 659, False: 13.6k]
  |  Branch (577:29): [True: 391, False: 13.9k]
  |  Branch (577:39): [True: 391, False: 13.9k]
  |  Branch (577:49): [True: 392, False: 13.9k]
  |  Branch (577:59): [True: 0, False: 14.3k]
  ------------------
  578|  5.99k|        case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
  ------------------
  |  Branch (578:9): [True: 392, False: 13.9k]
  |  Branch (578:19): [True: 0, False: 14.3k]
  |  Branch (578:29): [True: 0, False: 14.3k]
  |  Branch (578:39): [True: 392, False: 13.9k]
  |  Branch (578:49): [True: 0, False: 14.3k]
  |  Branch (578:59): [True: 876, False: 13.4k]
  ------------------
  579|  13.2k|        case 'o': case 'p': case 'q': case 'r': case 's': case 't':
  ------------------
  |  Branch (579:9): [True: 2.37k, False: 11.9k]
  |  Branch (579:19): [True: 1.10k, False: 13.2k]
  |  Branch (579:29): [True: 0, False: 14.3k]
  |  Branch (579:39): [True: 1.49k, False: 12.8k]
  |  Branch (579:49): [True: 1.31k, False: 13.0k]
  |  Branch (579:59): [True: 928, False: 13.4k]
  ------------------
  580|  14.3k|        case 'u': case 'v': case 'w': case 'x': case 'y': case 'z':
  ------------------
  |  Branch (580:9): [True: 484, False: 13.8k]
  |  Branch (580:19): [True: 0, False: 14.3k]
  |  Branch (580:29): [True: 659, False: 13.6k]
  |  Branch (580:39): [True: 0, False: 14.3k]
  |  Branch (580:49): [True: 0, False: 14.3k]
  |  Branch (580:59): [True: 0, False: 14.3k]
  ------------------
  581|       |          /* These characters don't cause problems, no matter what the
  582|       |             quoting style is.  They cannot start multibyte sequences.
  583|       |             A digit or a special letter would cause trouble if it
  584|       |             appeared at the beginning of quote_string because we'd then
  585|       |             escape by prepending a backslash.  However, it's hard to
  586|       |             imagine any locale that would use digits or letters as
  587|       |             quotes, and set_custom_quoting is documented not to accept
  588|       |             them.  Also, a digit or a special letter would cause
  589|       |             trouble if it appeared in quote_these_too, but that's also
  590|       |             documented as not accepting them.  */
  591|  14.3k|          c_and_shell_quote_compat = true;
  592|  14.3k|          break;
  593|       |
  594|      0|        default:
  ------------------
  |  Branch (594:9): [True: 0, False: 14.3k]
  ------------------
  595|       |          /* If we have a multibyte sequence, copy it until we reach
  596|       |             its end, find an error, or come back to the initial shift
  597|       |             state.  For C-like styles, if the sequence has
  598|       |             unprintable characters, escape the whole sequence, since
  599|       |             we can't easily escape single characters within it.  */
  600|      0|          {
  601|       |            /* Length of multibyte sequence found so far.  */
  602|      0|            size_t m;
  603|       |
  604|      0|            bool printable;
  605|       |
  606|      0|            if (unibyte_locale)
  ------------------
  |  Branch (606:17): [True: 0, False: 0]
  ------------------
  607|      0|              {
  608|      0|                m = 1;
  609|      0|                printable = isprint (c) != 0;
  610|      0|              }
  611|      0|            else
  612|      0|              {
  613|      0|                mbstate_t mbstate;
  614|      0|                memset (&mbstate, 0, sizeof mbstate);
  615|       |
  616|      0|                m = 0;
  617|      0|                printable = true;
  618|      0|                if (argsize == SIZE_MAX)
  ------------------
  |  Branch (618:21): [True: 0, False: 0]
  ------------------
  619|      0|                  argsize = strlen (arg);
  620|       |
  621|      0|                do
  622|      0|                  {
  623|      0|                    wchar_t w;
  624|      0|                    size_t bytes = mbrtowc (&w, &arg[i + m],
  625|      0|                                            argsize - (i + m), &mbstate);
  626|      0|                    if (bytes == 0)
  ------------------
  |  Branch (626:25): [True: 0, False: 0]
  ------------------
  627|      0|                      break;
  628|      0|                    else if (bytes == (size_t) -1)
  ------------------
  |  Branch (628:30): [True: 0, False: 0]
  ------------------
  629|      0|                      {
  630|      0|                        printable = false;
  631|      0|                        break;
  632|      0|                      }
  633|      0|                    else if (bytes == (size_t) -2)
  ------------------
  |  Branch (633:30): [True: 0, False: 0]
  ------------------
  634|      0|                      {
  635|      0|                        printable = false;
  636|      0|                        while (i + m < argsize && arg[i + m])
  ------------------
  |  Branch (636:32): [True: 0, False: 0]
  |  Branch (636:51): [True: 0, False: 0]
  ------------------
  637|      0|                          m++;
  638|      0|                        break;
  639|      0|                      }
  640|      0|                    else
  641|      0|                      {
  642|       |                        /* Work around a bug with older shells that "see" a '\'
  643|       |                           that is really the 2nd byte of a multibyte character.
  644|       |                           In practice the problem is limited to ASCII
  645|       |                           chars >= '@' that are shell special chars.  */
  646|      0|                        if ('[' == 0x5b && elide_outer_quotes
  ------------------
  |  Branch (646:29): [Folded - Ignored]
  |  Branch (646:44): [True: 0, False: 0]
  ------------------
  647|      0|                            && quoting_style == shell_always_quoting_style)
  ------------------
  |  Branch (647:32): [True: 0, False: 0]
  ------------------
  648|      0|                          {
  649|      0|                            size_t j;
  650|      0|                            for (j = 1; j < bytes; j++)
  ------------------
  |  Branch (650:41): [True: 0, False: 0]
  ------------------
  651|      0|                              switch (arg[i + m + j])
  652|      0|                                {
  653|      0|                                case '[': case '\\': case '^':
  ------------------
  |  Branch (653:33): [True: 0, False: 0]
  |  Branch (653:43): [True: 0, False: 0]
  |  Branch (653:54): [True: 0, False: 0]
  ------------------
  654|      0|                                case '`': case '|':
  ------------------
  |  Branch (654:33): [True: 0, False: 0]
  |  Branch (654:43): [True: 0, False: 0]
  ------------------
  655|      0|                                  goto force_outer_quoting_style;
  656|       |
  657|      0|                                default:
  ------------------
  |  Branch (657:33): [True: 0, False: 0]
  ------------------
  658|      0|                                  break;
  659|      0|                                }
  660|      0|                          }
  661|       |
  662|      0|                        if (! iswprint (w))
  ------------------
  |  Branch (662:29): [True: 0, False: 0]
  ------------------
  663|      0|                          printable = false;
  664|      0|                        m += bytes;
  665|      0|                      }
  666|      0|                  }
  667|      0|                while (! mbsinit (&mbstate));
  ------------------
  |  Branch (667:24): [True: 0, False: 0]
  ------------------
  668|      0|              }
  669|       |
  670|      0|            c_and_shell_quote_compat = printable;
  671|       |
  672|      0|            if (1 < m || (backslash_escapes && ! printable))
  ------------------
  |  Branch (672:17): [True: 0, False: 0]
  |  Branch (672:27): [True: 0, False: 0]
  |  Branch (672:48): [True: 0, False: 0]
  ------------------
  673|      0|              {
  674|       |                /* Output a multibyte sequence, or an escaped
  675|       |                   unprintable unibyte character.  */
  676|      0|                size_t ilim = i + m;
  677|       |
  678|      0|                for (;;)
  679|      0|                  {
  680|      0|                    if (backslash_escapes && ! printable)
  ------------------
  |  Branch (680:25): [True: 0, False: 0]
  |  Branch (680:46): [True: 0, False: 0]
  ------------------
  681|      0|                      {
  682|      0|                        START_ESC ();
  ------------------
  |  |  277|      0|    do \
  |  |  278|      0|      { \
  |  |  279|      0|        if (elide_outer_quotes) \
  |  |  ------------------
  |  |  |  Branch (279:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  280|      0|          goto force_outer_quoting_style; \
  |  |  281|      0|        escaping = true; \
  |  |  282|      0|        if (quoting_style == shell_always_quoting_style \
  |  |  ------------------
  |  |  |  Branch (282:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  283|      0|            && ! pending_shell_escape_end) \
  |  |  ------------------
  |  |  |  Branch (283:16): [True: 0, False: 0]
  |  |  ------------------
  |  |  284|      0|          { \
  |  |  285|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  286|      0|            STORE ('$'); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  287|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  288|      0|            pending_shell_escape_end = true; \
  |  |  289|      0|          } \
  |  |  290|      0|        STORE ('\\'); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  291|      0|      } \
  |  |  292|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (292:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  683|      0|                        STORE ('0' + (c >> 6));
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  684|      0|                        STORE ('0' + ((c >> 3) & 7));
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  685|      0|                        c = '0' + (c & 7);
  686|      0|                      }
  687|      0|                    else if (is_right_quote)
  ------------------
  |  Branch (687:30): [True: 0, False: 0]
  ------------------
  688|      0|                      {
  689|      0|                        STORE ('\\');
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  690|      0|                        is_right_quote = false;
  691|      0|                      }
  692|      0|                    if (ilim <= i + 1)
  ------------------
  |  Branch (692:25): [True: 0, False: 0]
  ------------------
  693|      0|                      break;
  694|      0|                    END_ESC ();
  ------------------
  |  |  295|      0|    do \
  |  |  296|      0|      { \
  |  |  297|      0|        if (pending_shell_escape_end && ! escaping) \
  |  |  ------------------
  |  |  |  Branch (297:13): [True: 0, False: 0]
  |  |  |  Branch (297:41): [True: 0, False: 0]
  |  |  ------------------
  |  |  298|      0|          { \
  |  |  299|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  300|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  301|      0|            pending_shell_escape_end = false; \
  |  |  302|      0|          } \
  |  |  303|      0|      } \
  |  |  304|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (304:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  695|      0|                    STORE (c);
  ------------------
  |  |  268|      0|    do \
  |  |  269|      0|      { \
  |  |  270|      0|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  271|      0|          buffer[len] = (c); \
  |  |  272|      0|        len++; \
  |  |  273|      0|      } \
  |  |  274|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  696|      0|                    c = arg[++i];
  697|      0|                  }
  698|       |
  699|      0|                goto store_c;
  700|      0|              }
  701|      0|          }
  702|  14.3k|        }
  703|       |
  704|  14.3k|      if (! (((backslash_escapes && quoting_style != shell_always_quoting_style)
  ------------------
  |  Branch (704:16): [True: 14.3k, False: 0]
  |  Branch (704:37): [True: 14.3k, False: 0]
  ------------------
  705|  14.3k|              || elide_outer_quotes)
  ------------------
  |  Branch (705:18): [True: 0, False: 0]
  ------------------
  706|  14.3k|             && quote_these_too
  ------------------
  |  Branch (706:17): [True: 14.3k, False: 0]
  ------------------
  707|  14.3k|             && quote_these_too[c / INT_BITS] >> (c % INT_BITS) & 1)
  ------------------
  |  |   55|  14.3k|#define INT_BITS (sizeof (int) * CHAR_BIT)
  ------------------
                           && quote_these_too[c / INT_BITS] >> (c % INT_BITS) & 1)
  ------------------
  |  |   55|  14.3k|#define INT_BITS (sizeof (int) * CHAR_BIT)
  ------------------
  |  Branch (707:17): [True: 0, False: 14.3k]
  ------------------
  708|  14.3k|          && !is_right_quote)
  ------------------
  |  Branch (708:14): [True: 14.3k, False: 0]
  ------------------
  709|  14.3k|        goto store_c;
  710|       |
  711|      0|    store_escape:
  712|      0|      START_ESC ();
  ------------------
  |  |  277|      0|    do \
  |  |  278|      0|      { \
  |  |  279|      0|        if (elide_outer_quotes) \
  |  |  ------------------
  |  |  |  Branch (279:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  280|      0|          goto force_outer_quoting_style; \
  |  |  281|      0|        escaping = true; \
  |  |  282|      0|        if (quoting_style == shell_always_quoting_style \
  |  |  ------------------
  |  |  |  Branch (282:13): [True: 0, False: 0]
  |  |  ------------------
  |  |  283|      0|            && ! pending_shell_escape_end) \
  |  |  ------------------
  |  |  |  Branch (283:16): [True: 0, False: 0]
  |  |  ------------------
  |  |  284|      0|          { \
  |  |  285|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  286|      0|            STORE ('$'); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  287|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  288|      0|            pending_shell_escape_end = true; \
  |  |  289|      0|          } \
  |  |  290|      0|        STORE ('\\'); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  291|      0|      } \
  |  |  292|      0|    while (0)
  |  |  ------------------
  |  |  |  Branch (292:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  713|       |
  714|  14.3k|    store_c:
  715|  14.3k|      END_ESC ();
  ------------------
  |  |  295|  14.3k|    do \
  |  |  296|  14.3k|      { \
  |  |  297|  14.3k|        if (pending_shell_escape_end && ! escaping) \
  |  |  ------------------
  |  |  |  Branch (297:13): [True: 0, False: 14.3k]
  |  |  |  Branch (297:41): [True: 0, False: 0]
  |  |  ------------------
  |  |  298|  14.3k|          { \
  |  |  299|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  300|      0|            STORE ('\''); \
  |  |  ------------------
  |  |  |  |  268|      0|    do \
  |  |  |  |  269|      0|      { \
  |  |  |  |  270|      0|        if (len < buffersize) \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (270:13): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  271|      0|          buffer[len] = (c); \
  |  |  |  |  272|      0|        len++; \
  |  |  |  |  273|      0|      } \
  |  |  |  |  274|      0|    while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  301|      0|            pending_shell_escape_end = false; \
  |  |  302|      0|          } \
  |  |  303|  14.3k|      } \
  |  |  304|  14.3k|    while (0)
  |  |  ------------------
  |  |  |  Branch (304:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  716|  14.3k|      STORE (c);
  ------------------
  |  |  268|  14.3k|    do \
  |  |  269|  14.3k|      { \
  |  |  270|  14.3k|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 14.3k, False: 0]
  |  |  ------------------
  |  |  271|  14.3k|          buffer[len] = (c); \
  |  |  272|  14.3k|        len++; \
  |  |  273|  14.3k|      } \
  |  |  274|  14.3k|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  717|       |
  718|  14.3k|      if (! c_and_shell_quote_compat)
  ------------------
  |  Branch (718:11): [True: 0, False: 14.3k]
  ------------------
  719|      0|        all_c_and_shell_quote_compat = false;
  720|  14.3k|    }
  721|       |
  722|  2.37k|  if (len == 0 && quoting_style == shell_always_quoting_style
  ------------------
  |  Branch (722:7): [True: 0, False: 2.37k]
  |  Branch (722:19): [True: 0, False: 0]
  ------------------
  723|  2.37k|      && elide_outer_quotes)
  ------------------
  |  Branch (723:10): [True: 0, False: 0]
  ------------------
  724|      0|    goto force_outer_quoting_style;
  725|       |
  726|       |  /* Single shell quotes (') are commonly enough used as an apostrophe,
  727|       |     that we attempt to minimize the quoting in this case.  Note itʼs
  728|       |     better to use the apostrophe modifier "\u02BC" if possible, as that
  729|       |     renders better and works with the word match regex \W+ etc.  */
  730|  2.37k|  if (quoting_style == shell_always_quoting_style && ! elide_outer_quotes
  ------------------
  |  Branch (730:7): [True: 0, False: 2.37k]
  |  Branch (730:54): [True: 0, False: 0]
  ------------------
  731|  2.37k|      && encountered_single_quote)
  ------------------
  |  Branch (731:10): [True: 0, False: 0]
  ------------------
  732|      0|    {
  733|      0|      if (all_c_and_shell_quote_compat)
  ------------------
  |  Branch (733:11): [True: 0, False: 0]
  ------------------
  734|      0|        return quotearg_buffer_restyled (buffer, orig_buffersize, arg, argsize,
  735|      0|                                         c_quoting_style,
  736|      0|                                         flags, quote_these_too,
  737|      0|                                         left_quote, right_quote);
  738|      0|      else if (! buffersize && orig_buffersize)
  ------------------
  |  Branch (738:16): [True: 0, False: 0]
  |  Branch (738:32): [True: 0, False: 0]
  ------------------
  739|      0|        {
  740|       |          /* Disable read-only scan, and reprocess to write quoted string.  */
  741|      0|          buffersize = orig_buffersize;
  742|      0|          len = 0;
  743|      0|          goto process_input;
  744|      0|        }
  745|      0|    }
  746|       |
  747|  2.37k|  if (quote_string && !elide_outer_quotes)
  ------------------
  |  Branch (747:7): [True: 2.37k, False: 0]
  |  Branch (747:23): [True: 2.37k, False: 0]
  ------------------
  748|  4.74k|    for (; *quote_string; quote_string++)
  ------------------
  |  Branch (748:12): [True: 2.37k, False: 2.37k]
  ------------------
  749|  2.37k|      STORE (*quote_string);
  ------------------
  |  |  268|  2.37k|    do \
  |  |  269|  2.37k|      { \
  |  |  270|  2.37k|        if (len < buffersize) \
  |  |  ------------------
  |  |  |  Branch (270:13): [True: 2.37k, False: 0]
  |  |  ------------------
  |  |  271|  2.37k|          buffer[len] = (c); \
  |  |  272|  2.37k|        len++; \
  |  |  273|  2.37k|      } \
  |  |  274|  2.37k|    while (0)
  |  |  ------------------
  |  |  |  Branch (274:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  750|       |
  751|  2.37k|  if (len < buffersize)
  ------------------
  |  Branch (751:7): [True: 2.37k, False: 0]
  ------------------
  752|  2.37k|    buffer[len] = '\0';
  753|  2.37k|  return len;
  754|       |
  755|      0| force_outer_quoting_style:
  756|       |  /* Don't reuse quote_these_too, since the addition of outer quotes
  757|       |     sufficiently quotes the specified characters.  */
  758|      0|  if (quoting_style == shell_always_quoting_style && backslash_escapes)
  ------------------
  |  Branch (758:7): [True: 0, False: 0]
  |  Branch (758:54): [True: 0, False: 0]
  ------------------
  759|      0|    quoting_style = shell_escape_always_quoting_style;
  760|      0|  return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
  761|      0|                                   quoting_style,
  762|      0|                                   flags & ~QA_ELIDE_OUTER_QUOTES, NULL,
  763|      0|                                   left_quote, right_quote);
  764|  2.37k|}
quotearg.c:gettext_quote:
  200|  4.74k|{
  201|  4.74k|  char const *translation = _(msgid);
  ------------------
  |  |   48|  4.74k|#define _(msgid) gettext (msgid)
  |  |  ------------------
  |  |  |  |   34|  4.74k|     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
  |  |  ------------------
  ------------------
  202|  4.74k|  char const *locale_code;
  203|       |
  204|  4.74k|  if (translation != msgid)
  ------------------
  |  Branch (204:7): [True: 0, False: 4.74k]
  ------------------
  205|      0|    return translation;
  206|       |
  207|       |  /* For UTF-8 and GB-18030, use single quotes U+2018 and U+2019.
  208|       |     Here is a list of other locales that include U+2018 and U+2019:
  209|       |
  210|       |        ISO-8859-7   0xA1                 KOI8-T       0x91
  211|       |        CP869        0x8B                 CP874        0x91
  212|       |        CP932        0x81 0x65            CP936        0xA1 0xAE
  213|       |        CP949        0xA1 0xAE            CP950        0xA1 0xA5
  214|       |        CP1250       0x91                 CP1251       0x91
  215|       |        CP1252       0x91                 CP1253       0x91
  216|       |        CP1254       0x91                 CP1255       0x91
  217|       |        CP1256       0x91                 CP1257       0x91
  218|       |        EUC-JP       0xA1 0xC6            EUC-KR       0xA1 0xAE
  219|       |        EUC-TW       0xA1 0xE4            BIG5         0xA1 0xA5
  220|       |        BIG5-HKSCS   0xA1 0xA5            EUC-CN       0xA1 0xAE
  221|       |        GBK          0xA1 0xAE            Georgian-PS  0x91
  222|       |        PT154        0x91
  223|       |
  224|       |     None of these is still in wide use; using iconv is overkill.  */
  225|  4.74k|  locale_code = locale_charset ();
  226|  4.74k|  if (STRCASEEQ (locale_code, "UTF-8", 'U','T','F','-','8',0,0,0,0))
  ------------------
  |  |  174|  4.74k|  strcaseeq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
  |  |  ------------------
  |  |  |  Branch (174:3): [True: 0, False: 4.74k]
  |  |  ------------------
  ------------------
  227|      0|    return msgid[0] == '`' ? "\xe2\x80\x98": "\xe2\x80\x99";
  ------------------
  |  Branch (227:12): [True: 0, False: 0]
  ------------------
  228|  4.74k|  if (STRCASEEQ (locale_code, "GB18030", 'G','B','1','8','0','3','0',0,0))
  ------------------
  |  |  174|  4.74k|  strcaseeq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
  |  |  ------------------
  |  |  |  Branch (174:3): [True: 0, False: 4.74k]
  |  |  ------------------
  ------------------
  229|      0|    return msgid[0] == '`' ? "\xa1\ae": "\xa1\xaf";
  ------------------
  |  Branch (229:12): [True: 0, False: 0]
  ------------------
  230|       |
  231|  4.74k|  return (s == clocale_quoting_style ? "\"" : "'");
  ------------------
  |  Branch (231:11): [True: 0, False: 4.74k]
  ------------------
  232|  4.74k|}
quotearg.c:quotearg_n_options:
  871|  2.37k|{
  872|  2.37k|  int e = errno;
  873|       |
  874|  2.37k|  struct slotvec *sv = slotvec;
  875|       |
  876|  2.37k|  int nslots_max = MIN (INT_MAX, IDX_MAX);
  877|  2.37k|  if (! (0 <= n && n < nslots_max))
  ------------------
  |  Branch (877:10): [True: 2.37k, False: 0]
  |  Branch (877:20): [True: 2.37k, False: 0]
  ------------------
  878|      0|    abort ();
  879|       |
  880|  2.37k|  if (nslots <= n)
  ------------------
  |  Branch (880:7): [True: 0, False: 2.37k]
  ------------------
  881|      0|    {
  882|      0|      bool preallocated = (sv == &slotvec0);
  883|      0|      idx_t new_nslots = nslots;
  884|       |
  885|      0|      slotvec = sv = xpalloc (preallocated ? NULL : sv, &new_nslots,
  ------------------
  |  Branch (885:31): [True: 0, False: 0]
  ------------------
  886|      0|                              n - nslots + 1, nslots_max, sizeof *sv);
  887|      0|      if (preallocated)
  ------------------
  |  Branch (887:11): [True: 0, False: 0]
  ------------------
  888|      0|        *sv = slotvec0;
  889|      0|      memset (sv + nslots, 0, (new_nslots - nslots) * sizeof *sv);
  890|      0|      nslots = new_nslots;
  891|      0|    }
  892|       |
  893|  2.37k|  {
  894|  2.37k|    size_t size = sv[n].size;
  895|  2.37k|    char *val = sv[n].val;
  896|       |    /* Elide embedded null bytes since we don't return a size.  */
  897|  2.37k|    int flags = options->flags | QA_ELIDE_NULL_BYTES;
  898|  2.37k|    size_t qsize = quotearg_buffer_restyled (val, size, arg, argsize,
  899|  2.37k|                                             options->style, flags,
  900|  2.37k|                                             options->quote_these_too,
  901|  2.37k|                                             options->left_quote,
  902|  2.37k|                                             options->right_quote);
  903|       |
  904|  2.37k|    if (size <= qsize)
  ------------------
  |  Branch (904:9): [True: 0, False: 2.37k]
  ------------------
  905|      0|      {
  906|      0|        sv[n].size = size = qsize + 1;
  907|      0|        if (val != slot0)
  ------------------
  |  Branch (907:13): [True: 0, False: 0]
  ------------------
  908|      0|          free (val);
  909|      0|        sv[n].val = val = xcharalloc (size);
  910|      0|        quotearg_buffer_restyled (val, size, arg, argsize, options->style,
  911|      0|                                  flags, options->quote_these_too,
  912|      0|                                  options->left_quote,
  913|      0|                                  options->right_quote);
  914|      0|      }
  915|       |
  916|  2.37k|    errno = e;
  917|  2.37k|    return val;
  918|  2.37k|  }
  919|  2.37k|}

xmalloc:
   44|  7.94k|{
   45|  7.94k|  return nonnull (malloc (s));
   46|  7.94k|}
xmemdup:
  313|  4.34k|{
  314|  4.34k|  return memcpy (xmalloc (s), p, s);
  315|  4.34k|}
xstrdup:
  338|  4.34k|{
  339|  4.34k|  return xmemdup (string, strlen (string) + 1);
  340|  4.34k|}
xmalloc.c:nonnull:
   34|  7.94k|{
   35|  7.94k|  if (!p)
  ------------------
  |  Branch (35:7): [True: 0, False: 7.94k]
  ------------------
   36|      0|    xalloc_die ();
   37|  7.94k|  return p;
   38|  7.94k|}

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|}
c_isspace:
  299|   139k|{
  300|   139k|  switch (c)
  301|   139k|    {
  302|  21.7k|    case ' ': case '\t': case '\n': case '\v': case '\f': case '\r':
  ------------------
  |  Branch (302:5): [True: 3.09k, False: 136k]
  |  Branch (302:15): [True: 620, False: 138k]
  |  Branch (302:26): [True: 16.2k, False: 123k]
  |  Branch (302:37): [True: 737, False: 138k]
  |  Branch (302:48): [True: 738, False: 138k]
  |  Branch (302:59): [True: 313, False: 139k]
  ------------------
  303|  21.7k|      return true;
  304|   117k|    default:
  ------------------
  |  Branch (304:5): [True: 117k, False: 21.7k]
  ------------------
  305|   117k|      return false;
  306|   139k|    }
  307|   139k|}
c_isupper:
  311|  9.48k|{
  312|  9.48k|  switch (c)
  313|  9.48k|    {
  314|  9.48k|    _C_CTYPE_UPPER:
  ------------------
  |  |  146|      0|#define _C_CTYPE_UPPER _C_CTYPE_LOWER_N ('A' - 'a')
  |  |  ------------------
  |  |  |  |  120|      0|   _C_CTYPE_LOWER_A_THRU_F_N(N): \
  |  |  |  |  ------------------
  |  |  |  |  |  |  117|      0|   case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (117:4): [True: 0, False: 9.48k]
  |  |  |  |  |  |  |  Branch (117:20): [True: 0, False: 9.48k]
  |  |  |  |  |  |  |  Branch (117:36): [True: 0, False: 9.48k]
  |  |  |  |  |  |  |  Branch (117:52): [True: 0, False: 9.48k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  118|      0|   case 'e' + (N): case 'f' + (N)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (118:4): [True: 0, False: 9.48k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (120:4): [True: 0, False: 9.48k]
  |  |  |  |  ------------------
  |  |  |  |  121|  4.74k|   case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (121:4): [True: 4.74k, False: 4.74k]
  |  |  |  |  |  Branch (121:20): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (121:36): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (121:52): [True: 0, False: 9.48k]
  |  |  |  |  ------------------
  |  |  |  |  122|  4.74k|   case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (122:4): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (122:20): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (122:36): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (122:52): [True: 0, False: 9.48k]
  |  |  |  |  ------------------
  |  |  |  |  123|  4.74k|   case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (123:4): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (123:20): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (123:36): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (123:52): [True: 0, False: 9.48k]
  |  |  |  |  ------------------
  |  |  |  |  124|  9.48k|   case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (124:4): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (124:20): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (124:36): [True: 4.74k, False: 4.74k]
  |  |  |  |  |  Branch (124:52): [True: 0, False: 9.48k]
  |  |  |  |  ------------------
  |  |  |  |  125|  9.48k|   case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (125:4): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (125:20): [True: 0, False: 9.48k]
  |  |  |  |  |  Branch (125:36): [True: 0, False: 9.48k]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  315|  9.48k|      return true;
  316|      0|    default:
  ------------------
  |  Branch (316:5): [True: 0, False: 9.48k]
  ------------------
  317|      0|      return false;
  318|  9.48k|    }
  319|  9.48k|}

netrc_cleanup:
   71|  1.57k|{
   72|  1.57k|  free_netrc (netrc_list);
   73|  1.57k|  processed_netrc = 0;
   74|  1.57k|}
search_netrc:
   86|  1.57k|{
   87|  1.57k|  acc_t *l;
   88|       |
   89|  1.57k|  if (!opt.netrc)
  ------------------
  |  Branch (89:7): [True: 0, False: 1.57k]
  ------------------
   90|      0|    return;
   91|       |  /* Find ~/.netrc.  */
   92|  1.57k|  if (!processed_netrc)
  ------------------
  |  Branch (92:7): [True: 1.57k, False: 0]
  ------------------
   93|  1.57k|    {
   94|       |#ifdef __VMS
   95|       |
   96|       |      int err;
   97|       |      struct stat buf;
   98|       |      char *path = "SYS$LOGIN:.netrc";
   99|       |
  100|       |      netrc_list = NULL;
  101|       |      processed_netrc = 1;
  102|       |
  103|       |      err = stat (path, &buf);
  104|       |      if (err == 0)
  105|       |        netrc_list = parse_netrc (path);
  106|       |
  107|       |#else /* def __VMS */
  108|       |
  109|  1.57k|      netrc_list = NULL;
  110|  1.57k|      processed_netrc = 1;
  111|       |
  112|  1.57k|      if (fp_netrc)
  ------------------
  |  Branch (112:11): [True: 1.57k, False: 0]
  ------------------
  113|  1.57k|        netrc_list = parse_netrc_fp (".netrc", fp_netrc);
  114|      0|      else if (opt.homedir)
  ------------------
  |  Branch (114:16): [True: 0, False: 0]
  ------------------
  115|      0|        {
  116|      0|          struct stat buf;
  117|      0|          char *path = aprintf ("%s/%s", opt.homedir, NETRC_FILE_NAME);
  ------------------
  |  |   48|      0|#  define NETRC_FILE_NAME ".netrc"
  ------------------
  118|      0|          if (stat (path, &buf) == 0)
  ------------------
  |  Branch (118:15): [True: 0, False: 0]
  ------------------
  119|      0|            netrc_list = parse_netrc (path);
  120|      0|          xfree (path);
  ------------------
  |  |   54|      0|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  121|      0|        }
  122|       |
  123|  1.57k|#endif /* def __VMS [else] */
  124|  1.57k|    }
  125|       |  /* If nothing to do...  */
  126|  1.57k|  if (!netrc_list)
  ------------------
  |  Branch (126:7): [True: 1.48k, False: 91]
  ------------------
  127|  1.48k|    return;
  128|       |  /* Acc and password found; all OK.  */
  129|     91|  if (*acc && *passwd)
  ------------------
  |  Branch (129:7): [True: 0, False: 91]
  |  Branch (129:15): [True: 0, False: 0]
  ------------------
  130|      0|    return;
  131|       |  /* Some data not given -- try finding the host.  */
  132|  2.10k|  for (l = netrc_list; l; l = l->next)
  ------------------
  |  Branch (132:24): [True: 2.01k, False: 89]
  ------------------
  133|  2.01k|    {
  134|  2.01k|      if (!l->host)
  ------------------
  |  Branch (134:11): [True: 1.27k, False: 743]
  ------------------
  135|  1.27k|        continue;
  136|    743|      else if (!strcasecmp (l->host, host))
  ------------------
  |  Branch (136:16): [True: 2, False: 741]
  ------------------
  137|      2|        break;
  138|  2.01k|    }
  139|     91|  if (l)
  ------------------
  |  Branch (139:7): [True: 2, False: 89]
  ------------------
  140|      2|    {
  141|      2|      if (*acc)
  ------------------
  |  Branch (141:11): [True: 0, False: 2]
  ------------------
  142|      0|        {
  143|       |          /* Looking for password in .netrc.  */
  144|      0|          if (!strcmp (l->acc, *acc))
  ------------------
  |  Branch (144:15): [True: 0, False: 0]
  ------------------
  145|      0|            *passwd = l->passwd; /* usernames match; password OK */
  146|      0|          else
  147|      0|            *passwd = NULL;     /* usernames don't match */
  148|      0|        }
  149|      2|      else                      /* NOT *acc */
  150|      2|        {
  151|       |          /* If password was given, use it.  The account is l->acc.  */
  152|      2|          *acc = l->acc;
  153|      2|          if (l->passwd)
  ------------------
  |  Branch (153:15): [True: 1, False: 1]
  ------------------
  154|      1|            *passwd = l->passwd;
  155|      2|        }
  156|      2|      return;
  157|      2|    }
  158|     89|  else
  159|     89|    {
  160|     89|      if (!slack_default)
  ------------------
  |  Branch (160:11): [True: 0, False: 89]
  ------------------
  161|      0|        return;
  162|     89|      if (*acc)
  ------------------
  |  Branch (162:11): [True: 0, False: 89]
  ------------------
  163|      0|        return;
  164|       |      /* Try looking for the default account.  */
  165|    798|      for (l = netrc_list; l; l = l->next)
  ------------------
  |  Branch (165:28): [True: 757, False: 41]
  ------------------
  166|    757|        if (!l->host)
  ------------------
  |  Branch (166:13): [True: 48, False: 709]
  ------------------
  167|     48|          break;
  168|     89|      if (!l)
  ------------------
  |  Branch (168:11): [True: 41, False: 48]
  ------------------
  169|     41|        return;
  170|     48|      *acc = l->acc;
  171|     48|      if (!*passwd)
  ------------------
  |  Branch (171:11): [True: 48, False: 0]
  ------------------
  172|     48|        *passwd = l->passwd;
  173|     48|      return;
  174|     89|    }
  175|     91|}
netrc.c:parse_netrc_fp:
  243|  1.57k|{
  244|  1.57k|  char *line = NULL, *p, *tok;
  245|  1.57k|  const char *premature_token = NULL;
  246|  1.57k|  acc_t *current = NULL, *retval = NULL;
  247|  1.57k|  int ln = 0, qmark;
  248|  1.57k|  size_t bufsize = 0;
  249|       |
  250|       |  /* The latest token we've seen in the file.  */
  251|  1.57k|  enum
  252|  1.57k|  {
  253|  1.57k|    tok_nothing, tok_account, tok_login, tok_macdef, tok_machine, tok_password, tok_port, tok_force
  254|  1.57k|  } last_token = tok_nothing;
  255|       |
  256|       |  /* While there are lines in the file...  */
  257|  21.7k|  while (getline (&line, &bufsize, fp) > 0)
  ------------------
  |  Branch (257:10): [True: 20.1k, False: 1.57k]
  ------------------
  258|  20.1k|    {
  259|  20.1k|      ln ++;
  260|       |
  261|       |      /* Parse the line.  */
  262|  20.1k|      p = line;
  263|  20.1k|      qmark = 0;
  264|       |
  265|       |      /* Skip leading whitespace.  */
  266|  21.7k|      while (*p && c_isspace (*p))
  ------------------
  |  Branch (266:14): [True: 20.0k, False: 1.66k]
  |  Branch (266:20): [True: 1.59k, False: 18.5k]
  ------------------
  267|  1.59k|        p ++;
  268|       |
  269|       |      /* If the line is empty, then end any macro definition.  */
  270|  20.1k|      if (last_token == tok_macdef && !*p)
  ------------------
  |  Branch (270:11): [True: 574, False: 19.5k]
  |  Branch (270:39): [True: 380, False: 194]
  ------------------
  271|       |        /* End of macro if the line is empty.  */
  272|    380|        last_token = tok_nothing;
  273|       |
  274|       |      /* If we are defining macros, then skip parsing the line.  */
  275|  42.4k|      while (*p && last_token != tok_macdef)
  ------------------
  |  Branch (275:14): [True: 23.4k, False: 19.0k]
  |  Branch (275:20): [True: 23.2k, False: 194]
  ------------------
  276|  23.2k|        {
  277|       |          /* Skip any whitespace.  */
  278|  25.3k|          while (*p && c_isspace (*p))
  ------------------
  |  Branch (278:18): [True: 24.6k, False: 712]
  |  Branch (278:24): [True: 2.12k, False: 22.5k]
  ------------------
  279|  2.12k|            p ++;
  280|       |
  281|       |          /* Discard end-of-line comments; also, stop processing if
  282|       |             the above `while' merely skipped trailing whitespace.  */
  283|  23.2k|          if (*p == '#' || !*p)
  ------------------
  |  Branch (283:15): [True: 199, False: 23.0k]
  |  Branch (283:28): [True: 712, False: 22.3k]
  ------------------
  284|    911|            break;
  285|       |
  286|       |          /* If the token starts with quotation mark, note this fact,
  287|       |             and squash the quotation character */
  288|  22.3k|          if (*p == '"'){
  ------------------
  |  Branch (288:15): [True: 3.20k, False: 19.1k]
  ------------------
  289|  3.20k|            qmark = 1;
  290|  3.20k|            shift_left (p);
  291|  3.20k|          }
  292|       |
  293|  22.3k|          tok = p;
  294|       |
  295|       |          /* Find the end of the token, handling quotes and escapes.  */
  296|   107k|          while (*p && (qmark ? *p != '"' : !c_isspace (*p))){
  ------------------
  |  Branch (296:18): [True: 104k, False: 2.82k]
  |  Branch (296:24): [True: 84.9k, False: 19.5k]
  |  Branch (296:25): [True: 9.61k, False: 94.8k]
  ------------------
  297|  84.9k|            if (*p == '\\')
  ------------------
  |  Branch (297:17): [True: 292, False: 84.6k]
  ------------------
  298|    292|              shift_left (p);
  299|  84.9k|            p ++;
  300|  84.9k|          }
  301|       |
  302|       |          /* If field was quoted, squash the trailing quotation mark
  303|       |             and reset qmark flag.  */
  304|  22.3k|          if (qmark)
  ------------------
  |  Branch (304:15): [True: 3.20k, False: 19.1k]
  ------------------
  305|  3.20k|            {
  306|  3.20k|              shift_left (p);
  307|  3.20k|              qmark = 0;
  308|  3.20k|            }
  309|       |
  310|       |          /* Null-terminate the token, if it isn't already.  */
  311|  22.3k|          if (*p)
  ------------------
  |  Branch (311:15): [True: 19.4k, False: 2.83k]
  ------------------
  312|  19.4k|            *p ++ = '\0';
  313|       |
  314|  22.3k|          switch (last_token)
  ------------------
  |  Branch (314:19): [True: 0, False: 22.3k]
  ------------------
  315|  22.3k|            {
  316|  3.23k|            case tok_login:
  ------------------
  |  Branch (316:13): [True: 3.23k, False: 19.0k]
  ------------------
  317|  3.23k|              if (current)
  ------------------
  |  Branch (317:19): [True: 2.84k, False: 392]
  ------------------
  318|  2.84k|                {
  319|  2.84k|                  xfree (current->acc);
  ------------------
  |  |   54|  2.84k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  320|  2.84k|                  current->acc = xstrdup (tok);
  321|  2.84k|                }
  322|    392|              else
  323|    392|                premature_token = "login";
  324|  3.23k|              break;
  325|       |
  326|  1.22k|            case tok_machine:
  ------------------
  |  Branch (326:13): [True: 1.22k, False: 21.1k]
  ------------------
  327|       |              /* Start a new machine entry.  */
  328|  1.22k|              maybe_add_to_list (&current, &retval);
  329|  1.22k|              current->host = xstrdup (tok);
  330|  1.22k|              break;
  331|       |
  332|    937|            case tok_password:
  ------------------
  |  Branch (332:13): [True: 937, False: 21.3k]
  ------------------
  333|    937|              if (current)
  ------------------
  |  Branch (333:19): [True: 278, False: 659]
  ------------------
  334|    278|                {
  335|    278|                  xfree (current->passwd);
  ------------------
  |  |   54|    278|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  336|    278|                  current->passwd = xstrdup (tok);
  337|    278|                }
  338|    659|              else
  339|    659|                premature_token = "password";
  340|    937|              break;
  341|       |
  342|       |              /* We handle most of tok_macdef above.  */
  343|      0|            case tok_macdef:
  ------------------
  |  Branch (343:13): [True: 0, False: 22.3k]
  ------------------
  344|      0|              if (!current)
  ------------------
  |  Branch (344:19): [True: 0, False: 0]
  ------------------
  345|      0|                premature_token = "macdef";
  346|      0|              break;
  347|       |
  348|       |              /* We don't handle the account keyword at all.  */
  349|    693|            case tok_account:
  ------------------
  |  Branch (349:13): [True: 693, False: 21.6k]
  ------------------
  350|    693|              if (!current)
  ------------------
  |  Branch (350:19): [True: 484, False: 209]
  ------------------
  351|    484|                premature_token = "account";
  352|    693|              break;
  353|       |
  354|       |              /* We don't handle the port keyword at all.  */
  355|    801|            case tok_port:
  ------------------
  |  Branch (355:13): [True: 801, False: 21.5k]
  ------------------
  356|    801|              if (!current)
  ------------------
  |  Branch (356:19): [True: 444, False: 357]
  ------------------
  357|    444|                premature_token = "port";
  358|    801|              break;
  359|       |
  360|       |              /* We don't handle the force keyword at all.  */
  361|    645|            case tok_force:
  ------------------
  |  Branch (361:13): [True: 645, False: 21.6k]
  ------------------
  362|    645|              if (!current)
  ------------------
  |  Branch (362:19): [True: 391, False: 254]
  ------------------
  363|    391|                premature_token = "force";
  364|    645|              break;
  365|       |
  366|       |              /* We handle tok_nothing below this switch.  */
  367|  14.7k|            case tok_nothing:
  ------------------
  |  Branch (367:13): [True: 14.7k, False: 7.53k]
  ------------------
  368|  14.7k|              break;
  369|  22.3k|            }
  370|       |
  371|  22.3k|          if (premature_token)
  ------------------
  |  Branch (371:15): [True: 2.37k, False: 19.9k]
  ------------------
  372|  2.37k|            {
  373|  2.37k|              fprintf (stderr, _("\
  ------------------
  |  |   64|  2.37k|#define _(STRING) gettext(STRING)
  ------------------
  374|  2.37k|%s: %s:%d: warning: %s token appears before any machine name\n"),
  375|  2.37k|                       exec_name, path, ln, quote (premature_token));
  376|  2.37k|              premature_token = NULL;
  377|  2.37k|            }
  378|       |
  379|  22.3k|          if (last_token != tok_nothing)
  ------------------
  |  Branch (379:15): [True: 7.53k, False: 14.7k]
  ------------------
  380|       |            /* We got a value, so reset the token state.  */
  381|  7.53k|            last_token = tok_nothing;
  382|  14.7k|          else
  383|  14.7k|            {
  384|       |              /* Fetch the next token.  */
  385|  14.7k|              if (!strcmp (tok, "account"))
  ------------------
  |  Branch (385:19): [True: 702, False: 14.0k]
  ------------------
  386|    702|                last_token = tok_account;
  387|       |
  388|  14.0k|              else if (!strcmp (tok, "default"))
  ------------------
  |  Branch (388:24): [True: 1.83k, False: 12.2k]
  ------------------
  389|  1.83k|                  maybe_add_to_list (&current, &retval);
  390|       |
  391|  12.2k|              else if (!strcmp (tok, "login"))
  ------------------
  |  Branch (391:24): [True: 3.24k, False: 9.01k]
  ------------------
  392|  3.24k|                last_token = tok_login;
  393|       |
  394|  9.01k|              else if (!strcmp (tok, "macdef"))
  ------------------
  |  Branch (394:24): [True: 396, False: 8.62k]
  ------------------
  395|    396|                last_token = tok_macdef;
  396|       |
  397|  8.62k|              else if (!strcmp (tok, "machine"))
  ------------------
  |  Branch (397:24): [True: 1.23k, False: 7.38k]
  ------------------
  398|  1.23k|                last_token = tok_machine;
  399|       |
  400|  7.38k|              else if (!strcmp (tok, "password"))
  ------------------
  |  Branch (400:24): [True: 945, False: 6.43k]
  ------------------
  401|    945|                last_token = tok_password;
  402|       |
  403|       |				  /* GNU extensions 'port' and 'force', not operational
  404|       |					* see https://www.gnu.org/software/emacs/manual/html_node/gnus/NNTP.html#index-nntp_002dauthinfo_002dfunction-2003
  405|       |					* see https://savannah.gnu.org/bugs/index.php?52066
  406|       |					*/
  407|  6.43k|              else if (!strcmp (tok, "port"))
  ------------------
  |  Branch (407:24): [True: 809, False: 5.63k]
  ------------------
  408|    809|                last_token = tok_port;
  409|       |
  410|  5.63k|              else if (!strcmp (tok, "force"))
  ------------------
  |  Branch (410:24): [True: 653, False: 4.97k]
  ------------------
  411|    653|                last_token = tok_force;
  412|       |
  413|  4.97k|              else
  414|  4.97k|                fprintf (stderr, _("%s: %s:%d: unknown token \"%s\"\n"),
  ------------------
  |  |   64|  4.97k|#define _(STRING) gettext(STRING)
  ------------------
  415|  4.97k|                         exec_name, path, ln, tok);
  416|  14.7k|            }
  417|  22.3k|        }
  418|  20.1k|    }
  419|       |
  420|  1.57k|  xfree (line);
  ------------------
  |  |   54|  1.57k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  421|       |
  422|       |  /* Finalize the last machine entry we found.  */
  423|  1.57k|  maybe_add_to_list (&current, &retval);
  424|  1.57k|  xfree (current);
  ------------------
  |  |   54|  1.57k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  425|       |
  426|       |  /* Reverse the order of the list so that it appears in file order.  */
  427|  1.57k|  current = retval;
  428|  1.57k|  retval = NULL;
  429|  3.59k|  while (current)
  ------------------
  |  Branch (429:10): [True: 2.01k, False: 1.57k]
  ------------------
  430|  2.01k|    {
  431|  2.01k|      acc_t *saved_reference;
  432|       |
  433|       |      /* Change the direction of the pointers.  */
  434|  2.01k|      saved_reference = current->next;
  435|  2.01k|      current->next = retval;
  436|       |
  437|       |      /* Advance to the next node.  */
  438|  2.01k|      retval = current;
  439|  2.01k|      current = saved_reference;
  440|  2.01k|    }
  441|       |
  442|  1.57k|  return retval;
  443|  1.57k|}
netrc.c:shift_left:
  233|  6.70k|{
  234|  6.70k|  char *p;
  235|       |
  236|  83.9k|  for (p=string; *p; ++p)
  ------------------
  |  Branch (236:18): [True: 77.2k, False: 6.70k]
  ------------------
  237|  77.2k|    *p = *(p+1);
  238|  6.70k|}
netrc.c:maybe_add_to_list:
  193|  4.63k|{
  194|  4.63k|  acc_t *a, *l;
  195|  4.63k|  a = *newentry;
  196|  4.63k|  l = *list;
  197|       |
  198|       |  /* We need an account name in order to add the entry to the list.  */
  199|  4.63k|  if (a && ! a->acc)
  ------------------
  |  Branch (199:7): [True: 3.05k, False: 1.57k]
  |  Branch (199:12): [True: 1.04k, False: 2.01k]
  ------------------
  200|  1.04k|    {
  201|       |      /* Free any allocated space.  */
  202|  1.04k|      xfree (a->host);
  ------------------
  |  |   54|  1.04k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  203|  1.04k|      xfree (a->acc);
  ------------------
  |  |   54|  1.04k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  204|  1.04k|      xfree (a->passwd);
  ------------------
  |  |   54|  1.04k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  205|  1.04k|    }
  206|  3.59k|  else
  207|  3.59k|    {
  208|  3.59k|      if (a)
  ------------------
  |  Branch (208:11): [True: 2.01k, False: 1.57k]
  ------------------
  209|  2.01k|        {
  210|       |          /* Add the current machine into our list.  */
  211|  2.01k|          a->next = l;
  212|  2.01k|          l = a;
  213|  2.01k|        }
  214|       |
  215|       |      /* Allocate a new acc_t structure.  */
  216|  3.59k|      a = xmalloc (sizeof (acc_t));
  217|  3.59k|    }
  218|       |
  219|       |  /* Zero the structure, so that it is ready to use.  */
  220|  4.63k|  memset (a, 0, sizeof(*a));
  221|       |
  222|       |  /* Return the new pointers.  */
  223|  4.63k|  *newentry = a;
  224|  4.63k|  *list = l;
  225|  4.63k|  return;
  226|  4.63k|}
netrc.c:free_netrc:
  469|  1.57k|{
  470|  1.57k|  acc_t *t;
  471|       |
  472|  3.59k|  while (l)
  ------------------
  |  Branch (472:10): [True: 2.01k, False: 1.57k]
  ------------------
  473|  2.01k|    {
  474|  2.01k|      t = l->next;
  475|  2.01k|      xfree (l->acc);
  ------------------
  |  |   54|  2.01k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  476|  2.01k|      xfree (l->passwd);
  ------------------
  |  |   54|  2.01k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  477|  2.01k|      xfree (l->host);
  ------------------
  |  |   54|  2.01k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  478|  2.01k|      xfree (l);
  ------------------
  |  |   54|  2.01k|#define xfree(p) do { free ((void *) (p)); p = NULL; } while (0)
  |  |  ------------------
  |  |  |  Branch (54:63): [Folded - Ignored]
  |  |  ------------------
  ------------------
  479|  2.01k|      l = t;
  480|  2.01k|    }
  481|  1.57k|}

