stream_encoder.c:safe_calloc_:
  116|  60.3k|{
  117|  60.3k|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
  118|       |	/* Fail if requested */
  119|  60.3k|	if(alloc_check())
  ------------------
  |  Branch (119:5): [True: 0, False: 60.3k]
  ------------------
  120|      0|		return NULL;
  121|  60.3k|#endif
  122|  60.3k|	if(!nmemb || !size)
  ------------------
  |  Branch (122:5): [True: 0, False: 60.3k]
  |  Branch (122:15): [True: 0, False: 60.3k]
  ------------------
  123|      0|		return malloc(1); /* malloc(0) is undefined; FLAC src convention is to always allocate */
  124|  60.3k|	return calloc(nmemb, size);
  125|  60.3k|}
stream_encoder.c:alloc_check:
   70|  60.3k|static inline int alloc_check(void) {
   71|  60.3k|	if(alloc_check_threshold == INT32_MAX)
  ------------------
  |  Branch (71:5): [True: 60.3k, False: 0]
  ------------------
   72|  60.3k|		return 0;
   73|      0|	else if(alloc_check_counter++ == alloc_check_threshold)
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|      0|		return 1;
   75|      0|	else if(alloc_check_keep_failing && (alloc_check_counter > alloc_check_threshold))
  ------------------
  |  Branch (75:10): [True: 0, False: 0]
  |  Branch (75:38): [True: 0, False: 0]
  ------------------
   76|      0|		return 1;
   77|      0|	else {
   78|      0|		return 0;
   79|      0|	}
   80|  60.3k|}
bitwriter.c:safe_realloc_nofree_mul_2op_:
  290|  1.75k|{
  291|  1.75k|	if(!size1 || !size2)
  ------------------
  |  Branch (291:5): [True: 0, False: 1.75k]
  |  Branch (291:15): [True: 0, False: 1.75k]
  ------------------
  292|      0|		return realloc(ptr, 0); /* preserve POSIX realloc(ptr, 0) semantics */
  293|  1.75k|	if(size1 > SIZE_MAX / size2)
  ------------------
  |  Branch (293:5): [True: 0, False: 1.75k]
  ------------------
  294|      0|		return 0;
  295|  1.75k|	return realloc_(ptr, size1*size2);
  296|  1.75k|}
bitwriter.c:realloc_:
  219|  1.75k|{
  220|       |	/* Fail if requested */
  221|  1.75k|	if(alloc_check())
  ------------------
  |  Branch (221:5): [True: 0, False: 1.75k]
  ------------------
  222|      0|		return NULL;
  223|  1.75k|	return realloc(ptr, size);
  224|  1.75k|}
bitwriter.c:alloc_check:
   70|  1.75k|static inline int alloc_check(void) {
   71|  1.75k|	if(alloc_check_threshold == INT32_MAX)
  ------------------
  |  Branch (71:5): [True: 1.75k, False: 0]
  ------------------
   72|  1.75k|		return 0;
   73|      0|	else if(alloc_check_counter++ == alloc_check_threshold)
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|      0|		return 1;
   75|      0|	else if(alloc_check_keep_failing && (alloc_check_counter > alloc_check_threshold))
  ------------------
  |  Branch (75:10): [True: 0, False: 0]
  |  Branch (75:38): [True: 0, False: 0]
  ------------------
   76|      0|		return 1;
   77|      0|	else {
   78|      0|		return 0;
   79|      0|	}
   80|  1.75k|}
format.c:safe_realloc_:
  200|   433k|{
  201|   433k|	void *oldptr;
  202|   433k|	void *newptr;
  203|   433k|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
  204|       |	/* Fail if requested */
  205|   433k|	if(alloc_check() && size > 0) {
  ------------------
  |  Branch (205:5): [True: 0, False: 433k]
  |  Branch (205:22): [True: 0, False: 0]
  ------------------
  206|      0|		free(ptr);
  207|      0|		return NULL;
  208|      0|	}
  209|   433k|#endif
  210|   433k|	oldptr = ptr;
  211|   433k|	newptr = realloc(ptr, size);
  212|   433k|	if(size > 0 && newptr == 0)
  ------------------
  |  Branch (212:5): [True: 433k, False: 0]
  |  Branch (212:17): [True: 0, False: 433k]
  ------------------
  213|      0|		free(oldptr);
  214|   433k|	return newptr;
  215|   433k|}
format.c:alloc_check:
   70|   433k|static inline int alloc_check(void) {
   71|   433k|	if(alloc_check_threshold == INT32_MAX)
  ------------------
  |  Branch (71:5): [True: 433k, False: 0]
  ------------------
   72|   433k|		return 0;
   73|      0|	else if(alloc_check_counter++ == alloc_check_threshold)
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|      0|		return 1;
   75|      0|	else if(alloc_check_keep_failing && (alloc_check_counter > alloc_check_threshold))
  ------------------
  |  Branch (75:10): [True: 0, False: 0]
  |  Branch (75:38): [True: 0, False: 0]
  ------------------
   76|      0|		return 1;
   77|      0|	else {
   78|      0|		return 0;
   79|      0|	}
   80|   433k|}
md5.c:safe_realloc_:
  200|  9.21k|{
  201|  9.21k|	void *oldptr;
  202|  9.21k|	void *newptr;
  203|  9.21k|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
  204|       |	/* Fail if requested */
  205|  9.21k|	if(alloc_check() && size > 0) {
  ------------------
  |  Branch (205:5): [True: 0, False: 9.21k]
  |  Branch (205:22): [True: 0, False: 0]
  ------------------
  206|      0|		free(ptr);
  207|      0|		return NULL;
  208|      0|	}
  209|  9.21k|#endif
  210|  9.21k|	oldptr = ptr;
  211|  9.21k|	newptr = realloc(ptr, size);
  212|  9.21k|	if(size > 0 && newptr == 0)
  ------------------
  |  Branch (212:5): [True: 9.21k, False: 0]
  |  Branch (212:17): [True: 0, False: 9.21k]
  ------------------
  213|      0|		free(oldptr);
  214|  9.21k|	return newptr;
  215|  9.21k|}
md5.c:alloc_check:
   70|  9.21k|static inline int alloc_check(void) {
   71|  9.21k|	if(alloc_check_threshold == INT32_MAX)
  ------------------
  |  Branch (71:5): [True: 9.21k, False: 0]
  ------------------
   72|  9.21k|		return 0;
   73|      0|	else if(alloc_check_counter++ == alloc_check_threshold)
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|      0|		return 1;
   75|      0|	else if(alloc_check_keep_failing && (alloc_check_counter > alloc_check_threshold))
  ------------------
  |  Branch (75:10): [True: 0, False: 0]
  |  Branch (75:38): [True: 0, False: 0]
  ------------------
   76|      0|		return 1;
   77|      0|	else {
   78|      0|		return 0;
   79|      0|	}
   80|  9.21k|}
memory.c:safe_malloc_add_2op_:
  130|   352k|{
  131|   352k|	size2 += size1;
  132|   352k|	if(size2 < size1)
  ------------------
  |  Branch (132:5): [True: 0, False: 352k]
  ------------------
  133|      0|		return 0;
  134|   352k|	return safe_malloc_(size2);
  135|   352k|}
memory.c:safe_malloc_:
   89|   352k|{
   90|   352k|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
   91|       |	/* Fail if requested */
   92|   352k|	if(alloc_check())
  ------------------
  |  Branch (92:5): [True: 0, False: 352k]
  ------------------
   93|      0|		return NULL;
   94|   352k|#endif
   95|       |	/* malloc(0) is undefined; FLAC src convention is to always allocate */
   96|   352k|	if(!size)
  ------------------
  |  Branch (96:5): [True: 0, False: 352k]
  ------------------
   97|      0|		size++;
   98|   352k|	return malloc(size);
   99|   352k|}
memory.c:alloc_check:
   70|   352k|static inline int alloc_check(void) {
   71|   352k|	if(alloc_check_threshold == INT32_MAX)
  ------------------
  |  Branch (71:5): [True: 352k, False: 0]
  ------------------
   72|   352k|		return 0;
   73|      0|	else if(alloc_check_counter++ == alloc_check_threshold)
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|      0|		return 1;
   75|      0|	else if(alloc_check_keep_failing && (alloc_check_counter > alloc_check_threshold))
  ------------------
  |  Branch (75:10): [True: 0, False: 0]
  |  Branch (75:38): [True: 0, False: 0]
  ------------------
   76|      0|		return 1;
   77|      0|	else {
   78|      0|		return 0;
   79|      0|	}
   80|   352k|}
stream_decoder.c:safe_calloc_:
  116|  24.9k|{
  117|  24.9k|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
  118|       |	/* Fail if requested */
  119|  24.9k|	if(alloc_check())
  ------------------
  |  Branch (119:5): [True: 0, False: 24.9k]
  ------------------
  120|      0|		return NULL;
  121|  24.9k|#endif
  122|  24.9k|	if(!nmemb || !size)
  ------------------
  |  Branch (122:5): [True: 0, False: 24.9k]
  |  Branch (122:15): [True: 0, False: 24.9k]
  ------------------
  123|      0|		return malloc(1); /* malloc(0) is undefined; FLAC src convention is to always allocate */
  124|  24.9k|	return calloc(nmemb, size);
  125|  24.9k|}
stream_decoder.c:alloc_check:
   70|  38.5k|static inline int alloc_check(void) {
   71|  38.5k|	if(alloc_check_threshold == INT32_MAX)
  ------------------
  |  Branch (71:5): [True: 38.5k, False: 0]
  ------------------
   72|  38.5k|		return 0;
   73|      0|	else if(alloc_check_counter++ == alloc_check_threshold)
  ------------------
  |  Branch (73:10): [True: 0, False: 0]
  ------------------
   74|      0|		return 1;
   75|      0|	else if(alloc_check_keep_failing && (alloc_check_counter > alloc_check_threshold))
  ------------------
  |  Branch (75:10): [True: 0, False: 0]
  |  Branch (75:38): [True: 0, False: 0]
  ------------------
   76|      0|		return 1;
   77|      0|	else {
   78|      0|		return 0;
   79|      0|	}
   80|  38.5k|}
stream_decoder.c:safe_malloc_muladd2_:
  188|  13.6k|{
  189|  13.6k|	if(!size1 || (!size2 && !size3))
  ------------------
  |  Branch (189:5): [True: 0, False: 13.6k]
  |  Branch (189:16): [True: 0, False: 13.6k]
  |  Branch (189:26): [True: 0, False: 0]
  ------------------
  190|      0|		return malloc(1); /* malloc(0) is undefined; FLAC src convention is to always allocate */
  191|  13.6k|	size2 += size3;
  192|  13.6k|	if(size2 < size3)
  ------------------
  |  Branch (192:5): [True: 0, False: 13.6k]
  ------------------
  193|      0|		return 0;
  194|  13.6k|	if(size1 > SIZE_MAX / size2)
  ------------------
  |  Branch (194:5): [True: 0, False: 13.6k]
  ------------------
  195|      0|		return 0;
  196|  13.6k|	return malloc_(size1*size2);
  197|  13.6k|}
stream_decoder.c:malloc_:
  103|  13.6k|{
  104|       |	/* Fail if requested */
  105|  13.6k|	if(alloc_check())
  ------------------
  |  Branch (105:5): [True: 0, False: 13.6k]
  ------------------
  106|      0|		return NULL;
  107|  13.6k|	return malloc(size);
  108|  13.6k|}

LLVMFuzzerTestOneInput:
   58|  11.8k|extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   59|  11.8k|    fuzzing::datasource::Datasource ds(data, size);
   60|  11.8k|    FLAC::Encoder::FuzzerStream encoder(ds);
   61|       |
   62|  11.8k|    try {
   63|  11.8k|            const int channels = ds.Get<uint8_t>();
   64|  11.8k|            const int bps = ds.Get<uint8_t>();
   65|  11.8k|            encoder.set_channels(channels);
   66|  11.8k|            encoder.set_bits_per_sample(bps);
   67|       |
   68|  11.8k|        {
   69|  11.8k|            const bool res = encoder.set_streamable_subset(ds.Get<bool>());
   70|  11.8k|            fuzzing::memory::memory_test(res);
   71|  11.8k|        }
   72|  11.8k|        {
   73|  11.8k|            const bool res = encoder.set_ogg_serial_number(ds.Get<long>());
   74|  11.8k|            fuzzing::memory::memory_test(res);
   75|  11.8k|        }
   76|  11.8k|        {
   77|  11.8k|            const bool res = encoder.set_verify(ds.Get<bool>());
   78|  11.8k|            fuzzing::memory::memory_test(res);
   79|  11.8k|        }
   80|  11.8k|        {
   81|  11.8k|            const bool res = encoder.set_compression_level(ds.Get<uint8_t>());
   82|  11.8k|            fuzzing::memory::memory_test(res);
   83|  11.8k|        }
   84|  11.8k|        {
   85|  11.8k|            const bool res = encoder.set_do_exhaustive_model_search(ds.Get<bool>());
   86|  11.8k|            fuzzing::memory::memory_test(res);
   87|  11.8k|        }
   88|  11.8k|        {
   89|  11.8k|            const bool res = encoder.set_do_mid_side_stereo(ds.Get<bool>());
   90|  11.8k|            fuzzing::memory::memory_test(res);
   91|  11.8k|        }
   92|  11.8k|        {
   93|  11.8k|            const bool res = encoder.set_loose_mid_side_stereo(ds.Get<bool>());
   94|  11.8k|            fuzzing::memory::memory_test(res);
   95|  11.8k|        }
   96|  11.8k|        {
   97|  11.8k|            const auto s = ds.Get<std::string>();
   98|  11.8k|            const bool res = encoder.set_apodization(s.data());
   99|  11.8k|            fuzzing::memory::memory_test(res);
  100|  11.8k|        }
  101|  11.8k|        {
  102|  11.8k|            const bool res = encoder.set_max_lpc_order(ds.Get<uint8_t>());
  103|  11.8k|            fuzzing::memory::memory_test(res);
  104|  11.8k|        }
  105|  11.8k|        {
  106|  11.8k|            const bool res = encoder.set_qlp_coeff_precision(ds.Get<uint32_t>());
  107|  11.8k|            fuzzing::memory::memory_test(res);
  108|  11.8k|        }
  109|  11.8k|        {
  110|  11.8k|            const bool res = encoder.set_do_qlp_coeff_prec_search(ds.Get<bool>());
  111|  11.8k|            fuzzing::memory::memory_test(res);
  112|  11.8k|        }
  113|  11.8k|        {
  114|  11.8k|            const bool res = encoder.set_do_escape_coding(ds.Get<bool>());
  115|  11.8k|            fuzzing::memory::memory_test(res);
  116|  11.8k|        }
  117|  11.8k|        {
  118|  11.8k|            const bool res = encoder.set_min_residual_partition_order(ds.Get<uint32_t>());
  119|  11.8k|            fuzzing::memory::memory_test(res);
  120|  11.8k|        }
  121|  11.8k|        {
  122|  11.8k|            const bool res = encoder.set_max_residual_partition_order(ds.Get<uint32_t>());
  123|  11.8k|            fuzzing::memory::memory_test(res);
  124|  11.8k|        }
  125|  11.8k|        {
  126|  11.8k|            const bool res = encoder.set_rice_parameter_search_dist(ds.Get<uint32_t>());
  127|  11.8k|            fuzzing::memory::memory_test(res);
  128|  11.8k|        }
  129|  11.8k|        {
  130|  11.8k|            const bool res = encoder.set_total_samples_estimate(ds.Get<uint64_t>());
  131|  11.8k|            fuzzing::memory::memory_test(res);
  132|  11.8k|        }
  133|  11.8k|        {
  134|  11.8k|            const bool res = encoder.set_blocksize(ds.Get<uint16_t>());
  135|  11.8k|            fuzzing::memory::memory_test(res);
  136|  11.8k|        }
  137|  11.8k|        {
  138|  11.8k|            const bool res = encoder.set_limit_min_bitrate(ds.Get<bool>());
  139|  11.8k|            fuzzing::memory::memory_test(res);
  140|  11.8k|        }
  141|  11.8k|        {
  142|  11.8k|            const bool res = encoder.set_sample_rate(ds.Get<uint32_t>());
  143|  11.8k|            fuzzing::memory::memory_test(res);
  144|  11.8k|        }
  145|  11.8k|        {
  146|  11.8k|            const bool res = encoder.set_num_threads(ds.Get<uint32_t>());
  147|  11.8k|            fuzzing::memory::memory_test(res);
  148|  11.8k|        }
  149|       |
  150|  11.8k|        if ( size > 2 * 65535 * 4 ) {
  ------------------
  |  Branch (150:14): [True: 208, False: 11.6k]
  ------------------
  151|       |            /* With large inputs and expensive options enabled, the fuzzer can get *really* slow.
  152|       |            * Some combinations can make the fuzzer timeout (>60 seconds). However, while combining
  153|       |            * options makes the fuzzer slower, most options do not expose new code when combined.
  154|       |            * Therefore, combining slow options is disabled for large inputs. Any input containing
  155|       |            * more than 65536 * 2 samples of 32 bits each (max blocksize, stereo) is considered large
  156|       |            */
  157|    208|            encoder.set_do_qlp_coeff_prec_search(false);
  158|    208|            encoder.set_do_exhaustive_model_search(false);
  159|    208|        }
  160|  11.8k|        if ( size > 2 * 4096 * 4 + 250 ) {
  ------------------
  |  Branch (160:14): [True: 1.40k, False: 10.4k]
  ------------------
  161|       |            /* With subdivide_tukey in the mix testing apodizations can get really expensive. Therefore
  162|       |             * this is disabled for inputs of more than one whole stereo block of 32-bit inputs plus a
  163|       |             * bit of overhead */
  164|  1.40k|            encoder.set_apodization("");
  165|  1.40k|        }
  166|       |
  167|  11.8k|        {
  168|  11.8k|            ::FLAC__StreamEncoderInitStatus ret;
  169|  11.8k|            if ( ds.Get<bool>() ) {
  ------------------
  |  Branch (169:18): [True: 6.72k, False: 5.10k]
  ------------------
  170|  6.72k|                ret = encoder.init();
  171|  6.72k|            } else {
  172|  5.10k|                ret = encoder.init_ogg();
  173|  5.10k|            }
  174|       |
  175|  11.8k|            if ( ret != FLAC__STREAM_ENCODER_INIT_STATUS_OK ) {
  ------------------
  |  Branch (175:18): [True: 262, False: 11.5k]
  ------------------
  176|    262|                goto end;
  177|    262|            }
  178|  11.8k|        }
  179|       |
  180|       |	/* These sets must fail, because encoder is already initialized */
  181|  11.5k|        {
  182|  11.5k|            bool res = false;
  183|  11.5k|            res = res || encoder.set_streamable_subset(true);
  ------------------
  |  Branch (183:19): [True: 2.02k, False: 9.55k]
  |  Branch (183:26): [True: 0, False: 9.55k]
  ------------------
  184|  11.5k|            res = res || encoder.set_ogg_serial_number(0);
  ------------------
  |  Branch (184:19): [True: 2.02k, False: 9.55k]
  |  Branch (184:26): [True: 0, False: 9.55k]
  ------------------
  185|  11.5k|            res = res || encoder.set_verify(true);
  ------------------
  |  Branch (185:19): [True: 2.02k, False: 9.55k]
  |  Branch (185:26): [True: 0, False: 9.55k]
  ------------------
  186|  11.5k|            res = res || encoder.set_compression_level(0);
  ------------------
  |  Branch (186:19): [True: 2.02k, False: 9.55k]
  |  Branch (186:26): [True: 0, False: 9.55k]
  ------------------
  187|  11.5k|            res = res || encoder.set_do_exhaustive_model_search(true);
  ------------------
  |  Branch (187:19): [True: 2.02k, False: 9.55k]
  |  Branch (187:26): [True: 0, False: 9.55k]
  ------------------
  188|  11.5k|            res = res || encoder.set_do_mid_side_stereo(true);
  ------------------
  |  Branch (188:19): [True: 2.02k, False: 9.55k]
  |  Branch (188:26): [True: 0, False: 9.55k]
  ------------------
  189|  11.5k|            res = res || encoder.set_loose_mid_side_stereo(true);
  ------------------
  |  Branch (189:19): [True: 2.02k, False: 9.55k]
  |  Branch (189:26): [True: 0, False: 9.55k]
  ------------------
  190|  11.5k|            res = res || encoder.set_apodization("test");
  ------------------
  |  Branch (190:19): [True: 2.02k, False: 9.55k]
  |  Branch (190:26): [True: 0, False: 9.55k]
  ------------------
  191|  11.5k|            res = res || encoder.set_max_lpc_order(0);
  ------------------
  |  Branch (191:19): [True: 2.02k, False: 9.55k]
  |  Branch (191:26): [True: 0, False: 9.55k]
  ------------------
  192|  11.5k|            res = res || encoder.set_qlp_coeff_precision(0);
  ------------------
  |  Branch (192:19): [True: 2.02k, False: 9.55k]
  |  Branch (192:26): [True: 0, False: 9.55k]
  ------------------
  193|  11.5k|            res = res || encoder.set_do_qlp_coeff_prec_search(true);
  ------------------
  |  Branch (193:19): [True: 2.02k, False: 9.55k]
  |  Branch (193:26): [True: 0, False: 9.55k]
  ------------------
  194|  11.5k|            res = res || encoder.set_do_escape_coding(true);
  ------------------
  |  Branch (194:19): [True: 2.02k, False: 9.55k]
  |  Branch (194:26): [True: 0, False: 9.55k]
  ------------------
  195|  11.5k|            res = res || encoder.set_min_residual_partition_order(0);
  ------------------
  |  Branch (195:19): [True: 2.02k, False: 9.55k]
  |  Branch (195:26): [True: 0, False: 9.55k]
  ------------------
  196|  11.5k|            res = res || encoder.set_max_residual_partition_order(0);
  ------------------
  |  Branch (196:19): [True: 2.02k, False: 9.55k]
  |  Branch (196:26): [True: 0, False: 9.55k]
  ------------------
  197|  11.5k|            res = res || encoder.set_rice_parameter_search_dist(0);
  ------------------
  |  Branch (197:19): [True: 2.02k, False: 9.55k]
  |  Branch (197:26): [True: 0, False: 9.55k]
  ------------------
  198|  11.5k|            res = res || encoder.set_total_samples_estimate(0);
  ------------------
  |  Branch (198:19): [True: 2.02k, False: 9.55k]
  |  Branch (198:26): [True: 0, False: 9.55k]
  ------------------
  199|  11.5k|            res = res || encoder.set_channels(channels);
  ------------------
  |  Branch (199:19): [True: 2.02k, False: 9.55k]
  |  Branch (199:26): [True: 0, False: 9.55k]
  ------------------
  200|  11.5k|            res = res || encoder.set_bits_per_sample(16);
  ------------------
  |  Branch (200:19): [True: 2.02k, False: 9.55k]
  |  Branch (200:26): [True: 0, False: 9.55k]
  ------------------
  201|  11.5k|            res = res || encoder.set_limit_min_bitrate(true);
  ------------------
  |  Branch (201:19): [True: 2.02k, False: 9.55k]
  |  Branch (201:26): [True: 0, False: 9.55k]
  ------------------
  202|  11.5k|            res = res || encoder.set_blocksize(3021);
  ------------------
  |  Branch (202:19): [True: 2.02k, False: 9.55k]
  |  Branch (202:26): [True: 0, False: 9.55k]
  ------------------
  203|  11.5k|            res = res || encoder.set_sample_rate(44100);
  ------------------
  |  Branch (203:19): [True: 2.02k, False: 9.55k]
  |  Branch (203:26): [True: 0, False: 9.55k]
  ------------------
  204|  11.5k|            res = res || (encoder.set_num_threads(4) == FLAC__STREAM_ENCODER_SET_NUM_THREADS_OK);
  ------------------
  |  |  291|  9.55k|#define FLAC__STREAM_ENCODER_SET_NUM_THREADS_OK 0
  ------------------
  |  Branch (204:19): [True: 2.02k, False: 9.55k]
  |  Branch (204:26): [True: 0, False: 9.55k]
  ------------------
  205|  11.5k|            fuzzing::memory::memory_test(res);
  206|  11.5k|            if(res)
  ------------------
  |  Branch (206:16): [True: 0, False: 11.5k]
  ------------------
  207|      0|                abort();
  208|  11.5k|        }
  209|       |
  210|       |
  211|  11.5k|        {
  212|       |            /* XORing values as otherwise compiler will optimize, apparently */
  213|  11.5k|            bool res = false;
  214|  11.5k|            res = res != encoder.get_streamable_subset();
  215|  11.5k|            res = res != encoder.get_verify();
  216|  11.5k|            res = res != encoder.get_do_exhaustive_model_search();
  217|  11.5k|            res = res != encoder.get_do_mid_side_stereo();
  218|  11.5k|            res = res != encoder.get_loose_mid_side_stereo();
  219|  11.5k|            res = res != encoder.get_max_lpc_order();
  220|  11.5k|            res = res != encoder.get_qlp_coeff_precision();
  221|  11.5k|            res = res != encoder.get_do_qlp_coeff_prec_search();
  222|  11.5k|            res = res != encoder.get_do_escape_coding();
  223|  11.5k|            res = res != encoder.get_min_residual_partition_order();
  224|  11.5k|            res = res != encoder.get_max_residual_partition_order();
  225|  11.5k|            res = res != encoder.get_rice_parameter_search_dist();
  226|  11.5k|            res = res != encoder.get_total_samples_estimate();
  227|  11.5k|            res = res != encoder.get_channels();
  228|  11.5k|            res = res != encoder.get_bits_per_sample();
  229|  11.5k|            res = res != encoder.get_limit_min_bitrate();
  230|  11.5k|            res = res != encoder.get_blocksize();
  231|  11.5k|            res = res != encoder.get_sample_rate();
  232|  11.5k|            res = res != encoder.get_num_threads();
  233|  11.5k|            fuzzing::memory::memory_test(res);
  234|  11.5k|        }
  235|       |
  236|       |
  237|   237k|        while ( ds.Get<bool>() ) {
  ------------------
  |  Branch (237:17): [True: 226k, False: 11.5k]
  ------------------
  238|   226k|            {
  239|   226k|                auto dat = ds.GetVector<FLAC__int32>();
  240|       |
  241|   226k|                if( ds.Get<bool>() )
  ------------------
  |  Branch (241:21): [True: 204k, False: 21.7k]
  ------------------
  242|       |                    /* Mask */
  243|  24.5M|                    for (size_t i = 0; i < dat.size(); i++)
  ------------------
  |  Branch (243:40): [True: 24.3M, False: 204k]
  ------------------
  244|       |			/* If we get here, bps is 4 or larger, or init will have failed */
  245|  24.3M|                        dat[i] = (int32_t)(((uint32_t)(dat[i]) << (32-bps)) >> (32-bps));
  246|       |
  247|   226k|                const uint32_t samples = dat.size() / channels;
  248|   226k|                if ( samples > 0 ) {
  ------------------
  |  Branch (248:22): [True: 189k, False: 36.1k]
  ------------------
  249|   189k|                    const int32_t* ptr = dat.data();
  250|   189k|                    const bool res = encoder.process_interleaved(ptr, samples);
  251|   189k|                    fuzzing::memory::memory_test(res);
  252|   189k|                }
  253|   226k|            }
  254|   226k|        }
  255|  11.5k|    } catch ( ... ) { }
  256|       |
  257|  11.8k|end:
  258|  11.8k|    {
  259|  11.8k|        const bool res = encoder.finish();
  260|  11.8k|        fuzzing::memory::memory_test(res);
  261|  11.8k|    }
  262|  11.8k|    return 0;
  263|  11.8k|}
_ZN4FLAC7Encoder12FuzzerStreamC2ERN7fuzzing10datasource10DatasourceE:
   41|  11.8k|                    Stream() { }
_ZN4FLAC7Encoder12FuzzerStream14write_callbackEPKhmjj:
   43|   150k|                ::FLAC__StreamEncoderWriteStatus write_callback(const FLAC__byte buffer[], size_t bytes, uint32_t /* samples */, uint32_t /* current_frame */) override {
   44|   150k|                    fuzzing::memory::memory_test(buffer, bytes);
   45|       |#if 0
   46|       |                    try {
   47|       |                        if ( ds.Get<bool>() == true ) {
   48|       |	                        return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
   49|       |                        }
   50|       |                    } catch ( ... ) { }
   51|       |#endif
   52|   150k|                    return FLAC__STREAM_ENCODER_WRITE_STATUS_OK;
   53|   150k|                }

_ZN7fuzzing10datasource4Base3GetIbEET_m:
   72|  30.9M|{
   73|  30.9M|    uint8_t ret;
   74|  30.9M|    const auto v = get(sizeof(ret), sizeof(ret), id);
   75|  30.9M|    memcpy(&ret, v.data(), sizeof(ret));
   76|  30.9M|    return (ret % 2) ? true : false;
  ------------------
  |  Branch (76:12): [True: 30.6M, False: 295k]
  ------------------
   77|  30.9M|}
_ZN7fuzzing10datasource4Base3GetINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEET_m:
   80|  11.7k|{
   81|  11.7k|    auto data = GetData(id);
   82|  11.7k|    return std::string(data.data(), data.data() + data.size());
   83|  11.7k|}
_ZN7fuzzing10datasource4Base7GetDataEmmm:
  104|  11.7k|{
  105|  11.7k|    return get(min, max, id);
  106|  11.7k|}
_ZN7fuzzing10datasource10DatasourceC2EPKhm:
  151|  11.8k|    Base(), data(_data), size(_size), idx(0), left(size)
  152|  11.8k|{
  153|  11.8k|}
_ZN7fuzzing10datasource10Datasource3getEmmm:
  155|  61.1M|std::vector<uint8_t> Datasource::get(const size_t min, const size_t max, const uint64_t id) {
  156|  61.1M|    (void)id;
  157|       |
  158|  61.1M|    uint32_t getSize;
  159|  61.1M|    if ( left < sizeof(getSize) ) {
  ------------------
  |  Branch (159:10): [True: 9.05k, False: 61.1M]
  ------------------
  160|  9.05k|        throw OutOfData();
  161|  9.05k|    }
  162|  61.1M|    memcpy(&getSize, data + idx, sizeof(getSize));
  163|  61.1M|    idx += sizeof(getSize);
  164|  61.1M|    left -= sizeof(getSize);
  165|       |
  166|  61.1M|    if ( getSize < min ) {
  ------------------
  |  Branch (166:10): [True: 35.6k, False: 61.1M]
  ------------------
  167|  35.6k|        getSize = min;
  168|  35.6k|    }
  169|  61.1M|    if ( max && getSize > max ) {
  ------------------
  |  Branch (169:10): [True: 61.1M, False: 11.7k]
  |  Branch (169:17): [True: 61.1M, False: 36.3k]
  ------------------
  170|  61.1M|        getSize = max;
  171|  61.1M|    }
  172|       |
  173|  61.1M|    if ( left < getSize ) {
  ------------------
  |  Branch (173:10): [True: 1.11k, False: 61.1M]
  ------------------
  174|  1.11k|        throw OutOfData();
  175|  1.11k|    }
  176|       |
  177|  61.1M|    std::vector<uint8_t> ret(getSize);
  178|       |
  179|  61.1M|    if ( getSize > 0 ) {
  ------------------
  |  Branch (179:10): [True: 61.1M, False: 7.89k]
  ------------------
  180|  61.1M|        memcpy(ret.data(), data + idx, getSize);
  181|  61.1M|    }
  182|  61.1M|    idx += getSize;
  183|  61.1M|    left -= getSize;
  184|       |
  185|  61.1M|    return ret;
  186|  61.1M|}
_ZN7fuzzing10datasource4BaseC2Ev:
   43|  11.8k|        Base(void) = default;
_ZN7fuzzing10datasource4BaseD2Ev:
   44|  11.8k|        virtual ~Base(void) = default;
_ZN7fuzzing10datasource4Base9OutOfDataC2Ev:
   53|  10.1k|                OutOfData() = default;
_ZN7fuzzing10datasource4Base3GetItEET_m:
   64|  9.97k|{
   65|  9.97k|    T ret;
   66|  9.97k|    const auto v = get(sizeof(ret), sizeof(ret), id);
   67|  9.97k|    memcpy(&ret, v.data(), sizeof(ret));
   68|  9.97k|    return ret;
   69|  9.97k|}
_ZN7fuzzing10datasource4Base3GetIhEET_m:
   64|  47.1k|{
   65|  47.1k|    T ret;
   66|  47.1k|    const auto v = get(sizeof(ret), sizeof(ret), id);
   67|  47.1k|    memcpy(&ret, v.data(), sizeof(ret));
   68|  47.1k|    return ret;
   69|  47.1k|}
_ZN7fuzzing10datasource4Base3GetIlEET_m:
   64|  11.7k|{
   65|  11.7k|    T ret;
   66|  11.7k|    const auto v = get(sizeof(ret), sizeof(ret), id);
   67|  11.7k|    memcpy(&ret, v.data(), sizeof(ret));
   68|  11.7k|    return ret;
   69|  11.7k|}
_ZN7fuzzing10datasource4Base3GetIjEET_m:
   64|  59.9k|{
   65|  59.9k|    T ret;
   66|  59.9k|    const auto v = get(sizeof(ret), sizeof(ret), id);
   67|  59.9k|    memcpy(&ret, v.data(), sizeof(ret));
   68|  59.9k|    return ret;
   69|  59.9k|}
_ZN7fuzzing10datasource4Base3GetImEET_m:
   64|  9.98k|{
   65|  9.98k|    T ret;
   66|  9.98k|    const auto v = get(sizeof(ret), sizeof(ret), id);
   67|  9.98k|    memcpy(&ret, v.data(), sizeof(ret));
   68|  9.98k|    return ret;
   69|  9.98k|}
_ZN7fuzzing10datasource4Base9GetVectorIiEENSt3__16vectorIT_NS3_9allocatorIS5_EEEEm:
  122|   226k|std::vector<T> Base::GetVector(const uint64_t id) {
  123|   226k|    std::vector<T> ret;
  124|       |
  125|  30.3M|    while ( Get<bool>(id) == true ) {
  ------------------
  |  Branch (125:13): [True: 30.1M, False: 226k]
  ------------------
  126|  30.1M|        ret.push_back( Get<T>(id) );
  127|  30.1M|    }
  128|       |
  129|   226k|    return ret;
  130|   226k|}
_ZN7fuzzing10datasource4Base3GetIiEET_m:
   64|  30.1M|{
   65|  30.1M|    T ret;
   66|  30.1M|    const auto v = get(sizeof(ret), sizeof(ret), id);
   67|  30.1M|    memcpy(&ret, v.data(), sizeof(ret));
   68|  30.1M|    return ret;
   69|  30.1M|}

_ZN7fuzzing9exception13FlowExceptionC2Ev:
   41|  10.1k|        FlowException(void) : ExceptionBase() { }
_ZN7fuzzing9exception13ExceptionBaseC2Ev:
   34|  10.1k|        ExceptionBase(void) = default;

_ZN7fuzzing6memory16memory_test_asanEPKvm:
   50|   150k|{
   51|   150k|    (void)data;
   52|   150k|    (void)size;
   53|       |
   54|       |#if ASAN == 1
   55|       |    if ( __asan_region_is_poisoned(data, size) != NULL ) {
   56|       |        abort();
   57|       |    }
   58|       |#endif
   59|   150k|}
_ZN7fuzzing6memory16memory_test_msanEPKvm:
   62|   150k|{
   63|   150k|    (void)data;
   64|   150k|    (void)size;
   65|       |
   66|       |#if MSAN == 1
   67|       |    __msan_check_mem_is_initialized(data, size);
   68|       |#endif
   69|   150k|}
_ZN7fuzzing6memory11memory_testEPKvm:
   72|   150k|{
   73|   150k|    memory_test_asan(data, size);
   74|   150k|    memory_test_msan(data, size);
   75|   150k|}
_ZN7fuzzing6memory11memory_testIbEEvRKT_:
   79|   434k|{
   80|   434k|    (void)t;
   81|   434k|}

_ZN4FLAC7Encoder6StreamC2Ev:
   56|  11.8k|		encoder_(::FLAC__stream_encoder_new())
   57|  11.8k|		{ }
_ZN4FLAC7Encoder6StreamD2Ev:
   60|  11.8k|		{
   61|  11.8k|			if(0 != encoder_) {
  ------------------
  |  Branch (61:7): [True: 11.8k, False: 0]
  ------------------
   62|  11.8k|				(void)::FLAC__stream_encoder_finish(encoder_);
   63|  11.8k|				::FLAC__stream_encoder_delete(encoder_);
   64|  11.8k|			}
   65|  11.8k|		}
_ZNK4FLAC7Encoder6Stream8is_validEv:
   68|   842k|		{
   69|   842k|			return 0 != encoder_;
   70|   842k|		}
_ZN4FLAC7Encoder6Stream21set_ogg_serial_numberEl:
   73|  21.3k|		{
   74|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
   75|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_ogg_serial_number(encoder_, value));
   76|  21.3k|		}
_ZN4FLAC7Encoder6Stream10set_verifyEb:
   79|  21.3k|		{
   80|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
   81|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_verify(encoder_, value));
   82|  21.3k|		}
_ZN4FLAC7Encoder6Stream21set_streamable_subsetEb:
   85|  21.3k|		{
   86|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
   87|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_streamable_subset(encoder_, value));
   88|  21.3k|		}
_ZN4FLAC7Encoder6Stream12set_channelsEj:
   91|  21.3k|		{
   92|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
   93|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_channels(encoder_, value));
   94|  21.3k|		}
_ZN4FLAC7Encoder6Stream19set_bits_per_sampleEj:
   97|  21.3k|		{
   98|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
   99|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_bits_per_sample(encoder_, value));
  100|  21.3k|		}
_ZN4FLAC7Encoder6Stream15set_sample_rateEj:
  103|  19.4k|		{
  104|  19.4k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
  105|  19.4k|			return static_cast<bool>(::FLAC__stream_encoder_set_sample_rate(encoder_, value));
  106|  19.4k|		}
_ZN4FLAC7Encoder6Stream21set_compression_levelEj:
  109|  21.3k|		{
  110|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
  111|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_compression_level(encoder_, value));
  112|  21.3k|		}
_ZN4FLAC7Encoder6Stream13set_blocksizeEj:
  115|  19.4k|		{
  116|  19.4k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
  117|  19.4k|			return static_cast<bool>(::FLAC__stream_encoder_set_blocksize(encoder_, value));
  118|  19.4k|		}
_ZN4FLAC7Encoder6Stream22set_do_mid_side_stereoEb:
  121|  21.3k|		{
  122|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
  123|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_do_mid_side_stereo(encoder_, value));
  124|  21.3k|		}
_ZN4FLAC7Encoder6Stream25set_loose_mid_side_stereoEb:
  127|  21.3k|		{
  128|  21.3k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
  129|  21.3k|			return static_cast<bool>(::FLAC__stream_encoder_set_loose_mid_side_stereo(encoder_, value));
  130|  21.3k|		}
_ZN4FLAC7Encoder6Stream15set_apodizationEPKc:
  133|  22.6k|		{
  134|  22.6k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  22.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.6k]
  |  |  ------------------
  ------------------
  135|  22.6k|			return static_cast<bool>(::FLAC__stream_encoder_set_apodization(encoder_, specification));
  136|  22.6k|		}
_ZN4FLAC7Encoder6Stream17set_max_lpc_orderEj:
  139|  19.7k|		{
  140|  19.7k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.7k]
  |  |  ------------------
  ------------------
  141|  19.7k|			return static_cast<bool>(::FLAC__stream_encoder_set_max_lpc_order(encoder_, value));
  142|  19.7k|		}
_ZN4FLAC7Encoder6Stream23set_qlp_coeff_precisionEj:
  145|  19.6k|		{
  146|  19.6k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.6k]
  |  |  ------------------
  ------------------
  147|  19.6k|			return static_cast<bool>(::FLAC__stream_encoder_set_qlp_coeff_precision(encoder_, value));
  148|  19.6k|		}
_ZN4FLAC7Encoder6Stream28set_do_qlp_coeff_prec_searchEb:
  151|  19.7k|		{
  152|  19.7k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.7k]
  |  |  ------------------
  ------------------
  153|  19.7k|			return static_cast<bool>(::FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder_, value));
  154|  19.7k|		}
_ZN4FLAC7Encoder6Stream20set_do_escape_codingEb:
  157|  19.5k|		{
  158|  19.5k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
  159|  19.5k|			return static_cast<bool>(::FLAC__stream_encoder_set_do_escape_coding(encoder_, value));
  160|  19.5k|		}
_ZN4FLAC7Encoder6Stream30set_do_exhaustive_model_searchEb:
  163|  21.5k|		{
  164|  21.5k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  21.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.5k]
  |  |  ------------------
  ------------------
  165|  21.5k|			return static_cast<bool>(::FLAC__stream_encoder_set_do_exhaustive_model_search(encoder_, value));
  166|  21.5k|		}
_ZN4FLAC7Encoder6Stream32set_min_residual_partition_orderEj:
  169|  19.5k|		{
  170|  19.5k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
  171|  19.5k|			return static_cast<bool>(::FLAC__stream_encoder_set_min_residual_partition_order(encoder_, value));
  172|  19.5k|		}
_ZN4FLAC7Encoder6Stream32set_max_residual_partition_orderEj:
  175|  19.5k|		{
  176|  19.5k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
  177|  19.5k|			return static_cast<bool>(::FLAC__stream_encoder_set_max_residual_partition_order(encoder_, value));
  178|  19.5k|		}
_ZN4FLAC7Encoder6Stream30set_rice_parameter_search_distEj:
  181|  19.5k|		{
  182|  19.5k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
  183|  19.5k|			return static_cast<bool>(::FLAC__stream_encoder_set_rice_parameter_search_dist(encoder_, value));
  184|  19.5k|		}
_ZN4FLAC7Encoder6Stream26set_total_samples_estimateEm:
  187|  19.5k|		{
  188|  19.5k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
  189|  19.5k|			return static_cast<bool>(::FLAC__stream_encoder_set_total_samples_estimate(encoder_, value));
  190|  19.5k|		}
_ZN4FLAC7Encoder6Stream21set_limit_min_bitrateEb:
  215|  19.4k|		{
  216|  19.4k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
  217|  19.4k|			return static_cast<bool>(::FLAC__stream_encoder_set_limit_min_bitrate(encoder_, value));
  218|  19.4k|		}
_ZN4FLAC7Encoder6Stream15set_num_threadsEj:
  221|  19.4k|		{
  222|  19.4k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
  223|  19.4k|			return ::FLAC__stream_encoder_set_num_threads(encoder_, value);
  224|  19.4k|		}
_ZNK4FLAC7Encoder6Stream10get_verifyEv:
  245|  9.55k|		{
  246|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  247|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_verify(encoder_));
  248|  9.55k|		}
_ZNK4FLAC7Encoder6Stream21get_streamable_subsetEv:
  251|  9.55k|		{
  252|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  253|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_streamable_subset(encoder_));
  254|  9.55k|		}
_ZNK4FLAC7Encoder6Stream22get_do_mid_side_stereoEv:
  257|  9.55k|		{
  258|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  259|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_do_mid_side_stereo(encoder_));
  260|  9.55k|		}
_ZNK4FLAC7Encoder6Stream25get_loose_mid_side_stereoEv:
  263|  9.55k|		{
  264|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  265|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_loose_mid_side_stereo(encoder_));
  266|  9.55k|		}
_ZNK4FLAC7Encoder6Stream12get_channelsEv:
  269|  9.55k|		{
  270|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  271|  9.55k|			return ::FLAC__stream_encoder_get_channels(encoder_);
  272|  9.55k|		}
_ZNK4FLAC7Encoder6Stream19get_bits_per_sampleEv:
  275|  9.55k|		{
  276|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  277|  9.55k|			return ::FLAC__stream_encoder_get_bits_per_sample(encoder_);
  278|  9.55k|		}
_ZNK4FLAC7Encoder6Stream15get_sample_rateEv:
  281|  9.55k|		{
  282|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  283|  9.55k|			return ::FLAC__stream_encoder_get_sample_rate(encoder_);
  284|  9.55k|		}
_ZNK4FLAC7Encoder6Stream13get_blocksizeEv:
  287|  9.55k|		{
  288|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  289|  9.55k|			return ::FLAC__stream_encoder_get_blocksize(encoder_);
  290|  9.55k|		}
_ZNK4FLAC7Encoder6Stream17get_max_lpc_orderEv:
  293|  9.55k|		{
  294|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  295|  9.55k|			return ::FLAC__stream_encoder_get_max_lpc_order(encoder_);
  296|  9.55k|		}
_ZNK4FLAC7Encoder6Stream23get_qlp_coeff_precisionEv:
  299|  9.55k|		{
  300|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  301|  9.55k|			return ::FLAC__stream_encoder_get_qlp_coeff_precision(encoder_);
  302|  9.55k|		}
_ZNK4FLAC7Encoder6Stream28get_do_qlp_coeff_prec_searchEv:
  305|  9.55k|		{
  306|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  307|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_do_qlp_coeff_prec_search(encoder_));
  308|  9.55k|		}
_ZNK4FLAC7Encoder6Stream20get_do_escape_codingEv:
  311|  9.55k|		{
  312|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  313|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_do_escape_coding(encoder_));
  314|  9.55k|		}
_ZNK4FLAC7Encoder6Stream30get_do_exhaustive_model_searchEv:
  317|  9.55k|		{
  318|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  319|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_do_exhaustive_model_search(encoder_));
  320|  9.55k|		}
_ZNK4FLAC7Encoder6Stream32get_min_residual_partition_orderEv:
  323|  9.55k|		{
  324|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  325|  9.55k|			return ::FLAC__stream_encoder_get_min_residual_partition_order(encoder_);
  326|  9.55k|		}
_ZNK4FLAC7Encoder6Stream32get_max_residual_partition_orderEv:
  329|  9.55k|		{
  330|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  331|  9.55k|			return ::FLAC__stream_encoder_get_max_residual_partition_order(encoder_);
  332|  9.55k|		}
_ZNK4FLAC7Encoder6Stream30get_rice_parameter_search_distEv:
  335|  9.55k|		{
  336|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  337|  9.55k|			return ::FLAC__stream_encoder_get_rice_parameter_search_dist(encoder_);
  338|  9.55k|		}
_ZNK4FLAC7Encoder6Stream26get_total_samples_estimateEv:
  341|  9.55k|		{
  342|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  343|  9.55k|			return ::FLAC__stream_encoder_get_total_samples_estimate(encoder_);
  344|  9.55k|		}
_ZNK4FLAC7Encoder6Stream21get_limit_min_bitrateEv:
  347|  9.55k|		{
  348|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  349|  9.55k|			return static_cast<bool>(::FLAC__stream_encoder_get_limit_min_bitrate(encoder_));
  350|  9.55k|		}
_ZNK4FLAC7Encoder6Stream15get_num_threadsEv:
  353|  9.55k|		{
  354|  9.55k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  355|  9.55k|			return ::FLAC__stream_encoder_get_num_threads(encoder_);
  356|  9.55k|		}
_ZN4FLAC7Encoder6Stream4initEv:
  359|  6.72k|		{
  360|  6.72k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  6.72k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 6.72k]
  |  |  ------------------
  ------------------
  361|  6.72k|			return ::FLAC__stream_encoder_init_stream(encoder_, write_callback_, seek_callback_, tell_callback_, metadata_callback_, /*client_data=*/(void*)this);
  362|  6.72k|		}
_ZN4FLAC7Encoder6Stream8init_oggEv:
  365|  3.08k|		{
  366|  3.08k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  3.08k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 3.08k]
  |  |  ------------------
  ------------------
  367|  3.08k|			return ::FLAC__stream_encoder_init_ogg_stream(encoder_, read_callback_, write_callback_, seek_callback_, tell_callback_, metadata_callback_, /*client_data=*/(void*)this);
  368|  3.08k|		}
_ZN4FLAC7Encoder6Stream6finishEv:
  371|  11.8k|		{
  372|  11.8k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|  11.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  373|  11.8k|			return static_cast<bool>(::FLAC__stream_encoder_finish(encoder_));
  374|  11.8k|		}
_ZN4FLAC7Encoder6Stream19process_interleavedEPKij:
  383|   189k|		{
  384|   189k|			FLAC__ASSERT(is_valid());
  ------------------
  |  |   38|   189k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 189k]
  |  |  ------------------
  ------------------
  385|   189k|			return static_cast<bool>(::FLAC__stream_encoder_process_interleaved(encoder_, buffer, samples));
  386|   189k|		}
_ZN4FLAC7Encoder6Stream13seek_callbackEm:
  395|  9.46k|		{
  396|  9.46k|			(void)absolute_byte_offset;
  397|  9.46k|			return ::FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED;
  398|  9.46k|		}
_ZN4FLAC7Encoder6Stream13tell_callbackEPm:
  401|  38.2k|		{
  402|  38.2k|			(void)absolute_byte_offset;
  403|  38.2k|			return ::FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED;
  404|  38.2k|		}
_ZN4FLAC7Encoder6Stream17metadata_callbackEPK20FLAC__StreamMetadata:
  407|  9.46k|		{
  408|  9.46k|			(void)metadata;
  409|  9.46k|		}
_ZN4FLAC7Encoder6Stream15write_callback_EPK19FLAC__StreamEncoderPKhmjjPv:
  421|   150k|		{
  422|   150k|			(void)encoder;
  423|   150k|			FLAC__ASSERT(0 != client_data);
  ------------------
  |  |   38|   150k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 150k]
  |  |  ------------------
  ------------------
  424|   150k|			Stream *instance = reinterpret_cast<Stream *>(client_data);
  425|   150k|			FLAC__ASSERT(0 != instance);
  ------------------
  |  |   38|   150k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 150k]
  |  |  ------------------
  ------------------
  426|   150k|			return instance->write_callback(buffer, bytes, samples, current_frame);
  427|   150k|		}
_ZN4FLAC7Encoder6Stream14seek_callback_EPK19FLAC__StreamEncodermPv:
  430|  9.46k|		{
  431|  9.46k|			(void)encoder;
  432|  9.46k|			FLAC__ASSERT(0 != client_data);
  ------------------
  |  |   38|  9.46k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.46k]
  |  |  ------------------
  ------------------
  433|  9.46k|			Stream *instance = reinterpret_cast<Stream *>(client_data);
  434|  9.46k|			FLAC__ASSERT(0 != instance);
  ------------------
  |  |   38|  9.46k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.46k]
  |  |  ------------------
  ------------------
  435|  9.46k|			return instance->seek_callback(absolute_byte_offset);
  436|  9.46k|		}
_ZN4FLAC7Encoder6Stream14tell_callback_EPK19FLAC__StreamEncoderPmPv:
  439|  38.2k|		{
  440|  38.2k|			(void)encoder;
  441|  38.2k|			FLAC__ASSERT(0 != client_data);
  ------------------
  |  |   38|  38.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 38.2k]
  |  |  ------------------
  ------------------
  442|  38.2k|			Stream *instance = reinterpret_cast<Stream *>(client_data);
  443|  38.2k|			FLAC__ASSERT(0 != instance);
  ------------------
  |  |   38|  38.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 38.2k]
  |  |  ------------------
  ------------------
  444|  38.2k|			return instance->tell_callback(absolute_byte_offset);
  445|  38.2k|		}
_ZN4FLAC7Encoder6Stream18metadata_callback_EPK19FLAC__StreamEncoderPK20FLAC__StreamMetadataPv:
  448|  9.46k|		{
  449|  9.46k|			(void)encoder;
  450|  9.46k|			FLAC__ASSERT(0 != client_data);
  ------------------
  |  |   38|  9.46k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.46k]
  |  |  ------------------
  ------------------
  451|  9.46k|			Stream *instance = reinterpret_cast<Stream *>(client_data);
  452|  9.46k|			FLAC__ASSERT(0 != instance);
  ------------------
  |  |   38|  9.46k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.46k]
  |  |  ------------------
  ------------------
  453|  9.46k|			instance->metadata_callback(metadata);
  454|  9.46k|		}

FLAC__bitmath_silog2:
   64|  26.7M|{
   65|  26.7M|	if(v == 0)
  ------------------
  |  Branch (65:5): [True: 146k, False: 26.6M]
  ------------------
   66|   146k|		return 0;
   67|       |
   68|  26.6M|	if(v == -1)
  ------------------
  |  Branch (68:5): [True: 0, False: 26.6M]
  ------------------
   69|      0|		return 2;
   70|       |
   71|  26.6M|	v = (v < 0) ? (-(v+1)) : v;
  ------------------
  |  Branch (71:6): [True: 0, False: 26.6M]
  ------------------
   72|  26.6M|	return FLAC__bitmath_ilog2_wide(v)+2;
   73|  26.6M|}

FLAC__bitreader_new:
  257|  8.32k|{
  258|  8.32k|	FLAC__BitReader *br = calloc(1, sizeof(FLAC__BitReader));
  259|       |
  260|       |	/* calloc() implies:
  261|       |		memset(br, 0, sizeof(FLAC__BitReader));
  262|       |		br->buffer = 0;
  263|       |		br->capacity = 0;
  264|       |		br->words = br->bytes = 0;
  265|       |		br->consumed_words = br->consumed_bits = 0;
  266|       |		br->read_callback = 0;
  267|       |		br->client_data = 0;
  268|       |	*/
  269|  8.32k|	return br;
  270|  8.32k|}
FLAC__bitreader_delete:
  273|  8.32k|{
  274|  8.32k|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  275|       |
  276|  8.32k|	FLAC__bitreader_free(br);
  277|  8.32k|	free(br);
  278|  8.32k|}
FLAC__bitreader_init:
  287|  8.32k|{
  288|  8.32k|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  289|       |
  290|  8.32k|	br->words = br->bytes = 0;
  291|  8.32k|	br->consumed_words = br->consumed_bits = 0;
  292|  8.32k|	br->capacity = FLAC__BITREADER_DEFAULT_CAPACITY;
  293|  8.32k|	br->buffer = malloc(sizeof(brword) * br->capacity);
  294|  8.32k|	if(br->buffer == 0)
  ------------------
  |  Branch (294:5): [True: 0, False: 8.32k]
  ------------------
  295|      0|		return false;
  296|  8.32k|	br->read_callback = rcb;
  297|  8.32k|	br->client_data = cd;
  298|  8.32k|	br->read_limit_set = false;
  299|  8.32k|	br->read_limit = -1;
  300|  8.32k|	br->last_seen_framesync = -1;
  301|       |
  302|       |	return true;
  303|  8.32k|}
FLAC__bitreader_free:
  306|  16.6k|{
  307|  16.6k|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  308|       |
  309|  16.6k|	if(0 != br->buffer)
  ------------------
  |  Branch (309:5): [True: 8.32k, False: 8.32k]
  ------------------
  310|  8.32k|		free(br->buffer);
  311|  16.6k|	br->buffer = 0;
  312|  16.6k|	br->capacity = 0;
  313|  16.6k|	br->words = br->bytes = 0;
  314|  16.6k|	br->consumed_words = br->consumed_bits = 0;
  315|  16.6k|	br->read_callback = 0;
  316|  16.6k|	br->client_data = 0;
  317|       |	br->read_limit_set = false;
  318|  16.6k|	br->read_limit = -1;
  319|  16.6k|	br->last_seen_framesync = -1;
  320|  16.6k|}
FLAC__bitreader_clear:
  323|  8.32k|{
  324|  8.32k|	br->words = br->bytes = 0;
  325|  8.32k|	br->consumed_words = br->consumed_bits = 0;
  326|  8.32k|	br->read_limit_set = false;
  327|  8.32k|	br->read_limit = -1;
  328|  8.32k|	br->last_seen_framesync = -1;
  329|       |	return true;
  330|  8.32k|}
FLAC__bitreader_set_framesync_location:
  333|   203k|{
  334|   203k|	br->last_seen_framesync = br->consumed_words * FLAC__BYTES_PER_WORD + br->consumed_bits / 8;
  ------------------
  |  |   72|   203k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  335|   203k|}
FLAC__bitreader_reset_read_crc16:
  351|   203k|{
  352|   203k|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
  353|   203k|	FLAC__ASSERT(0 != br->buffer);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
  354|   203k|	FLAC__ASSERT((br->consumed_bits & 7) == 0);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
  355|       |
  356|   203k|	br->read_crc16 = (uint32_t)seed;
  357|   203k|	br->crc16_offset = br->consumed_words;
  358|   203k|	br->crc16_align = br->consumed_bits;
  359|   203k|}
FLAC__bitreader_get_read_crc16:
  362|   203k|{
  363|   203k|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
  364|   203k|	FLAC__ASSERT(0 != br->buffer);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
  365|       |
  366|       |	/* CRC consumed words up to here */
  367|   203k|	crc16_update_block_(br);
  368|       |
  369|   203k|	FLAC__ASSERT((br->consumed_bits & 7) == 0);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
  370|   203k|	FLAC__ASSERT(br->crc16_align <= br->consumed_bits);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
  371|       |
  372|       |	/* CRC any tail bytes in a partially-consumed word */
  373|   203k|	if(br->consumed_bits) {
  ------------------
  |  Branch (373:5): [True: 177k, False: 26.4k]
  ------------------
  374|   177k|		const brword tail = br->buffer[br->consumed_words];
  375|   888k|		for( ; br->crc16_align < br->consumed_bits; br->crc16_align += 8)
  ------------------
  |  Branch (375:10): [True: 711k, False: 177k]
  ------------------
  376|   711k|			br->read_crc16 = FLAC__CRC16_UPDATE((uint32_t)((tail >> (FLAC__BITS_PER_WORD-8-br->crc16_align)) & 0xff), br->read_crc16);
  ------------------
  |  |   50|   711k|#define FLAC__CRC16_UPDATE(data, crc) ((((crc)<<8) & 0xffff) ^ FLAC__crc16_table[0][((crc)>>8) ^ (data)])
  ------------------
  377|   177k|	}
  378|   203k|	return br->read_crc16;
  379|   203k|}
FLAC__bitreader_is_consumed_byte_aligned:
  382|   669k|{
  383|   669k|	return ((br->consumed_bits & 7) == 0);
  384|   669k|}
FLAC__bitreader_bits_left_for_byte_alignment:
  387|  90.4k|{
  388|  90.4k|	return 8 - (br->consumed_bits & 7);
  389|  90.4k|}
FLAC__bitreader_read_raw_uint32:
  419|  11.2M|{
  420|  11.2M|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  11.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.2M]
  |  |  ------------------
  ------------------
  421|  11.2M|	FLAC__ASSERT(0 != br->buffer);
  ------------------
  |  |   38|  11.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.2M]
  |  |  ------------------
  ------------------
  422|       |
  423|  11.2M|	FLAC__ASSERT(bits <= 32);
  ------------------
  |  |   38|  11.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.2M]
  |  |  ------------------
  ------------------
  424|  11.2M|	FLAC__ASSERT((br->capacity*FLAC__BITS_PER_WORD) * 2 >= bits);
  ------------------
  |  |   38|  11.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.2M]
  |  |  ------------------
  ------------------
  425|  11.2M|	FLAC__ASSERT(br->consumed_words <= br->words);
  ------------------
  |  |   38|  11.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.2M]
  |  |  ------------------
  ------------------
  426|       |
  427|       |	/* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
  428|  11.2M|	FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
  ------------------
  |  |   38|  11.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 11.2M]
  |  |  ------------------
  ------------------
  429|       |
  430|  11.2M|	if(bits == 0) { /* OPT: investigate if this can ever happen, maybe change to assertion */
  ------------------
  |  Branch (430:5): [True: 0, False: 11.2M]
  ------------------
  431|      0|		*val = 0;
  432|      0|		return true;
  433|      0|	}
  434|       |
  435|  11.2M|	if(br->read_limit_set && br->read_limit < (uint32_t)-1){
  ------------------
  |  Branch (435:5): [True: 0, False: 11.2M]
  |  Branch (435:27): [True: 0, False: 0]
  ------------------
  436|      0|		if(br->read_limit < bits) {
  ------------------
  |  Branch (436:6): [True: 0, False: 0]
  ------------------
  437|      0|			br->read_limit = -1;
  438|      0|			return false;
  439|      0|		}
  440|      0|		else
  441|      0|			br->read_limit -= bits;
  442|      0|	}
  443|       |
  444|  11.5M|	while((br->words-br->consumed_words)*FLAC__BITS_PER_WORD + br->bytes*8 - br->consumed_bits < bits) {
  ------------------
  |  |   73|  11.5M|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (444:8): [True: 236k, False: 11.2M]
  ------------------
  445|   236k|		if(!bitreader_read_from_client_(br))
  ------------------
  |  Branch (445:6): [True: 0, False: 236k]
  ------------------
  446|      0|			return false;
  447|   236k|	}
  448|  11.2M|	if(br->consumed_words < br->words) { /* if we've not consumed up to a partial tail word... */
  ------------------
  |  Branch (448:5): [True: 10.8M, False: 474k]
  ------------------
  449|       |		/* OPT: taking out the consumed_bits==0 "else" case below might make things faster if less code allows the compiler to inline this function */
  450|  10.8M|		if(br->consumed_bits) {
  ------------------
  |  Branch (450:6): [True: 9.92M, False: 876k]
  ------------------
  451|       |			/* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
  452|  9.92M|			const uint32_t n = FLAC__BITS_PER_WORD - br->consumed_bits;
  ------------------
  |  |   73|  9.92M|#define FLAC__BITS_PER_WORD 64
  ------------------
  453|  9.92M|			const brword word = br->buffer[br->consumed_words];
  454|  9.92M|			const brword mask = br->consumed_bits < FLAC__BITS_PER_WORD ? FLAC__WORD_ALL_ONES >> br->consumed_bits : 0;
  ------------------
  |  |   73|  9.92M|#define FLAC__BITS_PER_WORD 64
  ------------------
              			const brword mask = br->consumed_bits < FLAC__BITS_PER_WORD ? FLAC__WORD_ALL_ONES >> br->consumed_bits : 0;
  ------------------
  |  |   74|  9.92M|#define FLAC__WORD_ALL_ONES ((FLAC__uint64)FLAC__U64L(0xffffffffffffffff))
  |  |  ------------------
  |  |  |  |  102|  9.92M|#define FLAC__U64L(x) x##ULL
  |  |  ------------------
  ------------------
  |  Branch (454:24): [True: 9.92M, False: 0]
  ------------------
  455|  9.92M|			if(bits < n) {
  ------------------
  |  Branch (455:7): [True: 6.91M, False: 3.01M]
  ------------------
  456|  6.91M|				uint32_t shift = n - bits;
  457|  6.91M|				*val = shift < FLAC__BITS_PER_WORD ? (FLAC__uint32)((word & mask) >> shift) : 0; /* The result has <= 32 non-zero bits */
  ------------------
  |  |   73|  6.91M|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (457:12): [True: 6.91M, False: 0]
  ------------------
  458|  6.91M|				br->consumed_bits += bits;
  459|  6.91M|				return true;
  460|  6.91M|			}
  461|       |			/* (FLAC__BITS_PER_WORD - br->consumed_bits <= bits) ==> (FLAC__WORD_ALL_ONES >> br->consumed_bits) has no more than 'bits' non-zero bits */
  462|  3.01M|			*val = (FLAC__uint32)(word & mask);
  463|  3.01M|			bits -= n;
  464|  3.01M|			br->consumed_words++;
  465|  3.01M|			br->consumed_bits = 0;
  466|  3.01M|			if(bits) { /* if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
  ------------------
  |  Branch (466:7): [True: 2.07M, False: 941k]
  ------------------
  467|  2.07M|				uint32_t shift = FLAC__BITS_PER_WORD - bits;
  ------------------
  |  |   73|  2.07M|#define FLAC__BITS_PER_WORD 64
  ------------------
  468|  2.07M|				*val = bits < 32 ? *val << bits : 0;
  ------------------
  |  Branch (468:12): [True: 2.07M, False: 0]
  ------------------
  469|  2.07M|				*val |= shift < FLAC__BITS_PER_WORD ? (FLAC__uint32)(br->buffer[br->consumed_words] >> shift) : 0;
  ------------------
  |  |   73|  2.07M|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (469:13): [True: 2.07M, False: 0]
  ------------------
  470|  2.07M|				br->consumed_bits = bits;
  471|  2.07M|			}
  472|  3.01M|			return true;
  473|  9.92M|		}
  474|   876k|		else { /* br->consumed_bits == 0 */
  475|   876k|			const brword word = br->buffer[br->consumed_words];
  476|   876k|			if(bits < FLAC__BITS_PER_WORD) {
  ------------------
  |  |   73|   876k|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (476:7): [True: 876k, False: 0]
  ------------------
  477|   876k|				*val = (FLAC__uint32)(word >> (FLAC__BITS_PER_WORD-bits));
  ------------------
  |  |   73|   876k|#define FLAC__BITS_PER_WORD 64
  ------------------
  478|   876k|				br->consumed_bits = bits;
  479|   876k|				return true;
  480|   876k|			}
  481|       |			/* at this point bits == FLAC__BITS_PER_WORD == 32; because of previous assertions, it can't be larger */
  482|      0|			*val = (FLAC__uint32)word;
  483|      0|			br->consumed_words++;
  484|      0|			return true;
  485|   876k|		}
  486|  10.8M|	}
  487|   474k|	else {
  488|       |		/* in this case we're starting our read at a partial tail word;
  489|       |		 * the reader has guaranteed that we have at least 'bits' bits
  490|       |		 * available to read, which makes this case simpler.
  491|       |		 */
  492|       |		/* OPT: taking out the consumed_bits==0 "else" case below might make things faster if less code allows the compiler to inline this function */
  493|   474k|		if(br->consumed_bits) {
  ------------------
  |  Branch (493:6): [True: 364k, False: 109k]
  ------------------
  494|       |			/* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
  495|   364k|			FLAC__ASSERT(br->consumed_bits + bits <= br->bytes*8);
  ------------------
  |  |   38|   364k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 364k]
  |  |  ------------------
  ------------------
  496|   364k|			*val = (FLAC__uint32)((br->buffer[br->consumed_words] & (FLAC__WORD_ALL_ONES >> br->consumed_bits)) >> (FLAC__BITS_PER_WORD-br->consumed_bits-bits));
  ------------------
  |  |   74|   364k|#define FLAC__WORD_ALL_ONES ((FLAC__uint64)FLAC__U64L(0xffffffffffffffff))
  |  |  ------------------
  |  |  |  |  102|   364k|#define FLAC__U64L(x) x##ULL
  |  |  ------------------
  ------------------
              			*val = (FLAC__uint32)((br->buffer[br->consumed_words] & (FLAC__WORD_ALL_ONES >> br->consumed_bits)) >> (FLAC__BITS_PER_WORD-br->consumed_bits-bits));
  ------------------
  |  |   73|   364k|#define FLAC__BITS_PER_WORD 64
  ------------------
  497|   364k|			br->consumed_bits += bits;
  498|   364k|			return true;
  499|   364k|		}
  500|   109k|		else {
  501|   109k|			*val = (FLAC__uint32)(br->buffer[br->consumed_words] >> (FLAC__BITS_PER_WORD-bits));
  ------------------
  |  |   73|   109k|#define FLAC__BITS_PER_WORD 64
  ------------------
  502|   109k|			br->consumed_bits += bits;
  503|       |			return true;
  504|   109k|		}
  505|   474k|	}
  506|  11.2M|}
FLAC__bitreader_read_raw_int32:
  509|  3.69M|{
  510|  3.69M|	FLAC__uint32 uval, mask;
  511|       |	/* OPT: inline raw uint32 code here, or make into a macro if possible in the .h file */
  512|  3.69M|	if (bits < 1 || ! FLAC__bitreader_read_raw_uint32(br, &uval, bits))
  ------------------
  |  Branch (512:6): [True: 0, False: 3.69M]
  |  Branch (512:18): [True: 0, False: 3.69M]
  ------------------
  513|      0|		return false;
  514|       |	/* sign-extend *val assuming it is currently bits wide. */
  515|       |	/* From: https://graphics.stanford.edu/~seander/bithacks.html#FixedSignExtend */
  516|  3.69M|	mask = bits >= 33 ? 0 : 1lu << (bits - 1);
  ------------------
  |  Branch (516:9): [True: 0, False: 3.69M]
  ------------------
  517|  3.69M|	*val = (uval ^ mask) - mask;
  518|       |	return true;
  519|  3.69M|}
FLAC__bitreader_read_raw_uint64:
  522|  1.75M|{
  523|  1.75M|	FLAC__uint32 hi, lo;
  524|       |
  525|  1.75M|	if(bits > 32) {
  ------------------
  |  Branch (525:5): [True: 1.48M, False: 267k]
  ------------------
  526|  1.48M|		if(!FLAC__bitreader_read_raw_uint32(br, &hi, bits-32))
  ------------------
  |  Branch (526:6): [True: 0, False: 1.48M]
  ------------------
  527|      0|			return false;
  528|  1.48M|		if(!FLAC__bitreader_read_raw_uint32(br, &lo, 32))
  ------------------
  |  Branch (528:6): [True: 0, False: 1.48M]
  ------------------
  529|      0|			return false;
  530|  1.48M|		*val = hi;
  531|  1.48M|		*val <<= 32;
  532|  1.48M|		*val |= lo;
  533|  1.48M|	}
  534|   267k|	else {
  535|   267k|		if(!FLAC__bitreader_read_raw_uint32(br, &lo, bits))
  ------------------
  |  Branch (535:6): [True: 0, False: 267k]
  ------------------
  536|      0|			return false;
  537|   267k|		*val = lo;
  538|   267k|	}
  539|  1.75M|	return true;
  540|  1.75M|}
FLAC__bitreader_read_raw_int64:
  543|  1.74M|{
  544|  1.74M|	FLAC__uint64 uval, mask;
  545|       |	/* OPT: inline raw uint64 code here, or make into a macro if possible in the .h file */
  546|  1.74M|	if (bits < 1 || ! FLAC__bitreader_read_raw_uint64(br, &uval, bits))
  ------------------
  |  Branch (546:6): [True: 0, False: 1.74M]
  |  Branch (546:18): [True: 0, False: 1.74M]
  ------------------
  547|      0|		return false;
  548|       |	/* sign-extend *val assuming it is currently bits wide. */
  549|       |	/* From: https://graphics.stanford.edu/~seander/bithacks.html#FixedSignExtend */
  550|  1.74M|	mask = bits >= 65 ? 0 : 1llu << (bits - 1);
  ------------------
  |  Branch (550:9): [True: 0, False: 1.74M]
  ------------------
  551|  1.74M|	*val = (uval ^ mask) - mask;
  552|       |	return true;
  553|  1.74M|}
FLAC__bitreader_skip_byte_block_aligned_no_crc:
  616|  16.6k|{
  617|  16.6k|	FLAC__uint32 x;
  618|       |
  619|  16.6k|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  620|  16.6k|	FLAC__ASSERT(0 != br->buffer);
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  621|  16.6k|	FLAC__ASSERT(FLAC__bitreader_is_consumed_byte_aligned(br));
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  622|       |
  623|  16.6k|	if(br->read_limit_set && br->read_limit < (uint32_t)-1){
  ------------------
  |  Branch (623:5): [True: 0, False: 16.6k]
  |  Branch (623:27): [True: 0, False: 0]
  ------------------
  624|      0|		if(br->read_limit < nvals*8){
  ------------------
  |  Branch (624:6): [True: 0, False: 0]
  ------------------
  625|      0|			br->read_limit = -1;
  626|      0|			return false;
  627|      0|		}
  628|      0|	}
  629|       |
  630|       |	/* step 1: skip over partial head word to get word aligned */
  631|  33.2k|	while(nvals && br->consumed_bits) { /* i.e. run until we read 'nvals' bytes or we hit the end of the head word */
  ------------------
  |  Branch (631:8): [True: 24.9k, False: 8.32k]
  |  Branch (631:17): [True: 16.6k, False: 8.32k]
  ------------------
  632|  16.6k|		if(!FLAC__bitreader_read_raw_uint32(br, &x, 8))
  ------------------
  |  Branch (632:6): [True: 0, False: 16.6k]
  ------------------
  633|      0|			return false;
  634|  16.6k|		nvals--;
  635|  16.6k|	}
  636|  16.6k|	if(0 == nvals)
  ------------------
  |  Branch (636:5): [True: 8.32k, False: 8.32k]
  ------------------
  637|  8.32k|		return true;
  638|       |
  639|       |	/* step 2: skip whole words in chunks */
  640|  49.9k|	while(nvals >= FLAC__BYTES_PER_WORD) {
  ------------------
  |  |   72|  49.9k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  |  Branch (640:8): [True: 41.6k, False: 8.32k]
  ------------------
  641|  41.6k|		if(br->consumed_words < br->words) {
  ------------------
  |  Branch (641:6): [True: 41.6k, False: 0]
  ------------------
  642|  41.6k|			br->consumed_words++;
  643|  41.6k|			nvals -= FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|  41.6k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  644|  41.6k|			if(br->read_limit_set)
  ------------------
  |  Branch (644:7): [True: 0, False: 41.6k]
  ------------------
  645|      0|				br->read_limit -= FLAC__BITS_PER_WORD;
  ------------------
  |  |   73|      0|#define FLAC__BITS_PER_WORD 64
  ------------------
  646|  41.6k|		}
  647|      0|		else if(!bitreader_read_from_client_(br))
  ------------------
  |  Branch (647:11): [True: 0, False: 0]
  ------------------
  648|      0|			return false;
  649|  41.6k|	}
  650|       |	/* step 3: skip any remainder from partial tail bytes */
  651|  49.9k|	while(nvals) {
  ------------------
  |  Branch (651:8): [True: 41.6k, False: 8.32k]
  ------------------
  652|  41.6k|		if(!FLAC__bitreader_read_raw_uint32(br, &x, 8))
  ------------------
  |  Branch (652:6): [True: 0, False: 41.6k]
  ------------------
  653|      0|			return false;
  654|  41.6k|		nvals--;
  655|  41.6k|	}
  656|       |
  657|  8.32k|	return true;
  658|  8.32k|}
FLAC__bitreader_read_byte_block_aligned_no_crc:
  661|  8.32k|{
  662|  8.32k|	FLAC__uint32 x;
  663|       |
  664|  8.32k|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  665|  8.32k|	FLAC__ASSERT(0 != br->buffer);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  666|  8.32k|	FLAC__ASSERT(FLAC__bitreader_is_consumed_byte_aligned(br));
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  667|       |
  668|  8.32k|	if(br->read_limit_set && br->read_limit < (uint32_t)-1){
  ------------------
  |  Branch (668:5): [True: 0, False: 8.32k]
  |  Branch (668:27): [True: 0, False: 0]
  ------------------
  669|      0|		if(br->read_limit < nvals*8){
  ------------------
  |  Branch (669:6): [True: 0, False: 0]
  ------------------
  670|      0|			br->read_limit = -1;
  671|      0|			return false;
  672|      0|		}
  673|      0|	}
  674|       |
  675|       |	/* step 1: read from partial head word to get word aligned */
  676|  58.2k|	while(nvals && br->consumed_bits) { /* i.e. run until we read 'nvals' bytes or we hit the end of the head word */
  ------------------
  |  Branch (676:8): [True: 58.2k, False: 0]
  |  Branch (676:17): [True: 49.9k, False: 8.32k]
  ------------------
  677|  49.9k|		if(!FLAC__bitreader_read_raw_uint32(br, &x, 8))
  ------------------
  |  Branch (677:6): [True: 0, False: 49.9k]
  ------------------
  678|      0|			return false;
  679|  49.9k|		*val++ = (FLAC__byte)x;
  680|  49.9k|		nvals--;
  681|  49.9k|	}
  682|  8.32k|	if(0 == nvals)
  ------------------
  |  Branch (682:5): [True: 0, False: 8.32k]
  ------------------
  683|      0|		return true;
  684|       |	/* step 2: read whole words in chunks */
  685|  16.6k|	while(nvals >= FLAC__BYTES_PER_WORD) {
  ------------------
  |  |   72|  16.6k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  |  Branch (685:8): [True: 8.32k, False: 8.32k]
  ------------------
  686|  8.32k|		if(br->consumed_words < br->words) {
  ------------------
  |  Branch (686:6): [True: 8.32k, False: 0]
  ------------------
  687|  8.32k|			const brword word = br->buffer[br->consumed_words++];
  688|       |#if FLAC__BYTES_PER_WORD == 4
  689|       |			val[0] = (FLAC__byte)(word >> 24);
  690|       |			val[1] = (FLAC__byte)(word >> 16);
  691|       |			val[2] = (FLAC__byte)(word >> 8);
  692|       |			val[3] = (FLAC__byte)word;
  693|       |#elif FLAC__BYTES_PER_WORD == 8
  694|       |			val[0] = (FLAC__byte)(word >> 56);
  695|  8.32k|			val[1] = (FLAC__byte)(word >> 48);
  696|  8.32k|			val[2] = (FLAC__byte)(word >> 40);
  697|  8.32k|			val[3] = (FLAC__byte)(word >> 32);
  698|  8.32k|			val[4] = (FLAC__byte)(word >> 24);
  699|  8.32k|			val[5] = (FLAC__byte)(word >> 16);
  700|  8.32k|			val[6] = (FLAC__byte)(word >> 8);
  701|  8.32k|			val[7] = (FLAC__byte)word;
  702|       |#else
  703|       |			for(x = 0; x < FLAC__BYTES_PER_WORD; x++)
  704|       |				val[x] = (FLAC__byte)(word >> (8*(FLAC__BYTES_PER_WORD-x-1)));
  705|       |#endif
  706|  8.32k|			val += FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|  8.32k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  707|  8.32k|			nvals -= FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|  8.32k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  708|  8.32k|			if(br->read_limit_set)
  ------------------
  |  Branch (708:7): [True: 0, False: 8.32k]
  ------------------
  709|      0|				br->read_limit -= FLAC__BITS_PER_WORD;
  ------------------
  |  |   73|      0|#define FLAC__BITS_PER_WORD 64
  ------------------
  710|  8.32k|		}
  711|      0|		else if(!bitreader_read_from_client_(br))
  ------------------
  |  Branch (711:11): [True: 0, False: 0]
  ------------------
  712|      0|			return false;
  713|  8.32k|	}
  714|       |	/* step 3: read any remainder from partial tail bytes */
  715|  24.9k|	while(nvals) {
  ------------------
  |  Branch (715:8): [True: 16.6k, False: 8.32k]
  ------------------
  716|  16.6k|		if(!FLAC__bitreader_read_raw_uint32(br, &x, 8))
  ------------------
  |  Branch (716:6): [True: 0, False: 16.6k]
  ------------------
  717|      0|			return false;
  718|  16.6k|		*val++ = (FLAC__byte)x;
  719|  16.6k|		nvals--;
  720|  16.6k|	}
  721|       |
  722|  8.32k|	return true;
  723|  8.32k|}
FLAC__bitreader_read_unary_unsigned:
  745|  3.34M|{
  746|  3.34M|	uint32_t i;
  747|       |
  748|  3.34M|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  3.34M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 3.34M]
  |  |  ------------------
  ------------------
  749|  3.34M|	FLAC__ASSERT(0 != br->buffer);
  ------------------
  |  |   38|  3.34M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 3.34M]
  |  |  ------------------
  ------------------
  750|       |
  751|  3.34M|	*val = 0;
  752|  3.34M|	while(1) {
  ------------------
  |  Branch (752:8): [True: 3.34M, Folded]
  ------------------
  753|  3.35M|		while(br->consumed_words < br->words) { /* if we've not consumed up to a partial tail word... */
  ------------------
  |  Branch (753:9): [True: 3.17M, False: 178k]
  ------------------
  754|  3.17M|			brword b = br->consumed_bits < FLAC__BITS_PER_WORD ? br->buffer[br->consumed_words] << br->consumed_bits : 0;
  ------------------
  |  |   73|  3.17M|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (754:15): [True: 3.17M, False: 0]
  ------------------
  755|  3.17M|			if(b) {
  ------------------
  |  Branch (755:7): [True: 3.16M, False: 14.8k]
  ------------------
  756|  3.16M|				i = COUNT_ZERO_MSBS(b);
  ------------------
  |  |   82|  3.16M|#define COUNT_ZERO_MSBS(word) FLAC__clz_uint64(word)
  ------------------
  757|  3.16M|				*val += i;
  758|  3.16M|				i++;
  759|  3.16M|				br->consumed_bits += i;
  760|  3.16M|				if(br->consumed_bits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(br->consumed_bits == FLAC__BITS_PER_WORD) */
  ------------------
  |  |   73|  3.16M|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (760:8): [True: 52.1k, False: 3.11M]
  ------------------
  761|  52.1k|					br->consumed_words++;
  762|  52.1k|					br->consumed_bits = 0;
  763|  52.1k|				}
  764|  3.16M|				return true;
  765|  3.16M|			}
  766|  14.8k|			else {
  767|  14.8k|				*val += FLAC__BITS_PER_WORD - br->consumed_bits;
  ------------------
  |  |   73|  14.8k|#define FLAC__BITS_PER_WORD 64
  ------------------
  768|  14.8k|				br->consumed_words++;
  769|  14.8k|				br->consumed_bits = 0;
  770|       |				/* didn't find stop bit yet, have to keep going... */
  771|  14.8k|			}
  772|  3.17M|		}
  773|       |		/* at this point we've eaten up all the whole words; have to try
  774|       |		 * reading through any tail bytes before calling the read callback.
  775|       |		 * this is a repeat of the above logic adjusted for the fact we
  776|       |		 * don't have a whole word.  note though if the client is feeding
  777|       |		 * us data a byte at a time (unlikely), br->consumed_bits may not
  778|       |		 * be zero.
  779|       |		 */
  780|   178k|		if(br->bytes*8 > br->consumed_bits) {
  ------------------
  |  Branch (780:6): [True: 178k, False: 535]
  ------------------
  781|   178k|			const uint32_t end = br->bytes * 8;
  782|   178k|			brword b = (br->buffer[br->consumed_words] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << br->consumed_bits;
  ------------------
  |  |   74|   178k|#define FLAC__WORD_ALL_ONES ((FLAC__uint64)FLAC__U64L(0xffffffffffffffff))
  |  |  ------------------
  |  |  |  |  102|   178k|#define FLAC__U64L(x) x##ULL
  |  |  ------------------
  ------------------
              			brword b = (br->buffer[br->consumed_words] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << br->consumed_bits;
  ------------------
  |  |   73|   178k|#define FLAC__BITS_PER_WORD 64
  ------------------
  783|   178k|			if(b) {
  ------------------
  |  Branch (783:7): [True: 178k, False: 0]
  ------------------
  784|   178k|				i = COUNT_ZERO_MSBS(b);
  ------------------
  |  |   82|   178k|#define COUNT_ZERO_MSBS(word) FLAC__clz_uint64(word)
  ------------------
  785|   178k|				*val += i;
  786|   178k|				i++;
  787|   178k|				br->consumed_bits += i;
  788|   178k|				FLAC__ASSERT(br->consumed_bits < FLAC__BITS_PER_WORD);
  ------------------
  |  |   38|   178k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 178k]
  |  |  ------------------
  ------------------
  789|   178k|				return true;
  790|   178k|			}
  791|      0|			else {
  792|      0|				*val += end - br->consumed_bits;
  793|      0|				br->consumed_bits = end;
  794|      0|				FLAC__ASSERT(br->consumed_bits < FLAC__BITS_PER_WORD);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  795|       |				/* didn't find stop bit yet, have to keep going... */
  796|      0|			}
  797|   178k|		}
  798|    535|		if(!bitreader_read_from_client_(br))
  ------------------
  |  Branch (798:6): [True: 0, False: 535]
  ------------------
  799|      0|			return false;
  800|    535|	}
  801|  3.34M|}
FLAC__bitreader_read_utf8_uint32:
  929|   203k|{
  930|   203k|	FLAC__uint32 v = 0;
  931|   203k|	FLAC__uint32 x;
  932|   203k|	uint32_t i;
  933|       |
  934|   203k|	if(!FLAC__bitreader_read_raw_uint32(br, &x, 8))
  ------------------
  |  Branch (934:5): [True: 0, False: 203k]
  ------------------
  935|      0|		return false;
  936|   203k|	if(raw)
  ------------------
  |  Branch (936:5): [True: 203k, False: 0]
  ------------------
  937|   203k|		raw[(*rawlen)++] = (FLAC__byte)x;
  938|   203k|	if(!(x & 0x80)) { /* 0xxxxxxx */
  ------------------
  |  Branch (938:5): [True: 75.3k, False: 128k]
  ------------------
  939|  75.3k|		v = x;
  940|  75.3k|		i = 0;
  941|  75.3k|	}
  942|   128k|	else if((x & 0xE0) == 0xC0) { /* 110xxxxx */
  ------------------
  |  Branch (942:10): [True: 107k, False: 20.4k]
  ------------------
  943|   107k|		v = x & 0x1F;
  944|   107k|		i = 1;
  945|   107k|	}
  946|  20.4k|	else if((x & 0xF0) == 0xE0) { /* 1110xxxx */
  ------------------
  |  Branch (946:10): [True: 20.4k, False: 0]
  ------------------
  947|  20.4k|		v = x & 0x0F;
  948|  20.4k|		i = 2;
  949|  20.4k|	}
  950|      0|	else if((x & 0xF8) == 0xF0) { /* 11110xxx */
  ------------------
  |  Branch (950:10): [True: 0, False: 0]
  ------------------
  951|      0|		v = x & 0x07;
  952|      0|		i = 3;
  953|      0|	}
  954|      0|	else if((x & 0xFC) == 0xF8) { /* 111110xx */
  ------------------
  |  Branch (954:10): [True: 0, False: 0]
  ------------------
  955|      0|		v = x & 0x03;
  956|      0|		i = 4;
  957|      0|	}
  958|      0|	else if((x & 0xFE) == 0xFC) { /* 1111110x */
  ------------------
  |  Branch (958:10): [True: 0, False: 0]
  ------------------
  959|      0|		v = x & 0x01;
  960|      0|		i = 5;
  961|      0|	}
  962|      0|	else {
  963|      0|		*val = 0xffffffff;
  964|      0|		return true;
  965|      0|	}
  966|   352k|	for( ; i; i--) {
  ------------------
  |  Branch (966:9): [True: 148k, False: 203k]
  ------------------
  967|   148k|		if(!FLAC__bitreader_read_raw_uint32(br, &x, 8))
  ------------------
  |  Branch (967:6): [True: 0, False: 148k]
  ------------------
  968|      0|			return false;
  969|   148k|		if(raw)
  ------------------
  |  Branch (969:6): [True: 148k, False: 0]
  ------------------
  970|   148k|			raw[(*rawlen)++] = (FLAC__byte)x;
  971|   148k|		if(!(x & 0x80) || (x & 0x40)) { /* 10xxxxxx */
  ------------------
  |  Branch (971:6): [True: 0, False: 148k]
  |  Branch (971:21): [True: 0, False: 148k]
  ------------------
  972|      0|			*val = 0xffffffff;
  973|      0|			return true;
  974|      0|		}
  975|   148k|		v <<= 6;
  976|   148k|		v |= (x & 0x3F);
  977|   148k|	}
  978|   203k|	*val = v;
  979|       |	return true;
  980|   203k|}
bitreader.c:crc16_update_block_:
  136|   423k|{
  137|   423k|	if(br->consumed_words > br->crc16_offset && br->crc16_align)
  ------------------
  |  Branch (137:5): [True: 423k, False: 240]
  |  Branch (137:46): [True: 350k, False: 72.8k]
  ------------------
  138|   350k|		crc16_update_word_(br, br->buffer[br->crc16_offset++]);
  139|       |
  140|       |	/* Prevent OOB read due to wrap-around. */
  141|   423k|	if (br->consumed_words > br->crc16_offset) {
  ------------------
  |  Branch (141:6): [True: 383k, False: 40.3k]
  ------------------
  142|       |#if FLAC__BYTES_PER_WORD == 4
  143|       |		br->read_crc16 = FLAC__crc16_update_words32(br->buffer + br->crc16_offset, br->consumed_words - br->crc16_offset, br->read_crc16);
  144|       |#elif FLAC__BYTES_PER_WORD == 8
  145|       |		br->read_crc16 = FLAC__crc16_update_words64(br->buffer + br->crc16_offset, br->consumed_words - br->crc16_offset, br->read_crc16);
  146|       |#else
  147|       |		unsigned i;
  148|       |
  149|       |		for (i = br->crc16_offset; i < br->consumed_words; i++)
  150|       |			crc16_update_word_(br, br->buffer[i]);
  151|       |#endif
  152|   383k|	}
  153|       |
  154|   423k|	br->crc16_offset = 0;
  155|   423k|}
bitreader.c:crc16_update_word_:
  123|   350k|{
  124|   350k|	register uint32_t crc = br->read_crc16;
  125|       |
  126|  1.72M|	for ( ; br->crc16_align < FLAC__BITS_PER_WORD ; br->crc16_align += 8) {
  ------------------
  |  |   73|  1.72M|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (126:10): [True: 1.37M, False: 350k]
  ------------------
  127|  1.37M|		uint32_t shift = FLAC__BITS_PER_WORD - 8 - br->crc16_align ;
  ------------------
  |  |   73|  1.37M|#define FLAC__BITS_PER_WORD 64
  ------------------
  128|  1.37M|		crc = FLAC__CRC16_UPDATE ((uint32_t) (shift < FLAC__BITS_PER_WORD ? (word >> shift) & 0xff : 0), crc);
  ------------------
  |  |   50|  2.75M|#define FLAC__CRC16_UPDATE(data, crc) ((((crc)<<8) & 0xffff) ^ FLAC__crc16_table[0][((crc)>>8) ^ (data)])
  |  |  ------------------
  |  |  |  Branch (50:99): [True: 1.37M, False: 0]
  |  |  ------------------
  ------------------
  129|  1.37M|	}
  130|       |
  131|   350k|	br->read_crc16 = crc;
  132|   350k|	br->crc16_align = 0;
  133|   350k|}
bitreader.c:bitreader_read_from_client_:
  158|   236k|{
  159|   236k|	uint32_t start, end;
  160|   236k|	size_t bytes;
  161|   236k|	FLAC__byte *target;
  162|       |#if WORDS_BIGENDIAN
  163|       |#else
  164|   236k|	brword preswap_backup;
  165|   236k|#endif
  166|       |
  167|       |	/* first shift the unconsumed buffer data toward the front as much as possible */
  168|   236k|	if(br->consumed_words > 0) {
  ------------------
  |  Branch (168:5): [True: 219k, False: 16.7k]
  ------------------
  169|       |		/* invalidate last seen framesync */
  170|   219k|		br->last_seen_framesync = -1;
  171|       |
  172|   219k|		crc16_update_block_(br); /* CRC consumed words */
  173|       |
  174|   219k|		start = br->consumed_words;
  175|   219k|		end = br->words + (br->bytes? 1:0);
  ------------------
  |  Branch (175:22): [True: 187k, False: 32.7k]
  ------------------
  176|   219k|		memmove(br->buffer, br->buffer+start, FLAC__BYTES_PER_WORD * (end - start));
  ------------------
  |  |   72|   219k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  177|       |
  178|   219k|		br->words -= start;
  179|   219k|		br->consumed_words = 0;
  180|   219k|	}
  181|       |
  182|       |	/*
  183|       |	 * set the target for reading, taking into account word alignment and endianness
  184|       |	 */
  185|   236k|	bytes = (br->capacity - br->words) * FLAC__BYTES_PER_WORD - br->bytes;
  ------------------
  |  |   72|   236k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  186|   236k|	if(bytes == 0)
  ------------------
  |  Branch (186:5): [True: 0, False: 236k]
  ------------------
  187|      0|		return false; /* no space left, buffer is too small; see note for FLAC__BITREADER_DEFAULT_CAPACITY  */
  188|   236k|	target = ((FLAC__byte*)(br->buffer+br->words)) + br->bytes;
  189|       |
  190|       |	/* before reading, if the existing reader looks like this (say brword is 32 bits wide)
  191|       |	 *   bitstream :  11 22 33 44 55            br->words=1 br->bytes=1 (partial tail word is left-justified)
  192|       |	 *   buffer[BE]:  11 22 33 44 55 ?? ?? ??   (shown laid out as bytes sequentially in memory)
  193|       |	 *   buffer[LE]:  44 33 22 11 ?? ?? ?? 55   (?? being don't-care)
  194|       |	 *                               ^^-------target, bytes=3
  195|       |	 * on LE machines, have to byteswap the odd tail word so nothing is
  196|       |	 * overwritten:
  197|       |	 */
  198|       |#if WORDS_BIGENDIAN
  199|       |#else
  200|   236k|	preswap_backup = br->buffer[br->words];
  201|   236k|	if(br->bytes)
  ------------------
  |  Branch (201:5): [True: 195k, False: 41.0k]
  ------------------
  202|   195k|		br->buffer[br->words] = SWAP_BE_WORD_TO_HOST(br->buffer[br->words]);
  ------------------
  |  |   79|   195k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  ------------------
  |  |  |  |   46|   195k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  ------------------
  ------------------
  203|   236k|#endif
  204|       |
  205|       |	/* now it looks like:
  206|       |	 *   bitstream :  11 22 33 44 55            br->words=1 br->bytes=1
  207|       |	 *   buffer[BE]:  11 22 33 44 55 ?? ?? ??
  208|       |	 *   buffer[LE]:  44 33 22 11 55 ?? ?? ??
  209|       |	 *                               ^^-------target, bytes=3
  210|       |	 */
  211|       |
  212|       |	/* read in the data; note that the callback may return a smaller number of bytes */
  213|   236k|	if(!br->read_callback(target, &bytes, br->client_data)){
  ------------------
  |  Branch (213:5): [True: 0, False: 236k]
  ------------------
  214|       |		/* Despite the read callback failing, the data in the target
  215|       |		 * might be used later, when the buffer is rewound. Therefore
  216|       |		 * we revert the swap that was just done */
  217|       |#if WORDS_BIGENDIAN
  218|       |#else
  219|      0|		br->buffer[br->words] = preswap_backup;
  220|      0|#endif
  221|      0|		return false;
  222|      0|	}
  223|       |
  224|       |	/* after reading bytes 66 77 88 99 AA BB CC DD EE FF from the client:
  225|       |	 *   bitstream :  11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
  226|       |	 *   buffer[BE]:  11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF ??
  227|       |	 *   buffer[LE]:  44 33 22 11 55 66 77 88 99 AA BB CC DD EE FF ??
  228|       |	 * now have to byteswap on LE machines:
  229|       |	 */
  230|       |#if WORDS_BIGENDIAN
  231|       |#else
  232|   236k|	end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + (uint32_t)bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|   236k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
              	end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + (uint32_t)bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|   236k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
              	end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + (uint32_t)bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|   236k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  233|  10.9M|	for(start = br->words; start < end; start++)
  ------------------
  |  Branch (233:25): [True: 10.7M, False: 236k]
  ------------------
  234|  10.7M|		br->buffer[start] = SWAP_BE_WORD_TO_HOST(br->buffer[start]);
  ------------------
  |  |   79|  10.7M|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  ------------------
  |  |  |  |   46|  10.9M|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  ------------------
  ------------------
  235|   236k|#endif
  236|       |
  237|       |	/* now it looks like:
  238|       |	 *   bitstream :  11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
  239|       |	 *   buffer[BE]:  11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF ??
  240|       |	 *   buffer[LE]:  44 33 22 11 88 77 66 55 CC BB AA 99 ?? FF EE DD
  241|       |	 * finally we'll update the reader values:
  242|       |	 */
  243|   236k|	end = br->words*FLAC__BYTES_PER_WORD + br->bytes + (uint32_t)bytes;
  ------------------
  |  |   72|   236k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  244|   236k|	br->words = end / FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|   236k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  245|   236k|	br->bytes = end % FLAC__BYTES_PER_WORD;
  ------------------
  |  |   72|   236k|#define FLAC__BYTES_PER_WORD 8		/* sizeof brword */
  ------------------
  246|       |
  247|       |	return true;
  248|   236k|}

FLAC__bitwriter_new:
  161|  24.8k|{
  162|  24.8k|	FLAC__BitWriter *bw = calloc(1, sizeof(FLAC__BitWriter));
  163|       |	/* note that calloc() sets all members to 0 for us */
  164|  24.8k|	return bw;
  165|  24.8k|}
FLAC__bitwriter_delete:
  168|  24.8k|{
  169|  24.8k|	FLAC__ASSERT(0 != bw);
  ------------------
  |  |   38|  24.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 24.8k]
  |  |  ------------------
  ------------------
  170|       |
  171|  24.8k|	FLAC__bitwriter_free(bw);
  172|  24.8k|	free(bw);
  173|  24.8k|}
FLAC__bitwriter_init:
  182|  22.5k|{
  183|  22.5k|	FLAC__ASSERT(0 != bw);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  184|       |
  185|  22.5k|	bw->words = bw->bits = 0;
  186|  22.5k|	bw->capacity = FLAC__BITWRITER_DEFAULT_CAPACITY;
  187|  22.5k|	bw->buffer = malloc(sizeof(bwword) * bw->capacity);
  188|  22.5k|	if(bw->buffer == 0)
  ------------------
  |  Branch (188:5): [True: 0, False: 22.5k]
  ------------------
  189|      0|		return false;
  190|       |
  191|  22.5k|	return true;
  192|  22.5k|}
FLAC__bitwriter_free:
  195|  24.8k|{
  196|  24.8k|	FLAC__ASSERT(0 != bw);
  ------------------
  |  |   38|  24.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 24.8k]
  |  |  ------------------
  ------------------
  197|       |
  198|  24.8k|	if(0 != bw->buffer)
  ------------------
  |  Branch (198:5): [True: 22.5k, False: 2.28k]
  ------------------
  199|  22.5k|		free(bw->buffer);
  200|  24.8k|	bw->buffer = 0;
  201|  24.8k|	bw->capacity = 0;
  202|  24.8k|	bw->words = bw->bits = 0;
  203|  24.8k|}
FLAC__bitwriter_clear:
  206|   276k|{
  207|   276k|	bw->words = bw->bits = 0;
  208|   276k|}
FLAC__bitwriter_get_write_crc16:
  211|   247k|{
  212|   247k|	const FLAC__byte *buffer;
  213|   247k|	size_t bytes;
  214|       |
  215|   247k|	FLAC__ASSERT((bw->bits & 7) == 0); /* assert that we're byte-aligned */
  ------------------
  |  |   38|   247k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 247k]
  |  |  ------------------
  ------------------
  216|       |
  217|   247k|	if(!FLAC__bitwriter_get_buffer(bw, &buffer, &bytes))
  ------------------
  |  Branch (217:5): [True: 0, False: 247k]
  ------------------
  218|      0|		return false;
  219|       |
  220|   247k|	*crc = (FLAC__uint16)FLAC__crc16(buffer, bytes);
  221|   247k|	FLAC__bitwriter_release_buffer(bw);
  222|       |	return true;
  223|   247k|}
FLAC__bitwriter_get_write_crc8:
  226|   247k|{
  227|   247k|	const FLAC__byte *buffer;
  228|   247k|	size_t bytes;
  229|       |
  230|   247k|	FLAC__ASSERT((bw->bits & 7) == 0); /* assert that we're byte-aligned */
  ------------------
  |  |   38|   247k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 247k]
  |  |  ------------------
  ------------------
  231|       |
  232|   247k|	if(!FLAC__bitwriter_get_buffer(bw, &buffer, &bytes))
  ------------------
  |  Branch (232:5): [True: 0, False: 247k]
  ------------------
  233|      0|		return false;
  234|       |
  235|   247k|	*crc = FLAC__crc8(buffer, bytes);
  236|   247k|	FLAC__bitwriter_release_buffer(bw);
  237|       |	return true;
  238|   247k|}
FLAC__bitwriter_is_byte_aligned:
  241|   808k|{
  242|   808k|	return ((bw->bits & 7) == 0);
  243|   808k|}
FLAC__bitwriter_get_input_bits_unconsumed:
  246|  38.2k|{
  247|  38.2k|	return FLAC__TOTAL_BITS(bw);
  ------------------
  |  |   96|  38.2k|#define FLAC__TOTAL_BITS(bw) (FLAC__WORDS_TO_BITS((bw)->words) + (bw)->bits)
  |  |  ------------------
  |  |  |  |   95|  38.2k|#define FLAC__WORDS_TO_BITS(words) ((words) * FLAC__BITS_PER_WORD)
  |  |  |  |  ------------------
  |  |  |  |  |  |   73|  38.2k|#define FLAC__BITS_PER_WORD 64
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  248|  38.2k|}
FLAC__bitwriter_get_buffer:
  251|   768k|{
  252|   768k|	FLAC__ASSERT((bw->bits & 7) == 0);
  ------------------
  |  |   38|   768k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 768k]
  |  |  ------------------
  ------------------
  253|       |	/* double protection */
  254|   768k|	if(bw->bits & 7)
  ------------------
  |  Branch (254:5): [True: 0, False: 768k]
  ------------------
  255|      0|		return false;
  256|       |	/* if we have bits in the accumulator we have to flush those to the buffer first */
  257|   768k|	if(bw->bits) {
  ------------------
  |  Branch (257:5): [True: 638k, False: 129k]
  ------------------
  258|   638k|		FLAC__ASSERT(bw->words <= bw->capacity);
  ------------------
  |  |   38|   638k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 638k]
  |  |  ------------------
  ------------------
  259|   638k|		if(bw->words == bw->capacity && !bitwriter_grow_(bw, FLAC__BITS_PER_WORD))
  ------------------
  |  |   73|      0|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (259:6): [True: 0, False: 638k]
  |  Branch (259:35): [True: 0, False: 0]
  ------------------
  260|      0|			return false;
  261|       |		/* append bits as complete word to buffer, but don't change bw->accum or bw->bits */
  262|   638k|		bw->buffer[bw->words] = SWAP_BE_WORD_TO_HOST(bw->accum << (FLAC__BITS_PER_WORD-bw->bits));
  ------------------
  |  |   80|   638k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  ------------------
  |  |  |  |   46|   638k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  ------------------
  ------------------
  263|   638k|	}
  264|       |	/* now we can just return what we have */
  265|   768k|	*buffer = (FLAC__byte*)bw->buffer;
  266|   768k|	*bytes = (FLAC__BYTES_PER_WORD * bw->words) + (bw->bits >> 3);
  ------------------
  |  |   72|   768k|#define FLAC__BYTES_PER_WORD 8		/* sizeof bwword */
  ------------------
  267|       |	return true;
  268|   768k|}
FLAC__bitwriter_release_buffer:
  271|   768k|{
  272|       |	/* nothing to do.  in the future, strict checking of a 'writer-is-in-
  273|       |	 * get-mode' flag could be added everywhere and then cleared here
  274|       |	 */
  275|   768k|	(void)bw;
  276|   768k|}
FLAC__bitwriter_write_zeroes:
  279|   119k|{
  280|   119k|	uint32_t n;
  281|       |
  282|   119k|	FLAC__ASSERT(0 != bw);
  ------------------
  |  |   38|   119k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 119k]
  |  |  ------------------
  ------------------
  283|   119k|	FLAC__ASSERT(0 != bw->buffer);
  ------------------
  |  |   38|   119k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 119k]
  |  |  ------------------
  ------------------
  284|       |
  285|   119k|	if(bits == 0)
  ------------------
  |  Branch (285:5): [True: 0, False: 119k]
  ------------------
  286|      0|		return true;
  287|       |	/* slightly pessimistic size check but faster than "<= bw->words + (bw->bits+bits+FLAC__BITS_PER_WORD-1)/FLAC__BITS_PER_WORD" */
  288|   119k|	if(bw->capacity <= bw->words + bits && !bitwriter_grow_(bw, bits))
  ------------------
  |  Branch (288:5): [True: 23, False: 119k]
  |  Branch (288:41): [True: 0, False: 23]
  ------------------
  289|      0|		return false;
  290|       |	/* first part gets to word alignment */
  291|   119k|	if(bw->bits) {
  ------------------
  |  Branch (291:5): [True: 119k, False: 18.4E]
  ------------------
  292|   119k|		n = flac_min(FLAC__BITS_PER_WORD - bw->bits, bits);
  ------------------
  |  |   56|   119k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (292:7): [True: 0, False: 119k]
  ------------------
  293|   119k|		bw->accum <<= n;
  294|   119k|		bits -= n;
  295|   119k|		bw->bits += n;
  296|   119k|		if(bw->bits == FLAC__BITS_PER_WORD) {
  ------------------
  |  |   73|   119k|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (296:6): [True: 9.58k, False: 110k]
  ------------------
  297|  9.58k|			bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);
  ------------------
  |  |   80|  9.58k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  ------------------
  |  |  |  |   46|  9.58k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  ------------------
  ------------------
  298|  9.58k|			bw->bits = 0;
  299|  9.58k|		}
  300|   110k|		else
  301|   110k|			return true;
  302|   119k|	}
  303|       |	/* do whole words */
  304|  9.56k|	while(bits >= FLAC__BITS_PER_WORD) {
  ------------------
  |  |   73|  9.56k|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (304:8): [True: 0, False: 9.56k]
  ------------------
  305|      0|		bw->buffer[bw->words++] = 0;
  306|      0|		bits -= FLAC__BITS_PER_WORD;
  ------------------
  |  |   73|      0|#define FLAC__BITS_PER_WORD 64
  ------------------
  307|      0|	}
  308|       |	/* do any leftovers */
  309|  9.56k|	if(bits > 0) {
  ------------------
  |  Branch (309:5): [True: 0, False: 9.56k]
  ------------------
  310|      0|		bw->accum = 0;
  311|      0|		bw->bits = bits;
  312|      0|	}
  313|       |	return true;
  314|   119k|}
FLAC__bitwriter_write_raw_uint32:
  358|  6.83M|{
  359|       |	/* check that unused bits are unset */
  360|  6.83M|	if((bits < 32) && (val>>bits != 0))
  ------------------
  |  Branch (360:5): [True: 6.61M, False: 223k]
  |  Branch (360:20): [True: 0, False: 6.61M]
  ------------------
  361|      0|		return false;
  362|       |
  363|  6.83M|	return FLAC__bitwriter_write_raw_uint32_nocheck(bw, val, bits);
  364|  6.83M|}
FLAC__bitwriter_write_raw_int32:
  367|  3.72M|{
  368|       |	/* zero-out unused bits */
  369|  3.72M|	if(bits < 32)
  ------------------
  |  Branch (369:5): [True: 862k, False: 2.86M]
  ------------------
  370|   862k|		val &= (~(0xffffffff << bits));
  371|       |
  372|  3.72M|	return FLAC__bitwriter_write_raw_uint32_nocheck(bw, (FLAC__uint32)val, bits);
  373|  3.72M|}
FLAC__bitwriter_write_raw_uint64:
  376|  1.80M|{
  377|       |	/* this could be a little faster but it's not used for much */
  378|  1.80M|	if(bits > 32) {
  ------------------
  |  Branch (378:5): [True: 1.49M, False: 310k]
  ------------------
  379|  1.49M|		return
  380|  1.49M|			FLAC__bitwriter_write_raw_uint32(bw, (FLAC__uint32)(val>>32), bits-32) &&
  ------------------
  |  Branch (380:4): [True: 1.49M, False: 0]
  ------------------
  381|  1.49M|			FLAC__bitwriter_write_raw_uint32_nocheck(bw, (FLAC__uint32)val, 32);
  ------------------
  |  Branch (381:4): [True: 1.49M, False: 0]
  ------------------
  382|  1.49M|	}
  383|   310k|	else
  384|   310k|		return FLAC__bitwriter_write_raw_uint32(bw, (FLAC__uint32)val, bits);
  385|  1.80M|}
FLAC__bitwriter_write_raw_int64:
  388|  1.79M|{
  389|  1.79M|	FLAC__uint64 uval = val;
  390|       |	/* zero-out unused bits */
  391|  1.79M|	if(bits < 64)
  ------------------
  |  Branch (391:5): [True: 1.79M, False: 18.4E]
  ------------------
  392|  1.79M|		uval &= (~(UINT64_MAX << bits));
  393|  1.79M|	return FLAC__bitwriter_write_raw_uint64(bw, uval, bits);
  394|  1.79M|}
FLAC__bitwriter_write_raw_uint32_little_endian:
  397|  19.1k|{
  398|       |	/* this doesn't need to be that fast as currently it is only used for vorbis comments */
  399|       |
  400|  19.1k|	if(!FLAC__bitwriter_write_raw_uint32_nocheck(bw, val & 0xff, 8))
  ------------------
  |  Branch (400:5): [True: 0, False: 19.1k]
  ------------------
  401|      0|		return false;
  402|  19.1k|	if(!FLAC__bitwriter_write_raw_uint32_nocheck(bw, (val>>8) & 0xff, 8))
  ------------------
  |  Branch (402:5): [True: 0, False: 19.1k]
  ------------------
  403|      0|		return false;
  404|  19.1k|	if(!FLAC__bitwriter_write_raw_uint32_nocheck(bw, (val>>16) & 0xff, 8))
  ------------------
  |  Branch (404:5): [True: 0, False: 19.1k]
  ------------------
  405|      0|		return false;
  406|  19.1k|	if(!FLAC__bitwriter_write_raw_uint32_nocheck(bw, val>>24, 8))
  ------------------
  |  Branch (406:5): [True: 0, False: 19.1k]
  ------------------
  407|      0|		return false;
  408|       |
  409|  19.1k|	return true;
  410|  19.1k|}
FLAC__bitwriter_write_byte_block:
  413|  19.1k|{
  414|  19.1k|	uint32_t i;
  415|       |
  416|       |	/* grow capacity upfront to prevent constant reallocation during writes */
  417|  19.1k|	if(bw->capacity <= bw->words + nvals / (FLAC__BITS_PER_WORD / 8) + 1 && !bitwriter_grow_(bw, nvals * 8))
  ------------------
  |  |   73|  19.1k|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (417:5): [True: 0, False: 19.1k]
  |  Branch (417:74): [True: 0, False: 0]
  ------------------
  418|      0|		return false;
  419|       |
  420|       |	/* this could be faster but currently we don't need it to be since it's only used for writing metadata */
  421|   544k|	for(i = 0; i < nvals; i++) {
  ------------------
  |  Branch (421:13): [True: 525k, False: 19.1k]
  ------------------
  422|   525k|		if(!FLAC__bitwriter_write_raw_uint32_nocheck(bw, (FLAC__uint32)(vals[i]), 8))
  ------------------
  |  Branch (422:6): [True: 0, False: 525k]
  ------------------
  423|      0|			return false;
  424|   525k|	}
  425|       |
  426|  19.1k|	return true;
  427|  19.1k|}
FLAC__bitwriter_write_unary_unsigned:
  430|  30.6k|{
  431|  30.6k|	if(val < 32)
  ------------------
  |  Branch (431:5): [True: 30.6k, False: 1]
  ------------------
  432|  30.6k|		return FLAC__bitwriter_write_raw_uint32_nocheck(bw, 1, ++val);
  433|      1|	else
  434|      1|		return
  435|      1|			FLAC__bitwriter_write_zeroes(bw, val) &&
  ------------------
  |  Branch (435:4): [True: 0, False: 1]
  ------------------
  436|      0|			FLAC__bitwriter_write_raw_uint32_nocheck(bw, 1, 1);
  ------------------
  |  Branch (436:4): [True: 0, False: 0]
  ------------------
  437|  30.6k|}
FLAC__bitwriter_write_rice_signed_block:
  576|  1.35M|{
  577|  1.35M|	const FLAC__uint32 mask1 = (FLAC__uint32)0xffffffff << parameter; /* we val|=mask1 to set the stop bit above it... */
  578|  1.35M|	const FLAC__uint32 mask2 = (FLAC__uint32)0xffffffff >> (31-parameter); /* ...then mask off the bits above the stop bit with val&=mask2 */
  579|  1.35M|	FLAC__uint32 uval;
  580|  1.35M|	const uint32_t lsbits = 1 + parameter;
  581|  1.35M|	uint32_t msbits, total_bits;
  582|  1.35M|	FLAC__bwtemp wide_accum = 0;
  583|  1.35M|	FLAC__uint32 bitpointer = FLAC__TEMP_BITS;
  ------------------
  |  |   74|  1.35M|#define FLAC__TEMP_BITS 64
  ------------------
  584|       |
  585|  1.35M|	FLAC__ASSERT(0 != bw);
  ------------------
  |  |   38|  1.35M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.35M]
  |  |  ------------------
  ------------------
  586|  1.35M|	FLAC__ASSERT(0 != bw->buffer);
  ------------------
  |  |   38|  1.35M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.35M]
  |  |  ------------------
  ------------------
  587|  1.35M|	FLAC__ASSERT(parameter < 31);
  ------------------
  |  |   38|  1.35M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.35M]
  |  |  ------------------
  ------------------
  588|       |	/* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
  589|  1.35M|	FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
  ------------------
  |  |   38|  1.35M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 1.35M]
  |  |  ------------------
  ------------------
  590|       |#if (ENABLE_64_BIT_WORDS == 0)
  591|       |	if(bw->bits > 0) {
  592|       |		bitpointer -= bw->bits;
  593|       |		wide_accum = (FLAC__bwtemp)(bw->accum) << bitpointer;
  594|       |		bw->bits = 0;
  595|       |	}
  596|       |#else
  597|  1.35M|	if(bw->bits > 0 && bw->bits < FLAC__HALF_TEMP_BITS) {
  ------------------
  |  |   75|  1.33M|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  |  Branch (597:5): [True: 1.33M, False: 18.4k]
  |  Branch (597:21): [True: 649k, False: 684k]
  ------------------
  598|   649k|		bitpointer -= bw->bits;
  599|   649k|		wide_accum = bw->accum << bitpointer;
  600|   649k|		bw->bits = 0;
  601|   649k|	}
  602|   702k|	else if(bw->bits > FLAC__HALF_TEMP_BITS) {
  ------------------
  |  |   75|   702k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  |  Branch (602:10): [True: 669k, False: 33.1k]
  ------------------
  603|   669k|		bitpointer -= (bw->bits - FLAC__HALF_TEMP_BITS);
  ------------------
  |  |   75|   669k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  604|   669k|		wide_accum = bw->accum << bitpointer;
  605|   669k|		bw->accum >>= (bw->bits - FLAC__HALF_TEMP_BITS);
  ------------------
  |  |   75|   669k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  606|   669k|		bw->bits = FLAC__HALF_TEMP_BITS;
  ------------------
  |  |   75|   669k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  607|   669k|	}
  608|  1.35M|#endif
  609|       |
  610|       |	/* Reserve one FLAC__TEMP_BITS per symbol, so checks for space are only necessary when very large symbols are encountered
  611|       |	 * this might be considered wasteful, but is only at most 8kB more than necessary for a blocksize of 4096 */
  612|  1.35M|	if(bw->capacity * FLAC__BITS_PER_WORD <= bw->words * FLAC__BITS_PER_WORD + nvals * FLAC__TEMP_BITS + bw->bits && !bitwriter_grow_(bw, nvals * FLAC__TEMP_BITS))
  ------------------
  |  |   73|  1.35M|#define FLAC__BITS_PER_WORD 64
  ------------------
              	if(bw->capacity * FLAC__BITS_PER_WORD <= bw->words * FLAC__BITS_PER_WORD + nvals * FLAC__TEMP_BITS + bw->bits && !bitwriter_grow_(bw, nvals * FLAC__TEMP_BITS))
  ------------------
  |  |   73|  1.35M|#define FLAC__BITS_PER_WORD 64
  ------------------
              	if(bw->capacity * FLAC__BITS_PER_WORD <= bw->words * FLAC__BITS_PER_WORD + nvals * FLAC__TEMP_BITS + bw->bits && !bitwriter_grow_(bw, nvals * FLAC__TEMP_BITS))
  ------------------
  |  |   74|  1.35M|#define FLAC__TEMP_BITS 64
  ------------------
              	if(bw->capacity * FLAC__BITS_PER_WORD <= bw->words * FLAC__BITS_PER_WORD + nvals * FLAC__TEMP_BITS + bw->bits && !bitwriter_grow_(bw, nvals * FLAC__TEMP_BITS))
  ------------------
  |  |   74|  1.33k|#define FLAC__TEMP_BITS 64
  ------------------
  |  Branch (612:5): [True: 1.33k, False: 1.35M]
  |  Branch (612:115): [True: 0, False: 1.33k]
  ------------------
  613|      0|		return false;
  614|       |
  615|  23.4M|	while(nvals) {
  ------------------
  |  Branch (615:8): [True: 22.1M, False: 1.35M]
  ------------------
  616|       |		/* fold signed to uint32_t; actual formula is: negative(v)? -2v-1 : 2v */
  617|  22.1M|		uval = *vals;
  618|  22.1M|		uval <<= 1;
  619|  22.1M|		uval ^= (*vals>>31);
  620|       |
  621|  22.1M|		msbits = uval >> parameter;
  622|  22.1M|		total_bits = lsbits + msbits;
  623|       |
  624|  22.1M|		uval |= mask1; /* set stop bit */
  625|  22.1M|		uval &= mask2; /* mask off unused top bits */
  626|       |
  627|       |
  628|  22.1M|		if(total_bits <= bitpointer) {
  ------------------
  |  Branch (628:6): [True: 22.0M, False: 95.7k]
  ------------------
  629|       |			/* There is room enough to store the symbol whole at once */
  630|  22.0M|			wide_accum |= (FLAC__bwtemp)(uval) << (bitpointer - total_bits);
  631|  22.0M|			bitpointer -= total_bits;
  632|  22.0M|			if(bitpointer <= FLAC__HALF_TEMP_BITS) {
  ------------------
  |  |   75|  22.0M|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  |  Branch (632:7): [True: 14.7M, False: 7.31M]
  ------------------
  633|       |				/* A word is finished, copy the upper 32 bits of the wide_accum */
  634|  14.7M|				WIDE_ACCUM_TO_BW
  ------------------
  |  |  556|  14.7M|#define WIDE_ACCUM_TO_BW {  \
  |  |  557|  14.7M|	FLAC__ASSERT(bw->bits % FLAC__HALF_TEMP_BITS == 0);  \
  |  |  ------------------
  |  |  |  |   38|  14.7M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 14.7M]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  558|  14.7M|	if(bw->bits == 0) {  \
  |  |  ------------------
  |  |  |  Branch (558:5): [True: 7.32M, False: 7.37M]
  |  |  ------------------
  |  |  559|  7.32M|		bw->accum = wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  7.32M|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  560|  7.32M|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  7.32M|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  561|  7.32M|		bw->bits = FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  7.32M|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  562|  7.32M|	}  \
  |  |  563|  14.7M|	else {  \
  |  |  564|  7.37M|		bw->accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  7.37M|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  565|  7.37M|		bw->accum += wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  7.37M|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  566|  7.37M|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);  \
  |  |  ------------------
  |  |  |  |   80|  7.37M|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  7.37M|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  567|  7.37M|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  7.37M|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  568|  7.37M|		bw->bits = 0;  \
  |  |  569|  7.37M|	}  \
  |  |  570|  14.7M|	bitpointer += FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  14.7M|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  571|  14.7M|}
  ------------------
  635|  14.7M|			}
  636|  22.0M|		}
  637|  95.7k|		else {
  638|       |			/* The symbol needs to be split. This code isn't used often */
  639|       |			/* First check for space in the bitwriter */
  640|  95.7k|			if(total_bits > FLAC__TEMP_BITS) {
  ------------------
  |  |   74|  95.7k|#define FLAC__TEMP_BITS 64
  ------------------
  |  Branch (640:7): [True: 32.6k, False: 63.0k]
  ------------------
  641|  32.6k|				FLAC__uint32 oversize_in_bits = total_bits - FLAC__TEMP_BITS;
  ------------------
  |  |   74|  32.6k|#define FLAC__TEMP_BITS 64
  ------------------
  642|  32.6k|				FLAC__uint32 capacity_needed = bw->words * FLAC__BITS_PER_WORD + bw->bits + nvals * FLAC__TEMP_BITS + oversize_in_bits;
  ------------------
  |  |   73|  32.6k|#define FLAC__BITS_PER_WORD 64
  ------------------
              				FLAC__uint32 capacity_needed = bw->words * FLAC__BITS_PER_WORD + bw->bits + nvals * FLAC__TEMP_BITS + oversize_in_bits;
  ------------------
  |  |   74|  32.6k|#define FLAC__TEMP_BITS 64
  ------------------
  643|  32.6k|				if(bw->capacity * FLAC__BITS_PER_WORD <= capacity_needed && !bitwriter_grow_(bw, nvals * FLAC__TEMP_BITS + oversize_in_bits))
  ------------------
  |  |   73|  32.6k|#define FLAC__BITS_PER_WORD 64
  ------------------
              				if(bw->capacity * FLAC__BITS_PER_WORD <= capacity_needed && !bitwriter_grow_(bw, nvals * FLAC__TEMP_BITS + oversize_in_bits))
  ------------------
  |  |   74|    167|#define FLAC__TEMP_BITS 64
  ------------------
  |  Branch (643:8): [True: 167, False: 32.4k]
  |  Branch (643:65): [True: 0, False: 167]
  ------------------
  644|      0|					return false;
  645|  32.6k|			}
  646|  95.7k|			if(msbits > bitpointer) {
  ------------------
  |  Branch (646:7): [True: 30.6k, False: 65.1k]
  ------------------
  647|       |				/* We have a lot of 0 bits to write, first align with bitwriter word */
  648|  30.6k|				msbits -= bitpointer - FLAC__HALF_TEMP_BITS;
  ------------------
  |  |   75|  30.6k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  649|  30.6k|				bitpointer = FLAC__HALF_TEMP_BITS;
  ------------------
  |  |   75|  30.6k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  650|  30.6k|				WIDE_ACCUM_TO_BW
  ------------------
  |  |  556|  30.6k|#define WIDE_ACCUM_TO_BW {  \
  |  |  557|  30.6k|	FLAC__ASSERT(bw->bits % FLAC__HALF_TEMP_BITS == 0);  \
  |  |  ------------------
  |  |  |  |   38|  30.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 30.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  558|  30.6k|	if(bw->bits == 0) {  \
  |  |  ------------------
  |  |  |  Branch (558:5): [True: 15.3k, False: 15.2k]
  |  |  ------------------
  |  |  559|  15.3k|		bw->accum = wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.3k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  560|  15.3k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.3k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  561|  15.3k|		bw->bits = FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.3k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  562|  15.3k|	}  \
  |  |  563|  30.6k|	else {  \
  |  |  564|  15.2k|		bw->accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.2k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  565|  15.2k|		bw->accum += wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.2k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  566|  15.2k|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);  \
  |  |  ------------------
  |  |  |  |   80|  15.2k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  15.2k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  567|  15.2k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.2k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  568|  15.2k|		bw->bits = 0;  \
  |  |  569|  15.2k|	}  \
  |  |  570|  30.6k|	bitpointer += FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  30.6k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  571|  30.6k|}
  ------------------
  651|   249k|				while(msbits > bitpointer) {
  ------------------
  |  Branch (651:11): [True: 218k, False: 30.6k]
  ------------------
  652|       |					/* As the accumulator is already zero, we only need to
  653|       |					 * assign zeroes to the bitbuffer */
  654|   218k|					WIDE_ACCUM_TO_BW
  ------------------
  |  |  556|   218k|#define WIDE_ACCUM_TO_BW {  \
  |  |  557|   218k|	FLAC__ASSERT(bw->bits % FLAC__HALF_TEMP_BITS == 0);  \
  |  |  ------------------
  |  |  |  |   38|   218k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 218k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  558|   218k|	if(bw->bits == 0) {  \
  |  |  ------------------
  |  |  |  Branch (558:5): [True: 109k, False: 109k]
  |  |  ------------------
  |  |  559|   109k|		bw->accum = wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|   109k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  560|   109k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|   109k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  561|   109k|		bw->bits = FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|   109k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  562|   109k|	}  \
  |  |  563|   218k|	else {  \
  |  |  564|   109k|		bw->accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|   109k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  565|   109k|		bw->accum += wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|   109k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  566|   109k|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);  \
  |  |  ------------------
  |  |  |  |   80|   109k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|   109k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  567|   109k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|   109k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  568|   109k|		bw->bits = 0;  \
  |  |  569|   109k|	}  \
  |  |  570|   218k|	bitpointer += FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|   218k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  571|   218k|}
  ------------------
  655|   218k|					bitpointer -= FLAC__HALF_TEMP_BITS;
  ------------------
  |  |   75|   218k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  656|   218k|					msbits -= FLAC__HALF_TEMP_BITS;
  ------------------
  |  |   75|   218k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  657|   218k|				}
  658|       |				/* The remaining bits are zero, and the accumulator already is zero,
  659|       |				 * so just subtract the number of bits from bitpointer. When storing,
  660|       |				 * we can also just store 0 */
  661|  30.6k|				bitpointer -= msbits;
  662|  30.6k|				if(bitpointer <= FLAC__HALF_TEMP_BITS)
  ------------------
  |  |   75|  30.6k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  |  Branch (662:8): [True: 30.6k, False: 0]
  ------------------
  663|  30.6k|					WIDE_ACCUM_TO_BW
  ------------------
  |  |  556|  30.6k|#define WIDE_ACCUM_TO_BW {  \
  |  |  557|  30.6k|	FLAC__ASSERT(bw->bits % FLAC__HALF_TEMP_BITS == 0);  \
  |  |  ------------------
  |  |  |  |   38|  30.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 30.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  558|  30.6k|	if(bw->bits == 0) {  \
  |  |  ------------------
  |  |  |  Branch (558:5): [True: 15.4k, False: 15.1k]
  |  |  ------------------
  |  |  559|  15.4k|		bw->accum = wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  560|  15.4k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  561|  15.4k|		bw->bits = FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  562|  15.4k|	}  \
  |  |  563|  30.6k|	else {  \
  |  |  564|  15.1k|		bw->accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.1k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  565|  15.1k|		bw->accum += wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.1k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  566|  15.1k|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);  \
  |  |  ------------------
  |  |  |  |   80|  15.1k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  15.1k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  567|  15.1k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  15.1k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  568|  15.1k|		bw->bits = 0;  \
  |  |  569|  15.1k|	}  \
  |  |  570|  30.6k|	bitpointer += FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  30.6k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  571|  30.6k|}
  ------------------
  664|  30.6k|			}
  665|  65.1k|			else {
  666|  65.1k|				bitpointer -= msbits;
  667|  65.1k|				if(bitpointer <= FLAC__HALF_TEMP_BITS)
  ------------------
  |  |   75|  65.1k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  |  Branch (667:8): [True: 65.9k, False: 18.4E]
  ------------------
  668|  65.9k|					WIDE_ACCUM_TO_BW
  ------------------
  |  |  556|  65.9k|#define WIDE_ACCUM_TO_BW {  \
  |  |  557|  65.9k|	FLAC__ASSERT(bw->bits % FLAC__HALF_TEMP_BITS == 0);  \
  |  |  ------------------
  |  |  |  |   38|  65.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 65.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  558|  65.9k|	if(bw->bits == 0) {  \
  |  |  ------------------
  |  |  |  Branch (558:5): [True: 33.4k, False: 32.4k]
  |  |  ------------------
  |  |  559|  33.4k|		bw->accum = wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  33.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  560|  33.4k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  33.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  561|  33.4k|		bw->bits = FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  33.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  562|  33.4k|	}  \
  |  |  563|  65.9k|	else {  \
  |  |  564|  32.4k|		bw->accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  32.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  565|  32.4k|		bw->accum += wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  32.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  566|  32.4k|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);  \
  |  |  ------------------
  |  |  |  |   80|  32.4k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  32.4k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  567|  32.4k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  32.4k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  568|  32.4k|		bw->bits = 0;  \
  |  |  569|  32.4k|	}  \
  |  |  570|  65.9k|	bitpointer += FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  65.9k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  571|  65.9k|}
  ------------------
  669|  65.1k|			}
  670|       |			/* The lsbs + stop bit always fit 32 bit, so this code mirrors the code above */
  671|  95.7k|                        wide_accum |= (FLAC__bwtemp)(uval) << (bitpointer - lsbits);
  672|  95.7k|                        bitpointer -= lsbits;
  673|  95.7k|                        if(bitpointer <= FLAC__HALF_TEMP_BITS) {
  ------------------
  |  |   75|  95.7k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  |  Branch (673:28): [True: 84.9k, False: 10.7k]
  ------------------
  674|       |                                /* A word is finished, copy the upper 32 bits of the wide_accum */
  675|  84.9k|                                WIDE_ACCUM_TO_BW
  ------------------
  |  |  556|  84.9k|#define WIDE_ACCUM_TO_BW {  \
  |  |  557|  84.9k|	FLAC__ASSERT(bw->bits % FLAC__HALF_TEMP_BITS == 0);  \
  |  |  ------------------
  |  |  |  |   38|  84.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 84.9k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  558|  84.9k|	if(bw->bits == 0) {  \
  |  |  ------------------
  |  |  |  Branch (558:5): [True: 41.9k, False: 43.0k]
  |  |  ------------------
  |  |  559|  41.9k|		bw->accum = wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  41.9k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  560|  41.9k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  41.9k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  561|  41.9k|		bw->bits = FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  41.9k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  562|  41.9k|	}  \
  |  |  563|  84.9k|	else {  \
  |  |  564|  43.0k|		bw->accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  43.0k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  565|  43.0k|		bw->accum += wide_accum >> FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  43.0k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  566|  43.0k|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);  \
  |  |  ------------------
  |  |  |  |   80|  43.0k|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  |  |  ------------------
  |  |  |  |  |  |   46|  43.0k|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  567|  43.0k|		wide_accum <<= FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  43.0k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  568|  43.0k|		bw->bits = 0;  \
  |  |  569|  43.0k|	}  \
  |  |  570|  84.9k|	bitpointer += FLAC__HALF_TEMP_BITS;  \
  |  |  ------------------
  |  |  |  |   75|  84.9k|#define FLAC__HALF_TEMP_BITS 32
  |  |  ------------------
  |  |  571|  84.9k|}
  ------------------
  676|  84.9k|                        }
  677|  95.7k|		}
  678|  22.1M|		vals++;
  679|  22.1M|		nvals--;
  680|  22.1M|	}
  681|       |	/* Now fixup remainder of wide_accum */
  682|       |#if (ENABLE_64_BIT_WORDS == 0)
  683|       |	if(bitpointer < FLAC__TEMP_BITS) {
  684|       |		bw->accum = wide_accum >> bitpointer;
  685|       |		bw->bits = FLAC__TEMP_BITS - bitpointer;
  686|       |	}
  687|       |#else
  688|  1.35M|	if(bitpointer < FLAC__TEMP_BITS) {
  ------------------
  |  |   74|  1.35M|#define FLAC__TEMP_BITS 64
  ------------------
  |  Branch (688:5): [True: 1.32M, False: 28.3k]
  ------------------
  689|  1.32M|		if(bw->bits == 0) {
  ------------------
  |  Branch (689:6): [True: 704k, False: 619k]
  ------------------
  690|   704k|			bw->accum = wide_accum >> bitpointer;
  691|   704k|			bw->bits = FLAC__TEMP_BITS - bitpointer;
  ------------------
  |  |   74|   704k|#define FLAC__TEMP_BITS 64
  ------------------
  692|   704k|		}
  693|   620k|		else if (bw->bits == FLAC__HALF_TEMP_BITS) {
  ------------------
  |  |   75|   619k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
  |  Branch (693:12): [True: 620k, False: 18.4E]
  ------------------
  694|   620k|			bw->accum <<= FLAC__TEMP_BITS - bitpointer;
  ------------------
  |  |   74|   620k|#define FLAC__TEMP_BITS 64
  ------------------
  695|   620k|			bw->accum |= (wide_accum >> bitpointer);
  696|   620k|			bw->bits = FLAC__HALF_TEMP_BITS + FLAC__TEMP_BITS - bitpointer;
  ------------------
  |  |   75|   620k|#define FLAC__HALF_TEMP_BITS 32
  ------------------
              			bw->bits = FLAC__HALF_TEMP_BITS + FLAC__TEMP_BITS - bitpointer;
  ------------------
  |  |   74|   620k|#define FLAC__TEMP_BITS 64
  ------------------
  697|   620k|		}
  698|  18.4E|		else {
  699|  18.4E|			FLAC__ASSERT(0);
  ------------------
  |  |   38|  18.4E|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  700|  18.4E|		}
  701|  1.32M|	}
  702|  1.35M|#endif
  703|       |
  704|       |
  705|  1.35M|	return true;
  706|  1.35M|}
FLAC__bitwriter_write_utf8_uint32:
  833|   247k|{
  834|   247k|	FLAC__bool ok = 1;
  835|       |
  836|   247k|	FLAC__ASSERT(0 != bw);
  ------------------
  |  |   38|   247k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 247k]
  |  |  ------------------
  ------------------
  837|   247k|	FLAC__ASSERT(0 != bw->buffer);
  ------------------
  |  |   38|   247k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 247k]
  |  |  ------------------
  ------------------
  838|       |
  839|   247k|	if((val & 0x80000000) != 0) /* this version only handles 31 bits */
  ------------------
  |  Branch (839:5): [True: 0, False: 247k]
  ------------------
  840|      0|		return false;
  841|       |
  842|   247k|	if(val < 0x80) {
  ------------------
  |  Branch (842:5): [True: 82.8k, False: 164k]
  ------------------
  843|  82.8k|		return FLAC__bitwriter_write_raw_uint32_nocheck(bw, val, 8);
  844|  82.8k|	}
  845|   164k|	else if(val < 0x800) {
  ------------------
  |  Branch (845:10): [True: 134k, False: 29.4k]
  ------------------
  846|   134k|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0xC0 | (val>>6), 8);
  847|   134k|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | (val&0x3F), 8);
  848|   134k|	}
  849|  29.4k|	else if(val < 0x10000) {
  ------------------
  |  Branch (849:10): [True: 29.3k, False: 80]
  ------------------
  850|  29.3k|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0xE0 | (val>>12), 8);
  851|  29.3k|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>6)&0x3F), 8);
  852|  29.3k|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | (val&0x3F), 8);
  853|  29.3k|	}
  854|     80|	else if(val < 0x200000) {
  ------------------
  |  Branch (854:10): [True: 0, False: 80]
  ------------------
  855|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0xF0 | (val>>18), 8);
  856|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>12)&0x3F), 8);
  857|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>6)&0x3F), 8);
  858|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | (val&0x3F), 8);
  859|      0|	}
  860|     80|	else if(val < 0x4000000) {
  ------------------
  |  Branch (860:10): [True: 0, False: 80]
  ------------------
  861|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0xF8 | (val>>24), 8);
  862|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>18)&0x3F), 8);
  863|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>12)&0x3F), 8);
  864|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>6)&0x3F), 8);
  865|      0|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | (val&0x3F), 8);
  866|      0|	}
  867|     80|	else {
  868|     80|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0xFC | (val>>30), 8);
  869|     80|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>24)&0x3F), 8);
  870|     80|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>18)&0x3F), 8);
  871|     80|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>12)&0x3F), 8);
  872|     80|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | ((val>>6)&0x3F), 8);
  873|     80|		ok &= FLAC__bitwriter_write_raw_uint32_nocheck(bw, 0x80 | (val&0x3F), 8);
  874|     80|	}
  875|       |
  876|   164k|	return ok;
  877|   247k|}
FLAC__bitwriter_zero_pad_to_byte_boundary:
  936|   247k|{
  937|       |	/* 0-pad to byte boundary */
  938|   247k|	if(bw->bits & 7u)
  ------------------
  |  Branch (938:5): [True: 119k, False: 127k]
  ------------------
  939|   119k|		return FLAC__bitwriter_write_zeroes(bw, 8 - (bw->bits & 7u));
  940|   127k|	else
  941|   127k|		return true;
  942|   247k|}
bitwriter.c:bitwriter_grow_:
  111|  27.0k|{
  112|  27.0k|	uint32_t new_capacity;
  113|  27.0k|	bwword *new_buffer;
  114|       |
  115|       |	/* Refuse to allocate more words than this amount, based on largest possible metadata chunk size */
  116|  27.0k|	const uint32_t max_capacity = (((1u << FLAC__STREAM_METADATA_LENGTH_LEN) - 1) * 8 + FLAC__STREAM_METADATA_LENGTH_LEN + FLAC__BITS_PER_WORD - 1) / FLAC__BITS_PER_WORD;
  ------------------
  |  |   73|  27.0k|#define FLAC__BITS_PER_WORD 64
  ------------------
              	const uint32_t max_capacity = (((1u << FLAC__STREAM_METADATA_LENGTH_LEN) - 1) * 8 + FLAC__STREAM_METADATA_LENGTH_LEN + FLAC__BITS_PER_WORD - 1) / FLAC__BITS_PER_WORD;
  ------------------
  |  |   73|  27.0k|#define FLAC__BITS_PER_WORD 64
  ------------------
  117|       |
  118|  27.0k|	FLAC__ASSERT(0 != bw);
  ------------------
  |  |   38|  27.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 27.0k]
  |  |  ------------------
  ------------------
  119|  27.0k|	FLAC__ASSERT(0 != bw->buffer);
  ------------------
  |  |   38|  27.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 27.0k]
  |  |  ------------------
  ------------------
  120|       |
  121|       |	/* calculate total words needed to store 'bits_to_add' additional bits */
  122|  27.0k|	new_capacity = bw->words + ((bw->bits + bits_to_add + FLAC__BITS_PER_WORD - 1) / FLAC__BITS_PER_WORD);
  ------------------
  |  |   73|  27.0k|#define FLAC__BITS_PER_WORD 64
  ------------------
              	new_capacity = bw->words + ((bw->bits + bits_to_add + FLAC__BITS_PER_WORD - 1) / FLAC__BITS_PER_WORD);
  ------------------
  |  |   73|  27.0k|#define FLAC__BITS_PER_WORD 64
  ------------------
  123|       |
  124|       |	/* it's possible (due to pessimism in the growth estimation that
  125|       |	 * leads to this call) that we don't actually need to grow
  126|       |	 */
  127|  27.0k|	if(bw->capacity >= new_capacity)
  ------------------
  |  Branch (127:5): [True: 25.3k, False: 1.75k]
  ------------------
  128|  25.3k|		return true;
  129|       |
  130|  1.75k|	if(new_capacity > max_capacity)
  ------------------
  |  Branch (130:5): [True: 0, False: 1.75k]
  ------------------
  131|       |		/* Requested new capacity is larger than the largest possible metadata block,
  132|       |		 * which is also larger than the largest sane framesize. That means something
  133|       |		 * went very wrong somewhere and previous checks failed.
  134|       |		 * To prevent chrashing, give up */
  135|      0|		return false;
  136|       |
  137|       |	/* As reallocation can be quite expensive, grow exponentially */
  138|  1.75k|	if((new_capacity - bw->capacity) < (bw->capacity >> FLAC__BITWRITER_DEFAULT_GROW_FRACTION))
  ------------------
  |  Branch (138:5): [True: 1.01k, False: 735]
  ------------------
  139|  1.01k|		new_capacity = bw->capacity + (bw->capacity >> FLAC__BITWRITER_DEFAULT_GROW_FRACTION);
  140|       |
  141|       |	/* make sure we got everything right */
  142|  1.75k|	FLAC__ASSERT(new_capacity > bw->capacity);
  ------------------
  |  |   38|  1.75k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.75k]
  |  |  ------------------
  ------------------
  143|  1.75k|	FLAC__ASSERT(new_capacity >= bw->words + ((bw->bits + bits_to_add + FLAC__BITS_PER_WORD - 1) / FLAC__BITS_PER_WORD));
  ------------------
  |  |   38|  1.75k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.75k]
  |  |  ------------------
  ------------------
  144|       |
  145|  1.75k|	new_buffer = safe_realloc_nofree_mul_2op_(bw->buffer, sizeof(bwword), /*times*/new_capacity);
  146|  1.75k|	if(new_buffer == 0)
  ------------------
  |  Branch (146:5): [True: 0, False: 1.75k]
  ------------------
  147|      0|		return false;
  148|  1.75k|	bw->buffer = new_buffer;
  149|  1.75k|	bw->capacity = new_capacity;
  150|       |	return true;
  151|  1.75k|}
bitwriter.c:FLAC__bitwriter_write_raw_uint32_nocheck:
  317|  13.1M|{
  318|  13.1M|	register uint32_t left;
  319|       |
  320|       |	/* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
  321|  13.1M|	FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
  ------------------
  |  |   38|  13.1M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 13.1M]
  |  |  ------------------
  ------------------
  322|       |
  323|  13.1M|	if(bw == 0 || bw->buffer == 0)
  ------------------
  |  Branch (323:5): [True: 18.4E, False: 13.1M]
  |  Branch (323:16): [True: 18.4E, False: 13.1M]
  ------------------
  324|      0|		return false;
  325|       |
  326|  13.1M|	if (bits > 32)
  ------------------
  |  Branch (326:6): [True: 0, False: 13.1M]
  ------------------
  327|      0|		return false;
  328|       |
  329|  13.1M|	if(bits == 0)
  ------------------
  |  Branch (329:5): [True: 0, False: 13.1M]
  ------------------
  330|      0|		return true;
  331|       |
  332|  13.1M|	FLAC__ASSERT((bits == 32) || (val>>bits == 0));
  ------------------
  |  |   38|  21.6M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 4.57M, False: 8.54M]
  |  |  |  Branch (38:30): [True: 8.54M, False: 0]
  |  |  ------------------
  ------------------
  333|       |
  334|       |	/* slightly pessimistic size check but faster than "<= bw->words + (bw->bits+bits+FLAC__BITS_PER_WORD-1)/FLAC__BITS_PER_WORD" */
  335|  13.1M|	if(bw->capacity <= bw->words + bits && !bitwriter_grow_(bw, bits))
  ------------------
  |  Branch (335:5): [True: 25.5k, False: 13.0M]
  |  Branch (335:41): [True: 0, False: 25.5k]
  ------------------
  336|      0|		return false;
  337|       |
  338|  13.1M|	left = FLAC__BITS_PER_WORD - bw->bits;
  ------------------
  |  |   73|  13.1M|#define FLAC__BITS_PER_WORD 64
  ------------------
  339|  13.1M|	if(bits < left) {
  ------------------
  |  Branch (339:5): [True: 10.0M, False: 3.02M]
  ------------------
  340|  10.0M|		bw->accum <<= bits;
  341|  10.0M|		bw->accum |= val;
  342|  10.0M|		bw->bits += bits;
  343|  10.0M|	}
  344|  3.03M|	else if(bw->bits) { /* WATCHOUT: if bw->bits == 0, left==FLAC__BITS_PER_WORD and bw->accum<<=left is a NOP instead of setting to 0 */
  ------------------
  |  Branch (344:10): [True: 3.03M, False: 18.4E]
  ------------------
  345|  3.03M|		bw->accum <<= left;
  346|  3.03M|		bw->accum |= val >> (bw->bits = bits - left);
  347|  3.03M|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST(bw->accum);
  ------------------
  |  |   80|  3.03M|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  ------------------
  |  |  |  |   46|  3.03M|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  ------------------
  ------------------
  348|  3.03M|		bw->accum = val; /* unused top bits can contain garbage */
  349|  3.03M|	}
  350|  18.4E|	else { /* at this point bits == FLAC__BITS_PER_WORD == 32  and  bw->bits == 0 */
  351|  18.4E|		bw->buffer[bw->words++] = SWAP_BE_WORD_TO_HOST((bwword)val);
  ------------------
  |  |   80|  18.4E|#define SWAP_BE_WORD_TO_HOST(x) ENDSWAP_64(x)
  |  |  ------------------
  |  |  |  |   46|  18.4E|#define	ENDSWAP_64(x)		(__builtin_bswap64 (x))
  |  |  ------------------
  ------------------
  352|  18.4E|	}
  353|       |
  354|       |	return true;
  355|  13.1M|}

FLAC__cpu_info:
  203|  17.8k|{
  204|  17.8k|	memset(info, 0, sizeof(*info));
  205|       |
  206|       |#ifdef FLAC__CPU_IA32
  207|       |	info->type = FLAC__CPUINFO_TYPE_IA32;
  208|       |#elif defined FLAC__CPU_X86_64
  209|       |	info->type = FLAC__CPUINFO_TYPE_X86_64;
  210|       |#else
  211|       |	info->type = FLAC__CPUINFO_TYPE_UNKNOWN;
  212|       |#endif
  213|       |
  214|  17.8k|	switch (info->type) {
  215|      0|	case FLAC__CPUINFO_TYPE_IA32: /* fallthrough */
  ------------------
  |  Branch (215:2): [True: 0, False: 17.8k]
  ------------------
  216|  17.8k|	case FLAC__CPUINFO_TYPE_X86_64:
  ------------------
  |  Branch (216:2): [True: 17.8k, False: 0]
  ------------------
  217|  17.8k|		x86_cpu_info (info);
  218|  17.8k|		break;
  219|      0|	default:
  ------------------
  |  Branch (219:2): [True: 0, False: 17.8k]
  ------------------
  220|       |		info->use_asm = false;
  221|      0|		break;
  222|  17.8k|	}
  223|  17.8k|}
cpu.c:x86_cpu_info:
  153|  17.8k|{
  154|  17.8k|#if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64) && FLAC__HAS_X86INTRIN && !defined FLAC__NO_ASM
  155|  17.8k|	FLAC__bool x86_osxsave = false;
  156|  17.8k|	FLAC__bool os_avx = false;
  157|  17.8k|	FLAC__uint32 flags_eax, flags_ebx, flags_ecx, flags_edx;
  158|       |
  159|  17.8k|	info->use_asm = true; /* we assume a minimum of 80386 */
  160|  17.8k|	if (!cpu_have_cpuid())
  ------------------
  |  Branch (160:6): [True: 0, False: 17.8k]
  ------------------
  161|      0|		return;
  162|       |
  163|  17.8k|	cpuinfo_x86(0, &flags_eax, &flags_ebx, &flags_ecx, &flags_edx);
  164|  17.8k|	info->x86.intel = (flags_ebx == 0x756E6547 && flags_edx == 0x49656E69 && flags_ecx == 0x6C65746E) ? true : false; /* GenuineIntel */
  ------------------
  |  Branch (164:21): [True: 0, False: 17.8k]
  |  Branch (164:48): [True: 0, False: 0]
  |  Branch (164:75): [True: 0, False: 0]
  ------------------
  165|  17.8k|	cpuinfo_x86(1, &flags_eax, &flags_ebx, &flags_ecx, &flags_edx);
  166|       |
  167|  17.8k|	info->x86.cmov  = (flags_edx & FLAC__CPUINFO_X86_CPUID_CMOV ) ? true : false;
  ------------------
  |  Branch (167:20): [True: 17.8k, False: 0]
  ------------------
  168|  17.8k|	info->x86.mmx   = (flags_edx & FLAC__CPUINFO_X86_CPUID_MMX  ) ? true : false;
  ------------------
  |  Branch (168:20): [True: 17.8k, False: 0]
  ------------------
  169|  17.8k|	info->x86.sse   = (flags_edx & FLAC__CPUINFO_X86_CPUID_SSE  ) ? true : false;
  ------------------
  |  Branch (169:20): [True: 17.8k, False: 0]
  ------------------
  170|  17.8k|	info->x86.sse2  = (flags_edx & FLAC__CPUINFO_X86_CPUID_SSE2 ) ? true : false;
  ------------------
  |  Branch (170:20): [True: 17.8k, False: 0]
  ------------------
  171|  17.8k|	info->x86.sse3  = (flags_ecx & FLAC__CPUINFO_X86_CPUID_SSE3 ) ? true : false;
  ------------------
  |  Branch (171:20): [True: 17.8k, False: 0]
  ------------------
  172|  17.8k|	info->x86.ssse3 = (flags_ecx & FLAC__CPUINFO_X86_CPUID_SSSE3) ? true : false;
  ------------------
  |  Branch (172:20): [True: 17.8k, False: 0]
  ------------------
  173|  17.8k|	info->x86.sse41 = (flags_ecx & FLAC__CPUINFO_X86_CPUID_SSE41) ? true : false;
  ------------------
  |  Branch (173:20): [True: 17.8k, False: 0]
  ------------------
  174|  17.8k|	info->x86.sse42 = (flags_ecx & FLAC__CPUINFO_X86_CPUID_SSE42) ? true : false;
  ------------------
  |  Branch (174:20): [True: 17.8k, False: 0]
  ------------------
  175|       |
  176|  17.8k|	if (FLAC__AVX_SUPPORTED) {
  ------------------
  |  |   90|  17.8k|    #define FLAC__AVX_SUPPORTED 1
  |  |  ------------------
  |  |  |  Branch (90:33): [True: 17.8k, Folded]
  |  |  ------------------
  ------------------
  177|  17.8k|		x86_osxsave     = (flags_ecx & FLAC__CPUINFO_X86_CPUID_OSXSAVE) ? true : false;
  ------------------
  |  Branch (177:21): [True: 17.8k, False: 0]
  ------------------
  178|  17.8k|		info->x86.avx   = (flags_ecx & FLAC__CPUINFO_X86_CPUID_AVX    ) ? true : false;
  ------------------
  |  Branch (178:21): [True: 17.8k, False: 0]
  ------------------
  179|  17.8k|		info->x86.fma   = (flags_ecx & FLAC__CPUINFO_X86_CPUID_FMA    ) ? true : false;
  ------------------
  |  Branch (179:21): [True: 17.8k, False: 0]
  ------------------
  180|  17.8k|		cpuinfo_x86(7, &flags_eax, &flags_ebx, &flags_ecx, &flags_edx);
  181|  17.8k|		info->x86.avx2  = (flags_ebx & FLAC__CPUINFO_X86_CPUID_AVX2   ) ? true : false;
  ------------------
  |  Branch (181:21): [True: 17.8k, False: 0]
  ------------------
  182|  17.8k|		info->x86.bmi2  = (flags_ebx & FLAC__CPUINFO_X86_CPUID_BMI2   ) ? true : false;
  ------------------
  |  Branch (182:21): [True: 17.8k, False: 0]
  ------------------
  183|  17.8k|	}
  184|       |
  185|       |	/*
  186|       |	 * now have to check for OS support of AVX instructions
  187|       |	 */
  188|  17.8k|	if (FLAC__AVX_SUPPORTED && info->x86.avx && x86_osxsave && (cpu_xgetbv_x86() & 0x6) == 0x6) {
  ------------------
  |  |   90|  35.7k|    #define FLAC__AVX_SUPPORTED 1
  |  |  ------------------
  |  |  |  Branch (90:33): [True: 17.8k, Folded]
  |  |  ------------------
  ------------------
  |  Branch (188:29): [True: 17.8k, False: 0]
  |  Branch (188:46): [True: 17.8k, False: 0]
  |  Branch (188:61): [True: 17.8k, False: 0]
  ------------------
  189|  17.8k|		os_avx = true;
  190|  17.8k|	}
  191|  17.8k|	if (!os_avx) {
  ------------------
  |  Branch (191:6): [True: 0, False: 17.8k]
  ------------------
  192|       |		/* no OS AVX support */
  193|      0|		info->x86.avx     = false;
  194|      0|		info->x86.avx2    = false;
  195|      0|		info->x86.fma     = false;
  196|      0|	}
  197|       |#else
  198|       |	info->use_asm = false;
  199|       |#endif
  200|  17.8k|}
cpu.c:cpu_have_cpuid:
   89|  17.8k|{
   90|  17.8k|#if defined FLAC__CPU_X86_64 || defined __i686__ || defined __SSE__ || (defined _M_IX86_FP && _M_IX86_FP > 0)
   91|       |	/* target CPU does have CPUID instruction */
   92|  17.8k|	return 1;
   93|       |#elif defined __GNUC__ && defined HAVE_CPUID_H
   94|       |	if (__get_cpuid_max(0, 0) != 0)
   95|       |		return 1;
   96|       |	else
   97|       |		return 0;
   98|       |#elif defined _MSC_VER
   99|       |	FLAC__uint32 flags1, flags2;
  100|       |	__asm {
  101|       |		pushfd
  102|       |		pushfd
  103|       |		pop		eax
  104|       |		mov		flags1, eax
  105|       |		xor		eax, 0x200000
  106|       |		push	eax
  107|       |		popfd
  108|       |		pushfd
  109|       |		pop		eax
  110|       |		mov		flags2, eax
  111|       |		popfd
  112|       |	}
  113|       |	if (((flags1^flags2) & 0x200000) != 0)
  114|       |		return 1;
  115|       |	else
  116|       |		return 0;
  117|       |#else
  118|       |	return 0;
  119|       |#endif
  120|  17.8k|}
cpu.c:cpuinfo_x86:
  124|  53.6k|{
  125|       |#if defined _MSC_VER
  126|       |	int cpuinfo[4];
  127|       |	int ext = level & 0x80000000;
  128|       |	__cpuid(cpuinfo, ext);
  129|       |	if ((uint32_t)cpuinfo[0] >= level) {
  130|       |#if FLAC__AVX_SUPPORTED
  131|       |		__cpuidex(cpuinfo, level, 0); /* for AVX2 detection */
  132|       |#else
  133|       |		__cpuid(cpuinfo, level); /* some old compilers don't support __cpuidex */
  134|       |#endif
  135|       |		*eax = cpuinfo[0]; *ebx = cpuinfo[1]; *ecx = cpuinfo[2]; *edx = cpuinfo[3];
  136|       |		return;
  137|       |	}
  138|       |#elif defined __GNUC__ && defined HAVE_CPUID_H
  139|       |	FLAC__uint32 ext = level & 0x80000000;
  140|  53.6k|	__cpuid(ext, *eax, *ebx, *ecx, *edx);
  141|  53.6k|	if (*eax >= level) {
  ------------------
  |  Branch (141:6): [True: 53.6k, False: 0]
  ------------------
  142|  53.6k|		__cpuid_count(level, 0, *eax, *ebx, *ecx, *edx);
  143|  53.6k|		return;
  144|  53.6k|	}
  145|      0|#endif
  146|      0|	*eax = *ebx = *ecx = *edx = 0;
  147|      0|}
cpu.c:cpu_xgetbv_x86:
   75|  17.8k|{
   76|       |#if (defined _MSC_VER || defined __INTEL_COMPILER) && FLAC__AVX_SUPPORTED
   77|       |	return (uint32_t)_xgetbv(0);
   78|       |#elif defined __GNUC__
   79|       |	uint32_t lo, hi;
   80|  17.8k|	__asm__ volatile (".byte 0x0f, 0x01, 0xd0" : "=a"(lo), "=d"(hi) : "c" (0));
   81|  17.8k|	return lo;
   82|       |#else
   83|       |	return 0;
   84|       |#endif
   85|  17.8k|}

FLAC__crc8:
  367|   246k|{
  368|   246k|	FLAC__uint8 crc = 0;
  369|       |
  370|  2.19M|	while(len--)
  ------------------
  |  Branch (370:8): [True: 1.94M, False: 246k]
  ------------------
  371|  1.94M|		crc = FLAC__crc8_table[crc ^ *data++];
  372|       |
  373|   246k|	return crc;
  374|   246k|}
FLAC__crc16:
  377|   247k|{
  378|   247k|	FLAC__uint16 crc = 0;
  379|       |
  380|  10.7M|	while(len >= 8){
  ------------------
  |  Branch (380:8): [True: 10.4M, False: 247k]
  ------------------
  381|  10.4M|		crc ^= data[0] << 8 | data[1];
  382|       |
  383|  10.4M|		crc = FLAC__crc16_table[7][crc >> 8] ^ FLAC__crc16_table[6][crc & 0xFF] ^
  384|  10.4M|		      FLAC__crc16_table[5][data[2] ] ^ FLAC__crc16_table[4][data[3]   ] ^
  385|  10.4M|		      FLAC__crc16_table[3][data[4] ] ^ FLAC__crc16_table[2][data[5]   ] ^
  386|  10.4M|		      FLAC__crc16_table[1][data[6] ] ^ FLAC__crc16_table[0][data[7]   ];
  387|       |
  388|  10.4M|		data += 8;
  389|  10.4M|		len -= 8;
  390|  10.4M|	}
  391|       |
  392|  1.22M|	while(len--)
  ------------------
  |  Branch (392:8): [True: 981k, False: 247k]
  ------------------
  393|   981k|		crc = (crc<<8) ^ FLAC__crc16_table[0][(crc>>8) ^ *data++];
  394|       |
  395|   247k|	return crc;
  396|   247k|}
FLAC__crc16_update_words64:
  423|   383k|{
  424|  12.0M|	while (len--) {
  ------------------
  |  Branch (424:9): [True: 11.7M, False: 383k]
  ------------------
  425|  11.7M|		crc ^= words[0] >> 48;
  426|       |
  427|  11.7M|		crc = FLAC__crc16_table[7][crc >> 8               ] ^ FLAC__crc16_table[6][crc & 0xFF             ] ^
  428|  11.7M|		      FLAC__crc16_table[5][(words[0] >> 40) & 0xFF] ^ FLAC__crc16_table[4][(words[0] >> 32) & 0xFF] ^
  429|  11.7M|		      FLAC__crc16_table[3][(words[0] >> 24) & 0xFF] ^ FLAC__crc16_table[2][(words[0] >> 16) & 0xFF] ^
  430|  11.7M|		      FLAC__crc16_table[1][(words[0] >>  8) & 0xFF] ^ FLAC__crc16_table[0][ words[0]        & 0xFF];
  431|       |
  432|  11.7M|		words++;
  433|  11.7M|	}
  434|       |
  435|   383k|	return crc;
  436|   383k|}

FLAC__bitreader_read_rice_signed_block_bmi2:
    1|  1.29M|{
    2|       |	/* try and get br->consumed_words and br->consumed_bits into register;
    3|       |	 * must remember to flush them back to *br before calling other
    4|       |	 * bitreader functions that use them, and before returning */
    5|  1.29M|	uint32_t cwords, words, lsbs, msbs, x, y, limit;
    6|  1.29M|	uint32_t ucbits; /* keep track of the number of unconsumed bits in word */
    7|  1.29M|	brword b;
    8|  1.29M|	int *val, *end;
    9|       |
   10|  1.29M|	FLAC__ASSERT(0 != br);
  ------------------
  |  |   38|  1.29M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
   11|  1.29M|	FLAC__ASSERT(0 != br->buffer);
  ------------------
  |  |   38|  1.29M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
   12|       |	/* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
   13|  1.29M|	FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
  ------------------
  |  |   38|  1.29M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 1.29M]
  |  |  ------------------
  ------------------
   14|  1.29M|	FLAC__ASSERT(parameter < 32);
  ------------------
  |  |   38|  1.29M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.29M]
  |  |  ------------------
  ------------------
   15|       |	/* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
   16|       |
   17|  1.29M|	limit = UINT32_MAX >> parameter; /* Maximal msbs that can occur with residual bounded to int32_t */
   18|       |
   19|  1.29M|	val = vals;
   20|  1.29M|	end = vals + nvals;
   21|       |
   22|  1.29M|	if(parameter == 0) {
  ------------------
  |  Branch (22:5): [True: 573k, False: 723k]
  ------------------
   23|  3.85M|		while(val < end) {
  ------------------
  |  Branch (23:9): [True: 3.27M, False: 573k]
  ------------------
   24|       |			/* read the unary MSBs and end bit */
   25|  3.27M|			if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
  ------------------
  |  Branch (25:7): [True: 0, False: 3.27M]
  ------------------
   26|      0|				return false;
   27|       |			/* Checking limit here would be overzealous: coding UINT32_MAX
   28|       |			 * with parameter == 0 would take 4GiB */
   29|  3.27M|			*val++ = (int)(msbs >> 1) ^ -(int)(msbs & 1);
   30|  3.27M|		}
   31|       |
   32|   573k|		return true;
   33|   573k|	}
   34|       |
   35|   723k|	FLAC__ASSERT(parameter > 0);
  ------------------
  |  |   38|   723k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 723k]
  |  |  ------------------
  ------------------
   36|       |
   37|   723k|	cwords = br->consumed_words;
   38|   723k|	words = br->words;
   39|       |
   40|       |	/* if we've not consumed up to a partial tail word... */
   41|   723k|	if(cwords >= words) {
  ------------------
  |  Branch (41:5): [True: 2.26k, False: 721k]
  ------------------
   42|  2.26k|		x = 0;
   43|  2.26k|		goto process_tail;
   44|  2.26k|	}
   45|       |
   46|   721k|	ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
  ------------------
  |  |   73|   721k|#define FLAC__BITS_PER_WORD 64
  ------------------
   47|   721k|	b = br->buffer[cwords] << br->consumed_bits;  /* keep unconsumed bits aligned to left */
   48|       |
   49|  18.9M|	while(val < end) {
  ------------------
  |  Branch (49:8): [True: 18.1M, False: 723k]
  ------------------
   50|       |		/* read the unary MSBs and end bit */
   51|  18.1M|		x = y = COUNT_ZERO_MSBS2(b);
  ------------------
  |  |   83|  18.1M|#define COUNT_ZERO_MSBS2(word) FLAC__clz2_uint64(word)
  ------------------
   52|  18.1M|		if(x == FLAC__BITS_PER_WORD) {
  ------------------
  |  |   73|  18.1M|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (52:6): [True: 542k, False: 17.6M]
  ------------------
   53|   542k|			x = ucbits;
   54|   643k|			do {
   55|       |				/* didn't find stop bit yet, have to keep going... */
   56|   643k|				cwords++;
   57|   643k|				if (cwords >= words)
  ------------------
  |  Branch (57:9): [True: 4.66k, False: 638k]
  ------------------
   58|  4.66k|					goto incomplete_msbs;
   59|   638k|				b = br->buffer[cwords];
   60|   638k|				y = COUNT_ZERO_MSBS2(b);
  ------------------
  |  |   83|   638k|#define COUNT_ZERO_MSBS2(word) FLAC__clz2_uint64(word)
  ------------------
   61|   638k|				x += y;
   62|   638k|			} while(y == FLAC__BITS_PER_WORD);
  ------------------
  |  |   73|   638k|#define FLAC__BITS_PER_WORD 64
  ------------------
  |  Branch (62:12): [True: 101k, False: 537k]
  ------------------
   63|   542k|		}
   64|  18.1M|		b <<= y;
   65|  18.1M|		b <<= 1; /* account for stop bit */
   66|  18.1M|		ucbits = (ucbits - x - 1) % FLAC__BITS_PER_WORD;
  ------------------
  |  |   73|  18.1M|#define FLAC__BITS_PER_WORD 64
  ------------------
   67|  18.1M|		msbs = x;
   68|       |
   69|  18.1M|		if(x > limit)
  ------------------
  |  Branch (69:6): [True: 0, False: 18.1M]
  ------------------
   70|      0|			return false;
   71|       |
   72|       |		/* read the binary LSBs */
   73|  18.1M|		x = (FLAC__uint32)(b >> (FLAC__BITS_PER_WORD - parameter)); /* parameter < 32, so we can cast to 32-bit uint32_t */
  ------------------
  |  |   73|  18.1M|#define FLAC__BITS_PER_WORD 64
  ------------------
   74|  18.1M|		if(parameter <= ucbits) {
  ------------------
  |  Branch (74:6): [True: 11.4M, False: 6.77M]
  ------------------
   75|  11.4M|			ucbits -= parameter;
   76|  11.4M|			b <<= parameter;
   77|  11.4M|		} else {
   78|       |			/* there are still bits left to read, they will all be in the next word */
   79|  6.77M|			cwords++;
   80|  6.77M|			if (cwords >= words)
  ------------------
  |  Branch (80:8): [True: 37.9k, False: 6.73M]
  ------------------
   81|  37.9k|				goto incomplete_lsbs;
   82|  6.73M|			b = br->buffer[cwords];
   83|  6.73M|			ucbits += FLAC__BITS_PER_WORD - parameter;
  ------------------
  |  |   73|  6.73M|#define FLAC__BITS_PER_WORD 64
  ------------------
   84|  6.73M|			x |= (FLAC__uint32)(b >> ucbits);
   85|  6.73M|			b <<= FLAC__BITS_PER_WORD - ucbits;
  ------------------
  |  |   73|  6.73M|#define FLAC__BITS_PER_WORD 64
  ------------------
   86|  6.73M|		}
   87|  18.1M|		lsbs = x;
   88|       |
   89|       |		/* compose the value */
   90|  18.1M|		x = (msbs << parameter) | lsbs;
   91|  18.1M|		*val++ = (int)(x >> 1) ^ -(int)(x & 1);
   92|       |
   93|  18.1M|		continue;
   94|       |
   95|       |		/* at this point we've eaten up all the whole words */
   96|  2.26k|process_tail:
   97|  27.3k|		do {
   98|  27.3k|			if(0) {
  ------------------
  |  Branch (98:7): [Folded, False: 27.3k]
  ------------------
   99|  4.66k|incomplete_msbs:
  100|  4.66k|				br->consumed_bits = 0;
  101|  4.66k|				br->consumed_words = cwords;
  102|  4.66k|			}
  103|       |
  104|       |			/* read the unary MSBs and end bit */
  105|  32.0k|			if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
  ------------------
  |  Branch (105:7): [True: 0, False: 32.0k]
  ------------------
  106|      0|				return false;
  107|  32.0k|			msbs += x;
  108|  32.0k|			x = ucbits = 0;
  109|       |
  110|  32.0k|			if(0) {
  ------------------
  |  Branch (110:7): [Folded, False: 32.0k]
  ------------------
  111|  37.9k|incomplete_lsbs:
  112|  37.9k|				br->consumed_bits = 0;
  113|  37.9k|				br->consumed_words = cwords;
  114|  37.9k|			}
  115|       |
  116|       |			/* read the binary LSBs */
  117|  69.9k|			if(!FLAC__bitreader_read_raw_uint32(br, &lsbs, parameter - ucbits))
  ------------------
  |  Branch (117:7): [True: 0, False: 69.9k]
  ------------------
  118|      0|				return false;
  119|  69.9k|			lsbs = x | lsbs;
  120|       |
  121|       |			/* compose the value */
  122|  69.9k|			x = (msbs << parameter) | lsbs;
  123|  69.9k|			*val++ = (int)(x >> 1) ^ -(int)(x & 1);
  124|  69.9k|			x = 0;
  125|       |
  126|  69.9k|			cwords = br->consumed_words;
  127|  69.9k|			words = br->words;
  128|  69.9k|			ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
  ------------------
  |  |   73|  69.9k|#define FLAC__BITS_PER_WORD 64
  ------------------
  129|  69.9k|			b = cwords < br->capacity ? br->buffer[cwords] << br->consumed_bits : 0;
  ------------------
  |  Branch (129:8): [True: 69.9k, False: 0]
  ------------------
  130|  69.9k|		} while(cwords >= words && val < end);
  ------------------
  |  Branch (130:11): [True: 63.9k, False: 5.97k]
  |  Branch (130:30): [True: 25.0k, False: 38.8k]
  ------------------
  131|  2.26k|	}
  132|       |
  133|   723k|	if(ucbits == 0 && cwords < words) {
  ------------------
  |  Branch (133:5): [True: 9.79k, False: 713k]
  |  Branch (133:20): [True: 9.79k, False: 0]
  ------------------
  134|       |		/* don't leave the head word with no unconsumed bits */
  135|  9.79k|		cwords++;
  136|  9.79k|		ucbits = FLAC__BITS_PER_WORD;
  ------------------
  |  |   73|  9.79k|#define FLAC__BITS_PER_WORD 64
  ------------------
  137|  9.79k|	}
  138|       |
  139|   723k|	br->consumed_bits = FLAC__BITS_PER_WORD - ucbits;
  ------------------
  |  |   73|   723k|#define FLAC__BITS_PER_WORD 64
  ------------------
  140|   723k|	br->consumed_words = cwords;
  141|       |
  142|       |	return true;
  143|   721k|}

FLAC__fixed_compute_best_predictor_limit_residual_33bit:
  428|  12.8k|{
  429|  12.8k|	FLAC__uint64 total_error_0 = 0, total_error_1 = 0, total_error_2 = 0, total_error_3 = 0, total_error_4 = 0, smallest_error = UINT64_MAX;
  430|  12.8k|	FLAC__uint64 error_0, error_1, error_2, error_3, error_4;
  431|  12.8k|	FLAC__bool order_0_is_valid = true, order_1_is_valid = true, order_2_is_valid = true, order_3_is_valid = true, order_4_is_valid = true;
  432|  12.8k|	uint32_t order = 0;
  433|  12.8k|	int i;
  434|       |
  435|  3.56M|	for(i = -4; i < (int)data_len; i++) {
  ------------------
  |  Branch (435:14): [True: 3.55M, False: 12.8k]
  ------------------
  436|  3.55M|		error_0 = local_abs64(data[i]);
  ------------------
  |  |   53|  3.55M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (53:36): [True: 427k, False: 3.12M]
  |  |  ------------------
  ------------------
  437|  3.55M|		error_1 = (i > -4) ? local_abs64(data[i] - data[i-1]) : 0 ;
  ------------------
  |  |   53|  3.54M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (53:36): [True: 621k, False: 2.92M]
  |  |  ------------------
  ------------------
  |  Branch (437:13): [True: 3.54M, False: 12.8k]
  ------------------
  438|  3.55M|		error_2 = (i > -3) ? local_abs64(data[i] - 2 * data[i-1] + data[i-2]) : 0;
  ------------------
  |  |   53|  3.52M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (53:36): [True: 666k, False: 2.86M]
  |  |  ------------------
  ------------------
  |  Branch (438:13): [True: 3.52M, False: 25.7k]
  ------------------
  439|  3.55M|		error_3 = (i > -2) ? local_abs64(data[i] - 3 * data[i-1] + 3 * data[i-2] - data[i-3]) : 0;
  ------------------
  |  |   53|  3.51M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (53:36): [True: 639k, False: 2.87M]
  |  |  ------------------
  ------------------
  |  Branch (439:13): [True: 3.51M, False: 38.5k]
  ------------------
  440|  3.55M|		error_4 = (i > -1) ? local_abs64(data[i] - 4 * data[i-1] + 6 * data[i-2] - 4 * data[i-3] + data[i-4]) : 0;
  ------------------
  |  |   53|  3.50M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (53:36): [True: 613k, False: 2.88M]
  |  |  ------------------
  ------------------
  |  Branch (440:13): [True: 3.50M, False: 51.4k]
  ------------------
  441|       |
  442|  3.55M|		total_error_0 += error_0;
  443|  3.55M|		total_error_1 += error_1;
  444|  3.55M|		total_error_2 += error_2;
  445|  3.55M|		total_error_3 += error_3;
  446|  3.55M|		total_error_4 += error_4;
  447|       |
  448|       |		/* residual must not be INT32_MIN because abs(INT32_MIN) is undefined */
  449|  3.55M|		if(error_0 > INT32_MAX)
  ------------------
  |  Branch (449:6): [True: 79.3k, False: 3.47M]
  ------------------
  450|  79.3k|			order_0_is_valid = false;
  451|  3.55M|		if(error_1 > INT32_MAX)
  ------------------
  |  Branch (451:6): [True: 89.5k, False: 3.46M]
  ------------------
  452|  89.5k|			order_1_is_valid = false;
  453|  3.55M|		if(error_2 > INT32_MAX)
  ------------------
  |  Branch (453:6): [True: 359k, False: 3.19M]
  ------------------
  454|   359k|			order_2_is_valid = false;
  455|  3.55M|		if(error_3 > INT32_MAX)
  ------------------
  |  Branch (455:6): [True: 586k, False: 2.96M]
  ------------------
  456|   586k|			order_3_is_valid = false;
  457|  3.55M|		if(error_4 > INT32_MAX)
  ------------------
  |  Branch (457:6): [True: 769k, False: 2.78M]
  ------------------
  458|   769k|			order_4_is_valid = false;
  459|  3.55M|	}
  460|       |
  461|  12.8k|	CHECK_ORDER_IS_VALID(0);
  ------------------
  |  |  356|  12.8k|#define CHECK_ORDER_IS_VALID(macro_order)		\
  |  |  357|  25.7k|if(order_##macro_order##_is_valid && total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (357:4): [True: 9.29k, False: 3.55k]
  |  |  |  Branch (357:38): [True: 9.29k, False: 0]
  |  |  ------------------
  |  |  358|  9.29k|	order = macro_order;				\
  |  |  359|  9.29k|	smallest_error = total_error_##macro_order ;	\
  |  |  360|  9.29k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (360:52): [True: 9.29k, False: 0]
  |  |  ------------------
  |  |  361|  9.29k|}							\
  |  |  362|  12.8k|else							\
  |  |  363|  12.8k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  462|  12.8k|	CHECK_ORDER_IS_VALID(1);
  ------------------
  |  |  356|  12.8k|#define CHECK_ORDER_IS_VALID(macro_order)		\
  |  |  357|  25.7k|if(order_##macro_order##_is_valid && total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (357:4): [True: 9.07k, False: 3.78k]
  |  |  |  Branch (357:38): [True: 4.16k, False: 4.91k]
  |  |  ------------------
  |  |  358|  4.16k|	order = macro_order;				\
  |  |  359|  4.16k|	smallest_error = total_error_##macro_order ;	\
  |  |  360|  4.16k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (360:52): [True: 3.27k, False: 890]
  |  |  ------------------
  |  |  361|  4.16k|}							\
  |  |  362|  12.8k|else							\
  |  |  363|  12.8k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  463|  12.8k|	CHECK_ORDER_IS_VALID(2);
  ------------------
  |  |  356|  12.8k|#define CHECK_ORDER_IS_VALID(macro_order)		\
  |  |  357|  25.7k|if(order_##macro_order##_is_valid && total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (357:4): [True: 6.55k, False: 6.30k]
  |  |  |  Branch (357:38): [True: 1.60k, False: 4.94k]
  |  |  ------------------
  |  |  358|  1.60k|	order = macro_order;				\
  |  |  359|  1.60k|	smallest_error = total_error_##macro_order ;	\
  |  |  360|  1.60k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (360:52): [True: 1.60k, False: 0]
  |  |  ------------------
  |  |  361|  1.60k|}							\
  |  |  362|  12.8k|else							\
  |  |  363|  12.8k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  464|  12.8k|	CHECK_ORDER_IS_VALID(3);
  ------------------
  |  |  356|  12.8k|#define CHECK_ORDER_IS_VALID(macro_order)		\
  |  |  357|  25.7k|if(order_##macro_order##_is_valid && total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (357:4): [True: 4.43k, False: 8.42k]
  |  |  |  Branch (357:38): [True: 1.33k, False: 3.09k]
  |  |  ------------------
  |  |  358|  1.33k|	order = macro_order;				\
  |  |  359|  1.33k|	smallest_error = total_error_##macro_order ;	\
  |  |  360|  1.33k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (360:52): [True: 1.33k, False: 1]
  |  |  ------------------
  |  |  361|  1.33k|}							\
  |  |  362|  12.8k|else							\
  |  |  363|  12.8k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  465|  12.8k|	CHECK_ORDER_IS_VALID(4);
  ------------------
  |  |  356|  12.8k|#define CHECK_ORDER_IS_VALID(macro_order)		\
  |  |  357|  25.7k|if(order_##macro_order##_is_valid && total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (357:4): [True: 4.01k, False: 8.84k]
  |  |  |  Branch (357:38): [True: 1.13k, False: 2.87k]
  |  |  ------------------
  |  |  358|  1.13k|	order = macro_order;				\
  |  |  359|  1.13k|	smallest_error = total_error_##macro_order ;	\
  |  |  360|  1.13k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (360:52): [True: 1.13k, False: 1]
  |  |  ------------------
  |  |  361|  1.13k|}							\
  |  |  362|  12.8k|else							\
  |  |  363|  12.8k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  466|       |
  467|  12.8k|	return order;
  468|  12.8k|}
FLAC__fixed_compute_residual:
  471|   464k|{
  472|   464k|	const int idata_len = (int)data_len;
  473|   464k|	int i;
  474|       |
  475|   464k|	switch(order) {
  476|   214k|		case 0:
  ------------------
  |  Branch (476:3): [True: 214k, False: 249k]
  ------------------
  477|   214k|			FLAC__ASSERT(sizeof(residual[0]) == sizeof(data[0]));
  ------------------
  |  |   38|   214k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 214k]
  |  |  ------------------
  ------------------
  478|   214k|			memcpy(residual, data, sizeof(residual[0])*data_len);
  479|   214k|			break;
  480|  71.7k|		case 1:
  ------------------
  |  Branch (480:3): [True: 71.7k, False: 392k]
  ------------------
  481|  7.36M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (481:15): [True: 7.29M, False: 71.7k]
  ------------------
  482|  7.29M|				residual[i] = data[i] - data[i-1];
  483|  71.7k|			break;
  484|  61.3k|		case 2:
  ------------------
  |  Branch (484:3): [True: 61.3k, False: 402k]
  ------------------
  485|  5.10M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (485:15): [True: 5.04M, False: 61.3k]
  ------------------
  486|  5.04M|				residual[i] = data[i] - 2*data[i-1] + data[i-2];
  487|  61.3k|			break;
  488|  59.5k|		case 3:
  ------------------
  |  Branch (488:3): [True: 59.5k, False: 404k]
  ------------------
  489|  5.01M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (489:15): [True: 4.95M, False: 59.5k]
  ------------------
  490|  4.95M|				residual[i] = data[i] - 3*data[i-1] + 3*data[i-2] - data[i-3];
  491|  59.5k|			break;
  492|  57.0k|		case 4:
  ------------------
  |  Branch (492:3): [True: 57.0k, False: 407k]
  ------------------
  493|  4.91M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (493:15): [True: 4.85M, False: 57.0k]
  ------------------
  494|  4.85M|				residual[i] = data[i] - 4*data[i-1] + 6*data[i-2] - 4*data[i-3] + data[i-4];
  495|  57.0k|			break;
  496|      0|		default:
  ------------------
  |  Branch (496:3): [True: 0, False: 464k]
  ------------------
  497|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  498|   464k|	}
  499|   464k|}
FLAC__fixed_compute_residual_wide:
  502|   305k|{
  503|   305k|	const int idata_len = (int)data_len;
  504|   305k|	int i;
  505|       |
  506|   305k|	switch(order) {
  507|      0|		case 0:
  ------------------
  |  Branch (507:3): [True: 0, False: 305k]
  ------------------
  508|      0|			FLAC__ASSERT(sizeof(residual[0]) == sizeof(data[0]));
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 0]
  |  |  ------------------
  ------------------
  509|      0|			memcpy(residual, data, sizeof(residual[0])*data_len);
  510|      0|			break;
  511|   122k|		case 1:
  ------------------
  |  Branch (511:3): [True: 122k, False: 182k]
  ------------------
  512|  8.46M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (512:15): [True: 8.34M, False: 122k]
  ------------------
  513|  8.34M|				residual[i] = (FLAC__int64)data[i] - data[i-1];
  514|   122k|			break;
  515|  72.0k|		case 2:
  ------------------
  |  Branch (515:3): [True: 72.0k, False: 233k]
  ------------------
  516|  2.50M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (516:15): [True: 2.43M, False: 72.0k]
  ------------------
  517|  2.43M|				residual[i] = (FLAC__int64)data[i] - 2*(FLAC__int64)data[i-1] + data[i-2];
  518|  72.0k|			break;
  519|  60.8k|		case 3:
  ------------------
  |  Branch (519:3): [True: 60.8k, False: 244k]
  ------------------
  520|  1.93M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (520:15): [True: 1.87M, False: 60.8k]
  ------------------
  521|  1.87M|				residual[i] = (FLAC__int64)data[i] - 3*(FLAC__int64)data[i-1] + 3*(FLAC__int64)data[i-2] - data[i-3];
  522|  60.8k|			break;
  523|  51.3k|		case 4:
  ------------------
  |  Branch (523:3): [True: 51.3k, False: 254k]
  ------------------
  524|  1.17M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (524:15): [True: 1.12M, False: 51.3k]
  ------------------
  525|  1.12M|				residual[i] = (FLAC__int64)data[i] - 4*(FLAC__int64)data[i-1] + 6*(FLAC__int64)data[i-2] - 4*(FLAC__int64)data[i-3] + data[i-4];
  526|  51.3k|			break;
  527|      0|		default:
  ------------------
  |  Branch (527:3): [True: 0, False: 305k]
  ------------------
  528|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  529|   305k|	}
  530|   305k|}
FLAC__fixed_compute_residual_wide_33bit:
  533|  14.0k|{
  534|  14.0k|	const int idata_len = (int)data_len;
  535|  14.0k|	int i;
  536|       |
  537|  14.0k|	switch(order) {
  538|  7.37k|		case 0:
  ------------------
  |  Branch (538:3): [True: 7.37k, False: 6.63k]
  ------------------
  539|   535k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (539:15): [True: 528k, False: 7.37k]
  ------------------
  540|   528k|				residual[i] = data[i];
  541|  7.37k|			break;
  542|  2.79k|		case 1:
  ------------------
  |  Branch (542:3): [True: 2.79k, False: 11.2k]
  ------------------
  543|   393k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (543:15): [True: 390k, False: 2.79k]
  ------------------
  544|   390k|				residual[i] = data[i] - data[i-1];
  545|  2.79k|			break;
  546|  1.51k|		case 2:
  ------------------
  |  Branch (546:3): [True: 1.51k, False: 12.5k]
  ------------------
  547|   201k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (547:15): [True: 199k, False: 1.51k]
  ------------------
  548|   199k|				residual[i] = data[i] - 2*data[i-1] + data[i-2];
  549|  1.51k|			break;
  550|  1.19k|		case 3:
  ------------------
  |  Branch (550:3): [True: 1.19k, False: 12.8k]
  ------------------
  551|  40.1k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (551:15): [True: 38.9k, False: 1.19k]
  ------------------
  552|  38.9k|				residual[i] = data[i] - 3*data[i-1] + 3*data[i-2] - data[i-3];
  553|  1.19k|			break;
  554|  1.13k|		case 4:
  ------------------
  |  Branch (554:3): [True: 1.13k, False: 12.8k]
  ------------------
  555|  20.7k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (555:15): [True: 19.6k, False: 1.13k]
  ------------------
  556|  19.6k|				residual[i] = data[i] - 4*data[i-1] + 6*data[i-2] - 4*data[i-3] + data[i-4];
  557|  1.13k|			break;
  558|      0|		default:
  ------------------
  |  Branch (558:3): [True: 0, False: 14.0k]
  ------------------
  559|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  560|  14.0k|	}
  561|  14.0k|}
FLAC__fixed_restore_signal:
  572|  74.1k|{
  573|  74.1k|	int i, idata_len = (int)data_len;
  574|       |
  575|  74.1k|	switch(order) {
  576|  48.0k|		case 0:
  ------------------
  |  Branch (576:3): [True: 48.0k, False: 26.1k]
  ------------------
  577|  48.0k|			FLAC__ASSERT(sizeof(residual[0]) == sizeof(data[0]));
  ------------------
  |  |   38|  48.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 48.0k]
  |  |  ------------------
  ------------------
  578|  48.0k|			memcpy(data, residual, sizeof(residual[0])*data_len);
  579|  48.0k|			break;
  580|  21.7k|		case 1:
  ------------------
  |  Branch (580:3): [True: 21.7k, False: 52.4k]
  ------------------
  581|  1.28M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (581:15): [True: 1.26M, False: 21.7k]
  ------------------
  582|  1.26M|				data[i] = residual[i] + data[i-1];
  583|  21.7k|			break;
  584|  1.79k|		case 2:
  ------------------
  |  Branch (584:3): [True: 1.79k, False: 72.3k]
  ------------------
  585|  44.7k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (585:15): [True: 42.9k, False: 1.79k]
  ------------------
  586|  42.9k|				data[i] = residual[i] + 2*data[i-1] - data[i-2];
  587|  1.79k|			break;
  588|    404|		case 3:
  ------------------
  |  Branch (588:3): [True: 404, False: 73.7k]
  ------------------
  589|  20.8k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (589:15): [True: 20.4k, False: 404]
  ------------------
  590|  20.4k|				data[i] = residual[i] + 3*data[i-1] - 3*data[i-2] + data[i-3];
  591|    404|			break;
  592|  2.14k|		case 4:
  ------------------
  |  Branch (592:3): [True: 2.14k, False: 72.0k]
  ------------------
  593|  38.2k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (593:15): [True: 36.1k, False: 2.14k]
  ------------------
  594|  36.1k|				data[i] = residual[i] + 4*data[i-1] - 6*data[i-2] + 4*data[i-3] - data[i-4];
  595|  2.14k|			break;
  596|      0|		default:
  ------------------
  |  Branch (596:3): [True: 0, False: 74.1k]
  ------------------
  597|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  598|  74.1k|	}
  599|  74.1k|}
FLAC__fixed_restore_signal_wide:
  602|  36.8k|{
  603|  36.8k|	int i, idata_len = (int)data_len;
  604|       |
  605|  36.8k|	switch(order) {
  606|      0|		case 0:
  ------------------
  |  Branch (606:3): [True: 0, False: 36.8k]
  ------------------
  607|      0|			FLAC__ASSERT(sizeof(residual[0]) == sizeof(data[0]));
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 0]
  |  |  ------------------
  ------------------
  608|      0|			memcpy(data, residual, sizeof(residual[0])*data_len);
  609|      0|			break;
  610|  35.2k|		case 1:
  ------------------
  |  Branch (610:3): [True: 35.2k, False: 1.53k]
  ------------------
  611|  4.22M|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (611:15): [True: 4.19M, False: 35.2k]
  ------------------
  612|  4.19M|				data[i] = (FLAC__int64)residual[i] + (FLAC__int64)data[i-1];
  613|  35.2k|			break;
  614|    656|		case 2:
  ------------------
  |  Branch (614:3): [True: 656, False: 36.1k]
  ------------------
  615|  39.8k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (615:15): [True: 39.1k, False: 656]
  ------------------
  616|  39.1k|				data[i] = (FLAC__int64)residual[i] + 2*(FLAC__int64)data[i-1] - (FLAC__int64)data[i-2];
  617|    656|			break;
  618|    508|		case 3:
  ------------------
  |  Branch (618:3): [True: 508, False: 36.2k]
  ------------------
  619|   479k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (619:15): [True: 479k, False: 508]
  ------------------
  620|   479k|				data[i] = (FLAC__int64)residual[i] + 3*(FLAC__int64)data[i-1] - 3*(FLAC__int64)data[i-2] + (FLAC__int64)data[i-3];
  621|    508|			break;
  622|    375|		case 4:
  ------------------
  |  Branch (622:3): [True: 375, False: 36.4k]
  ------------------
  623|  85.0k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (623:15): [True: 84.7k, False: 375]
  ------------------
  624|  84.7k|				data[i] = (FLAC__int64)residual[i] + 4*(FLAC__int64)data[i-1] - 6*(FLAC__int64)data[i-2] + 4*(FLAC__int64)data[i-3] - (FLAC__int64)data[i-4];
  625|    375|			break;
  626|      0|		default:
  ------------------
  |  Branch (626:3): [True: 0, False: 36.8k]
  ------------------
  627|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  628|  36.8k|	}
  629|  36.8k|}
FLAC__fixed_restore_signal_wide_33bit:
  640|  5.38k|{
  641|  5.38k|	int i, idata_len = (int)data_len;
  642|       |
  643|  5.38k|	switch(order) {
  644|  3.46k|		case 0:
  ------------------
  |  Branch (644:3): [True: 3.46k, False: 1.91k]
  ------------------
  645|   159k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (645:15): [True: 155k, False: 3.46k]
  ------------------
  646|   155k|				data[i] = residual[i];
  647|  3.46k|			break;
  648|  1.02k|		case 1:
  ------------------
  |  Branch (648:3): [True: 1.02k, False: 4.35k]
  ------------------
  649|  61.4k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (649:15): [True: 60.4k, False: 1.02k]
  ------------------
  650|  60.4k|				data[i] = (FLAC__int64)residual[i] + data[i-1];
  651|  1.02k|			break;
  652|    575|		case 2:
  ------------------
  |  Branch (652:3): [True: 575, False: 4.80k]
  ------------------
  653|   106k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (653:15): [True: 105k, False: 575]
  ------------------
  654|   105k|				data[i] = (FLAC__int64)residual[i] + 2*data[i-1] - data[i-2];
  655|    575|			break;
  656|    135|		case 3:
  ------------------
  |  Branch (656:3): [True: 135, False: 5.24k]
  ------------------
  657|  24.5k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (657:15): [True: 24.3k, False: 135]
  ------------------
  658|  24.3k|				data[i] = (FLAC__int64)residual[i] + 3*data[i-1] - 3*data[i-2] + data[i-3];
  659|    135|			break;
  660|    180|		case 4:
  ------------------
  |  Branch (660:3): [True: 180, False: 5.20k]
  ------------------
  661|  9.31k|			for(i = 0; i < idata_len; i++)
  ------------------
  |  Branch (661:15): [True: 9.13k, False: 180]
  ------------------
  662|  9.13k|				data[i] = (FLAC__int64)residual[i] + 4*data[i-1] - 6*data[i-2] + 4*data[i-3] - data[i-4];
  663|    180|			break;
  664|      0|		default:
  ------------------
  |  Branch (664:3): [True: 0, False: 5.38k]
  ------------------
  665|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  666|  5.38k|	}
  667|  5.38k|}

FLAC__fixed_compute_best_predictor_wide_intrin_avx2:
   58|  30.6k|{
   59|  30.6k|	FLAC__uint64 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
   60|  30.6k|	FLAC__int32 i, data_len_int;
   61|  30.6k|	uint32_t order;
   62|  30.6k|	__m256i total_err0, total_err1, total_err2, total_err3, total_err4;
   63|  30.6k|	__m256i prev_err0,  prev_err1,  prev_err2,  prev_err3;
   64|  30.6k|	__m256i tempA, tempB, bitmask;
   65|  30.6k|	FLAC__int64 data_scalar[4];
   66|  30.6k|	FLAC__int64 prev_err0_scalar[4];
   67|  30.6k|	FLAC__int64 prev_err1_scalar[4];
   68|  30.6k|	FLAC__int64 prev_err2_scalar[4];
   69|  30.6k|	FLAC__int64 prev_err3_scalar[4];
   70|  30.6k|	total_err0 = _mm256_setzero_si256();
   71|  30.6k|	total_err1 = _mm256_setzero_si256();
   72|  30.6k|	total_err2 = _mm256_setzero_si256();
   73|  30.6k|	total_err3 = _mm256_setzero_si256();
   74|  30.6k|	total_err4 = _mm256_setzero_si256();
   75|  30.6k|	data_len_int = data_len;
   76|       |
   77|   153k|	for(i = 0; i < 4; i++){
  ------------------
  |  Branch (77:13): [True: 122k, False: 30.6k]
  ------------------
   78|   122k|		prev_err0_scalar[i] = data[-1+i*(data_len_int/4)];
   79|   122k|		prev_err1_scalar[i] = data[-1+i*(data_len_int/4)] - data[-2+i*(data_len_int/4)];
   80|   122k|		prev_err2_scalar[i] = prev_err1_scalar[i] - (data[-2+i*(data_len_int/4)] - data[-3+i*(data_len_int/4)]);
   81|   122k|		prev_err3_scalar[i] = prev_err2_scalar[i] - (data[-2+i*(data_len_int/4)] - 2*data[-3+i*(data_len_int/4)] + data[-4+i*(data_len_int/4)]);
   82|   122k|	}
   83|  30.6k|	prev_err0 = _mm256_loadu_si256((const __m256i*)(void*)prev_err0_scalar);
   84|  30.6k|	prev_err1 = _mm256_loadu_si256((const __m256i*)(void*)prev_err1_scalar);
   85|  30.6k|	prev_err2 = _mm256_loadu_si256((const __m256i*)(void*)prev_err2_scalar);
   86|  30.6k|	prev_err3 = _mm256_loadu_si256((const __m256i*)(void*)prev_err3_scalar);
   87|  1.31M|	for(i = 0; i < data_len_int / 4; i++){
  ------------------
  |  Branch (87:13): [True: 1.28M, False: 30.6k]
  ------------------
   88|  1.28M|		data_scalar[0] = data[i];
   89|  1.28M|		data_scalar[1] = data[i+data_len/4];
   90|  1.28M|		data_scalar[2] = data[i+2*data_len/4];
   91|  1.28M|		data_scalar[3] = data[i+3*data_len/4];
   92|  1.28M|		tempA = _mm256_loadu_si256((const __m256i*)(void*)data_scalar);
   93|       |		/* Next three intrinsics calculate tempB as abs of tempA */
   94|  1.28M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempA);
   95|  1.28M|		tempB = _mm256_xor_si256(tempA, bitmask);
   96|  1.28M|		tempB = _mm256_sub_epi64(tempB, bitmask);
   97|  1.28M|		total_err0 = _mm256_add_epi64(total_err0,tempB);
   98|  1.28M|		tempB = _mm256_sub_epi64(tempA,prev_err0);
   99|  1.28M|		prev_err0 = tempA;
  100|       |		/* Next three intrinsics calculate tempA as abs of tempB */
  101|  1.28M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempB);
  102|  1.28M|		tempA = _mm256_xor_si256(tempB, bitmask);
  103|  1.28M|		tempA = _mm256_sub_epi64(tempA, bitmask);
  104|  1.28M|		total_err1 = _mm256_add_epi64(total_err1,tempA);
  105|  1.28M|		tempA = _mm256_sub_epi64(tempB,prev_err1);
  106|  1.28M|		prev_err1 = tempB;
  107|       |		/* Next three intrinsics calculate tempB as abs of tempA */
  108|  1.28M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempA);
  109|  1.28M|		tempB = _mm256_xor_si256(tempA, bitmask);
  110|  1.28M|		tempB = _mm256_sub_epi64(tempB, bitmask);
  111|  1.28M|		total_err2 = _mm256_add_epi64(total_err2,tempB);
  112|  1.28M|		tempB = _mm256_sub_epi64(tempA,prev_err2);
  113|  1.28M|		prev_err2 = tempA;
  114|       |		/* Next three intrinsics calculate tempA as abs of tempB */
  115|  1.28M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempB);
  116|  1.28M|		tempA = _mm256_xor_si256(tempB, bitmask);
  117|  1.28M|		tempA = _mm256_sub_epi64(tempA, bitmask);
  118|  1.28M|		total_err3 = _mm256_add_epi64(total_err3,tempA);
  119|  1.28M|		tempA = _mm256_sub_epi64(tempB,prev_err3);
  120|  1.28M|		prev_err3 = tempB;
  121|       |		/* Next three intrinsics calculate tempB as abs of tempA */
  122|  1.28M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempA);
  123|  1.28M|		tempB = _mm256_xor_si256(tempA, bitmask);
  124|  1.28M|		tempB = _mm256_sub_epi64(tempB, bitmask);
  125|  1.28M|		total_err4 = _mm256_add_epi64(total_err4,tempB);
  126|  1.28M|	}
  127|  30.6k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err0);
  128|  30.6k|	total_error_0 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  129|  30.6k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err1);
  130|  30.6k|	total_error_1 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  131|  30.6k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err2);
  132|  30.6k|	total_error_2 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  133|  30.6k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err3);
  134|  30.6k|	total_error_3 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  135|  30.6k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err4);
  136|  30.6k|	total_error_4 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  137|       |
  138|       |	/* Ignore the remainder, we're ignore the first few samples too */
  139|       |
  140|       |	/* prefer lower order */
  141|  30.6k|	if(total_error_0 <= flac_min(flac_min(flac_min(total_error_1, total_error_2), total_error_3), total_error_4))
  ------------------
  |  |   56|  30.6k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (141:5): [True: 9.43k, False: 21.1k]
  |  Branch (141:22): [True: 23.4k, False: 7.19k]
  |  Branch (141:22): [True: 23.2k, False: 1.21k]
  |  Branch (141:22): [True: 24.4k, False: 6.14k]
  |  Branch (141:22): [True: 23.3k, False: 2.21k]
  |  Branch (141:22): [True: 23.2k, False: 1.16k]
  |  Branch (141:22): [True: 24.4k, False: 1.19k]
  |  Branch (141:22): [True: 25.6k, False: 5.00k]
  ------------------
  142|  9.43k|		order = 0;
  143|  21.1k|	else if(total_error_1 <= flac_min(flac_min(total_error_2, total_error_3), total_error_4))
  ------------------
  |  |   56|  21.1k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (143:10): [True: 19.7k, False: 1.47k]
  |  Branch (143:27): [True: 16.1k, False: 5.03k]
  |  Branch (143:27): [True: 16.0k, False: 1.67k]
  |  Branch (143:27): [True: 17.7k, False: 3.41k]
  ------------------
  144|  19.7k|		order = 1;
  145|  1.47k|	else if(total_error_2 <= flac_min(total_error_3, total_error_4))
  ------------------
  |  |   56|  1.47k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (145:10): [True: 618, False: 858]
  |  Branch (145:27): [True: 1.32k, False: 154]
  ------------------
  146|    618|		order = 2;
  147|    858|	else if(total_error_3 <= total_error_4)
  ------------------
  |  Branch (147:10): [True: 705, False: 153]
  ------------------
  148|    705|		order = 3;
  149|    153|	else
  150|    153|		order = 4;
  151|       |
  152|       |	/* Estimate the expected number of bits per residual signal sample. */
  153|       |	/* 'total_error*' is linearly related to the variance of the residual */
  154|       |	/* signal, so we use it directly to compute E(|x|) */
  155|  30.6k|	FLAC__ASSERT(data_len > 0 || total_error_0 == 0);
  ------------------
  |  |   38|  30.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 30.6k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  156|  30.6k|	FLAC__ASSERT(data_len > 0 || total_error_1 == 0);
  ------------------
  |  |   38|  30.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 30.6k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  157|  30.6k|	FLAC__ASSERT(data_len > 0 || total_error_2 == 0);
  ------------------
  |  |   38|  30.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 30.6k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  158|  30.6k|	FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
  ------------------
  |  |   38|  30.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 30.6k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  159|  30.6k|	FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
  ------------------
  |  |   38|  30.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 30.6k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  160|       |
  161|  30.6k|	residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (161:40): [True: 28.6k, False: 1.99k]
  ------------------
  162|  30.6k|	residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (162:40): [True: 24.8k, False: 5.77k]
  ------------------
  163|  30.6k|	residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (163:40): [True: 25.3k, False: 5.23k]
  ------------------
  164|  30.6k|	residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (164:40): [True: 25.7k, False: 4.88k]
  ------------------
  165|  30.6k|	residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (165:40): [True: 26.1k, False: 4.48k]
  ------------------
  166|       |
  167|  30.6k|	return order;
  168|  30.6k|}
FLAC__fixed_compute_best_predictor_limit_residual_intrin_avx2:
  188|   288k|{
  189|   288k|	FLAC__uint64 total_error_0 = 0, total_error_1 = 0, total_error_2 = 0, total_error_3 = 0, total_error_4 = 0, smallest_error = UINT64_MAX;
  190|   288k|	FLAC__uint64 shadow_error_0 = 0, shadow_error_1 = 0, shadow_error_2 = 0, shadow_error_3 = 0, shadow_error_4 = 0;
  191|   288k|	FLAC__uint64 error_0, error_1, error_2, error_3, error_4;
  192|   288k|	FLAC__int32 i, data_len_int;
  193|   288k|	uint32_t order = 0;
  194|   288k|	__m256i total_err0, total_err1, total_err2, total_err3, total_err4;
  195|   288k|	__m256i shadow_err0, shadow_err1, shadow_err2, shadow_err3, shadow_err4;
  196|   288k|	__m256i prev_err0,  prev_err1,  prev_err2,  prev_err3;
  197|   288k|	__m256i tempA, tempB, bitmask;
  198|   288k|	FLAC__int64 data_scalar[4];
  199|   288k|	FLAC__int64 prev_err0_scalar[4];
  200|   288k|	FLAC__int64 prev_err1_scalar[4];
  201|   288k|	FLAC__int64 prev_err2_scalar[4];
  202|   288k|	FLAC__int64 prev_err3_scalar[4];
  203|   288k|	total_err0 = _mm256_setzero_si256();
  204|   288k|	total_err1 = _mm256_setzero_si256();
  205|   288k|	total_err2 = _mm256_setzero_si256();
  206|   288k|	total_err3 = _mm256_setzero_si256();
  207|   288k|	total_err4 = _mm256_setzero_si256();
  208|   288k|	shadow_err0 = _mm256_setzero_si256();
  209|   288k|	shadow_err1 = _mm256_setzero_si256();
  210|   288k|	shadow_err2 = _mm256_setzero_si256();
  211|   288k|	shadow_err3 = _mm256_setzero_si256();
  212|   288k|	shadow_err4 = _mm256_setzero_si256();
  213|   288k|	data_len_int = data_len;
  214|       |
  215|       |	/* First take care of preceding samples */
  216|  1.44M|	for(i = -4; i < 0; i++) {
  ------------------
  |  Branch (216:14): [True: 1.15M, False: 288k]
  ------------------
  217|  1.15M|		error_0 = local_abs64((FLAC__int64)data[i]);
  ------------------
  |  |  173|  1.15M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 578k, False: 576k]
  |  |  ------------------
  ------------------
  218|  1.15M|		error_1 = (i > -4) ? local_abs64((FLAC__int64)data[i] - data[i-1]) : 0 ;
  ------------------
  |  |  173|   865k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 147k, False: 718k]
  |  |  ------------------
  ------------------
  |  Branch (218:13): [True: 865k, False: 288k]
  ------------------
  219|  1.15M|		error_2 = (i > -3) ? local_abs64((FLAC__int64)data[i] - 2 * (FLAC__int64)data[i-1] + data[i-2]) : 0;
  ------------------
  |  |  173|   577k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 110k, False: 466k]
  |  |  ------------------
  ------------------
  |  Branch (219:13): [True: 577k, False: 577k]
  ------------------
  220|  1.15M|		error_3 = (i > -2) ? local_abs64((FLAC__int64)data[i] - 3 * (FLAC__int64)data[i-1] + 3 * (FLAC__int64)data[i-2] - data[i-3]) : 0;
  ------------------
  |  |  173|   288k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 56.9k, False: 231k]
  |  |  ------------------
  ------------------
  |  Branch (220:13): [True: 288k, False: 865k]
  ------------------
  221|       |
  222|  1.15M|		total_error_0 += error_0;
  223|  1.15M|		total_error_1 += error_1;
  224|  1.15M|		total_error_2 += error_2;
  225|  1.15M|		total_error_3 += error_3;
  226|       |
  227|  1.15M|		shadow_error_0 |= error_0;
  228|  1.15M|		shadow_error_1 |= error_1;
  229|  1.15M|		shadow_error_2 |= error_2;
  230|  1.15M|		shadow_error_3 |= error_3;
  231|  1.15M|	}
  232|       |
  233|  1.44M|	for(i = 0; i < 4; i++){
  ------------------
  |  Branch (233:13): [True: 1.15M, False: 288k]
  ------------------
  234|  1.15M|		prev_err0_scalar[i] = data[-1+i*(data_len_int/4)];
  235|  1.15M|		prev_err1_scalar[i] = (FLAC__int64)(data[-1+i*(data_len_int/4)]) - data[-2+i*(data_len_int/4)];
  236|  1.15M|		prev_err2_scalar[i] = prev_err1_scalar[i] - ((FLAC__int64)(data[-2+i*(data_len_int/4)]) - data[-3+i*(data_len_int/4)]);
  237|  1.15M|		prev_err3_scalar[i] = prev_err2_scalar[i] - ((FLAC__int64)(data[-2+i*(data_len_int/4)]) - 2*(FLAC__int64)(data[-3+i*(data_len_int/4)]) + data[-4+i*(data_len_int/4)]);
  238|  1.15M|	}
  239|   288k|	prev_err0 = _mm256_loadu_si256((const __m256i*)(void*)prev_err0_scalar);
  240|   288k|	prev_err1 = _mm256_loadu_si256((const __m256i*)(void*)prev_err1_scalar);
  241|   288k|	prev_err2 = _mm256_loadu_si256((const __m256i*)(void*)prev_err2_scalar);
  242|   288k|	prev_err3 = _mm256_loadu_si256((const __m256i*)(void*)prev_err3_scalar);
  243|  6.10M|	for(i = 0; i < data_len_int / 4; i++){
  ------------------
  |  Branch (243:13): [True: 5.81M, False: 288k]
  ------------------
  244|  5.81M|		data_scalar[0] = data[i];
  245|  5.81M|		data_scalar[1] = data[i+data_len/4];
  246|  5.81M|		data_scalar[2] = data[i+2*data_len/4];
  247|  5.81M|		data_scalar[3] = data[i+3*data_len/4];
  248|  5.81M|		tempA = _mm256_loadu_si256((const __m256i*)(void*)data_scalar);
  249|       |		/* Next three intrinsics calculate tempB as abs of tempA */
  250|  5.81M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempA);
  251|  5.81M|		tempB = _mm256_xor_si256(tempA, bitmask);
  252|  5.81M|		tempB = _mm256_sub_epi64(tempB, bitmask);
  253|  5.81M|		total_err0 = _mm256_add_epi64(total_err0,tempB);
  254|  5.81M|		shadow_err0 = _mm256_or_si256(shadow_err0,tempB);
  255|  5.81M|		tempB = _mm256_sub_epi64(tempA,prev_err0);
  256|  5.81M|		prev_err0 = tempA;
  257|       |		/* Next three intrinsics calculate tempA as abs of tempB */
  258|  5.81M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempB);
  259|  5.81M|		tempA = _mm256_xor_si256(tempB, bitmask);
  260|  5.81M|		tempA = _mm256_sub_epi64(tempA, bitmask);
  261|  5.81M|		total_err1 = _mm256_add_epi64(total_err1,tempA);
  262|  5.81M|		shadow_err1 = _mm256_or_si256(shadow_err1,tempA);
  263|  5.81M|		tempA = _mm256_sub_epi64(tempB,prev_err1);
  264|  5.81M|		prev_err1 = tempB;
  265|       |		/* Next three intrinsics calculate tempB as abs of tempA */
  266|  5.81M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempA);
  267|  5.81M|		tempB = _mm256_xor_si256(tempA, bitmask);
  268|  5.81M|		tempB = _mm256_sub_epi64(tempB, bitmask);
  269|  5.81M|		total_err2 = _mm256_add_epi64(total_err2,tempB);
  270|  5.81M|		shadow_err2 = _mm256_or_si256(shadow_err2,tempB);
  271|  5.81M|		tempB = _mm256_sub_epi64(tempA,prev_err2);
  272|  5.81M|		prev_err2 = tempA;
  273|       |		/* Next three intrinsics calculate tempA as abs of tempB */
  274|  5.81M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempB);
  275|  5.81M|		tempA = _mm256_xor_si256(tempB, bitmask);
  276|  5.81M|		tempA = _mm256_sub_epi64(tempA, bitmask);
  277|  5.81M|		total_err3 = _mm256_add_epi64(total_err3,tempA);
  278|  5.81M|		shadow_err3 = _mm256_or_si256(shadow_err3,tempA);
  279|  5.81M|		tempA = _mm256_sub_epi64(tempB,prev_err3);
  280|  5.81M|		prev_err3 = tempB;
  281|       |		/* Next three intrinsics calculate tempB as abs of tempA */
  282|  5.81M|		bitmask = _mm256_cmpgt_epi64(_mm256_set1_epi64x(0), tempA);
  283|  5.81M|		tempB = _mm256_xor_si256(tempA, bitmask);
  284|  5.81M|		tempB = _mm256_sub_epi64(tempB, bitmask);
  285|  5.81M|		total_err4 = _mm256_add_epi64(total_err4,tempB);
  286|  5.81M|		shadow_err4 = _mm256_or_si256(shadow_err4,tempB);
  287|  5.81M|	}
  288|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err0);
  289|   288k|	total_error_0 += data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  290|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err1);
  291|   288k|	total_error_1 += data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  292|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err2);
  293|   288k|	total_error_2 += data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  294|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err3);
  295|   288k|	total_error_3 += data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  296|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,total_err4);
  297|   288k|	total_error_4 += data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  298|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,shadow_err0);
  299|   288k|	shadow_error_0 |= data_scalar[0] | data_scalar[1] | data_scalar[2] | data_scalar[3];
  300|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,shadow_err1);
  301|   288k|	shadow_error_1 |= data_scalar[0] | data_scalar[1] | data_scalar[2] | data_scalar[3];
  302|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,shadow_err2);
  303|   288k|	shadow_error_2 |= data_scalar[0] | data_scalar[1] | data_scalar[2] | data_scalar[3];
  304|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,shadow_err3);
  305|   288k|	shadow_error_3 |= data_scalar[0] | data_scalar[1] | data_scalar[2] | data_scalar[3];
  306|   288k|	_mm256_storeu_si256((__m256i*)(void*)data_scalar,shadow_err4);
  307|   288k|	shadow_error_4 |= data_scalar[0] | data_scalar[1] | data_scalar[2] | data_scalar[3];
  308|       |
  309|       |	/* Take care of remaining sample */
  310|   375k|	for(i = (data_len/4)*4; i < data_len_int; i++) {
  ------------------
  |  Branch (310:26): [True: 87.2k, False: 288k]
  ------------------
  311|  87.2k|		error_0 = local_abs64((FLAC__int64)data[i]);
  ------------------
  |  |  173|  87.2k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 31.1k, False: 56.1k]
  |  |  ------------------
  ------------------
  312|  87.2k|		error_1 = local_abs64((FLAC__int64)data[i] - data[i-1]);
  ------------------
  |  |  173|  87.2k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 22.1k, False: 65.1k]
  |  |  ------------------
  ------------------
  313|  87.2k|		error_2 = local_abs64((FLAC__int64)data[i] - 2 * (FLAC__int64)data[i-1] + data[i-2]);
  ------------------
  |  |  173|  87.2k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 26.2k, False: 61.0k]
  |  |  ------------------
  ------------------
  314|  87.2k|		error_3 = local_abs64((FLAC__int64)data[i] - 3 * (FLAC__int64)data[i-1] + 3 * (FLAC__int64)data[i-2] - data[i-3]);
  ------------------
  |  |  173|  87.2k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 29.0k, False: 58.2k]
  |  |  ------------------
  ------------------
  315|  87.2k|		error_4 = local_abs64((FLAC__int64)data[i] - 4 * (FLAC__int64)data[i-1] + 6 * (FLAC__int64)data[i-2] - 4 * (FLAC__int64)data[i-3] + data[i-4]);
  ------------------
  |  |  173|  87.2k|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (173:36): [True: 32.3k, False: 54.9k]
  |  |  ------------------
  ------------------
  316|       |
  317|  87.2k|		total_error_0 += error_0;
  318|  87.2k|		total_error_1 += error_1;
  319|  87.2k|		total_error_2 += error_2;
  320|  87.2k|		total_error_3 += error_3;
  321|  87.2k|		total_error_4 += error_4;
  322|       |
  323|  87.2k|		shadow_error_0 |= error_0;
  324|  87.2k|		shadow_error_1 |= error_1;
  325|  87.2k|		shadow_error_2 |= error_2;
  326|  87.2k|		shadow_error_3 |= error_3;
  327|  87.2k|		shadow_error_4 |= error_4;
  328|  87.2k|	}
  329|       |
  330|       |
  331|   288k|	CHECK_ORDER_IS_VALID(0);
  ------------------
  |  |  175|   288k|#define CHECK_ORDER_IS_VALID(macro_order)  \
  |  |  176|   288k|if(shadow_error_##macro_order <= INT32_MAX) { \
  |  |  ------------------
  |  |  |  Branch (176:4): [True: 287k, False: 1.23k]
  |  |  ------------------
  |  |  177|   287k|	if(total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (177:5): [True: 287k, False: 10]
  |  |  ------------------
  |  |  178|   287k|		order = macro_order; \
  |  |  179|   287k|		smallest_error = total_error_##macro_order ; \
  |  |  180|   287k|	} \
  |  |  181|   287k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (181:52): [True: 285k, False: 1.99k]
  |  |  ------------------
  |  |  182|   287k|} \
  |  |  183|   288k|else \
  |  |  184|   288k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  332|   288k|	CHECK_ORDER_IS_VALID(1);
  ------------------
  |  |  175|   288k|#define CHECK_ORDER_IS_VALID(macro_order)  \
  |  |  176|   288k|if(shadow_error_##macro_order <= INT32_MAX) { \
  |  |  ------------------
  |  |  |  Branch (176:4): [True: 230k, False: 58.3k]
  |  |  ------------------
  |  |  177|   230k|	if(total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (177:5): [True: 195k, False: 34.8k]
  |  |  ------------------
  |  |  178|   195k|		order = macro_order; \
  |  |  179|   195k|		smallest_error = total_error_##macro_order ; \
  |  |  180|   195k|	} \
  |  |  181|   230k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (181:52): [True: 90.9k, False: 139k]
  |  |  ------------------
  |  |  182|   230k|} \
  |  |  183|   288k|else \
  |  |  184|   288k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  333|   288k|	CHECK_ORDER_IS_VALID(2);
  ------------------
  |  |  175|   288k|#define CHECK_ORDER_IS_VALID(macro_order)  \
  |  |  176|   288k|if(shadow_error_##macro_order <= INT32_MAX) { \
  |  |  ------------------
  |  |  |  Branch (176:4): [True: 210k, False: 77.7k]
  |  |  ------------------
  |  |  177|   210k|	if(total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (177:5): [True: 1.82k, False: 209k]
  |  |  ------------------
  |  |  178|  1.82k|		order = macro_order; \
  |  |  179|  1.82k|		smallest_error = total_error_##macro_order ; \
  |  |  180|  1.82k|	} \
  |  |  181|   210k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (181:52): [True: 71.6k, False: 139k]
  |  |  ------------------
  |  |  182|   210k|} \
  |  |  183|   288k|else \
  |  |  184|   288k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  334|   288k|	CHECK_ORDER_IS_VALID(3);
  ------------------
  |  |  175|   288k|#define CHECK_ORDER_IS_VALID(macro_order)  \
  |  |  176|   288k|if(shadow_error_##macro_order <= INT32_MAX) { \
  |  |  ------------------
  |  |  |  Branch (176:4): [True: 195k, False: 92.8k]
  |  |  ------------------
  |  |  177|   195k|	if(total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (177:5): [True: 1.82k, False: 194k]
  |  |  ------------------
  |  |  178|  1.82k|		order = macro_order; \
  |  |  179|  1.82k|		smallest_error = total_error_##macro_order ; \
  |  |  180|  1.82k|	} \
  |  |  181|   195k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (181:52): [True: 56.4k, False: 139k]
  |  |  ------------------
  |  |  182|   195k|} \
  |  |  183|   288k|else \
  |  |  184|   288k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  335|   288k|	CHECK_ORDER_IS_VALID(4);
  ------------------
  |  |  175|   288k|#define CHECK_ORDER_IS_VALID(macro_order)  \
  |  |  176|   288k|if(shadow_error_##macro_order <= INT32_MAX) { \
  |  |  ------------------
  |  |  |  Branch (176:4): [True: 181k, False: 107k]
  |  |  ------------------
  |  |  177|   181k|	if(total_error_##macro_order < smallest_error) { \
  |  |  ------------------
  |  |  |  Branch (177:5): [True: 1.43k, False: 180k]
  |  |  ------------------
  |  |  178|  1.43k|		order = macro_order; \
  |  |  179|  1.43k|		smallest_error = total_error_##macro_order ; \
  |  |  180|  1.43k|	} \
  |  |  181|   181k|	residual_bits_per_sample[ macro_order ] = (float)((total_error_##macro_order > 0) ? log(M_LN2 * (double)total_error_##macro_order / (double)data_len) / M_LN2 : 0.0); \
  |  |  ------------------
  |  |  |  Branch (181:52): [True: 42.1k, False: 139k]
  |  |  ------------------
  |  |  182|   181k|} \
  |  |  183|   288k|else \
  |  |  184|   288k|	residual_bits_per_sample[ macro_order ] = 34.0f;
  ------------------
  336|       |
  337|   288k|	return order;
  338|   288k|}

FLAC__fixed_compute_best_predictor_intrin_ssse3:
   64|  60.0k|{
   65|  60.0k|	FLAC__uint32 total_error_0, total_error_1, total_error_2, total_error_3, total_error_4;
   66|  60.0k|	FLAC__int32 i, data_len_int;
   67|  60.0k|	uint32_t order;
   68|  60.0k|	__m128i total_err0, total_err1, total_err2, total_err3, total_err4;
   69|  60.0k|	__m128i prev_err0,  prev_err1,  prev_err2,  prev_err3;
   70|  60.0k|	__m128i tempA, tempB;
   71|  60.0k|	FLAC__int32 data_scalar[4];
   72|  60.0k|	FLAC__int32 prev_err0_scalar[4];
   73|  60.0k|	FLAC__int32 prev_err1_scalar[4];
   74|  60.0k|	FLAC__int32 prev_err2_scalar[4];
   75|  60.0k|	FLAC__int32 prev_err3_scalar[4];
   76|  60.0k|	total_err0 = _mm_setzero_si128();
   77|  60.0k|	total_err1 = _mm_setzero_si128();
   78|  60.0k|	total_err2 = _mm_setzero_si128();
   79|  60.0k|	total_err3 = _mm_setzero_si128();
   80|  60.0k|	total_err4 = _mm_setzero_si128();
   81|  60.0k|	data_len_int = data_len;
   82|       |
   83|   300k|	for(i = 0; i < 4; i++){
  ------------------
  |  Branch (83:13): [True: 240k, False: 60.0k]
  ------------------
   84|   240k|		prev_err0_scalar[i] = data[-1+i*(data_len_int/4)];
   85|   240k|		prev_err1_scalar[i] = data[-1+i*(data_len_int/4)] - data[-2+i*(data_len_int/4)];
   86|   240k|		prev_err2_scalar[i] = prev_err1_scalar[i] - (data[-2+i*(data_len_int/4)] - data[-3+i*(data_len_int/4)]);
   87|   240k|		prev_err3_scalar[i] = prev_err2_scalar[i] - (data[-2+i*(data_len_int/4)] - 2*data[-3+i*(data_len_int/4)] + data[-4+i*(data_len_int/4)]);
   88|   240k|	}
   89|  60.0k|	prev_err0 = _mm_loadu_si128((const __m128i*)prev_err0_scalar);
   90|  60.0k|	prev_err1 = _mm_loadu_si128((const __m128i*)prev_err1_scalar);
   91|  60.0k|	prev_err2 = _mm_loadu_si128((const __m128i*)prev_err2_scalar);
   92|  60.0k|	prev_err3 = _mm_loadu_si128((const __m128i*)prev_err3_scalar);
   93|   589k|	for(i = 0; i < data_len_int / 4; i++){
  ------------------
  |  Branch (93:13): [True: 529k, False: 60.0k]
  ------------------
   94|   529k|		data_scalar[0] = data[i];
   95|   529k|		data_scalar[1] = data[i+data_len/4];
   96|   529k|		data_scalar[2] = data[i+2*(data_len/4)];
   97|   529k|		data_scalar[3] = data[i+3*(data_len/4)];
   98|   529k|		tempA = _mm_loadu_si128((const __m128i*)data_scalar);
   99|   529k|		tempB = _mm_abs_epi32(tempA);
  100|   529k|		total_err0 = _mm_add_epi32(total_err0,tempB);
  101|   529k|		tempB = _mm_sub_epi32(tempA,prev_err0);
  102|   529k|		prev_err0 = tempA;
  103|   529k|		tempA = _mm_abs_epi32(tempB);
  104|   529k|		total_err1 = _mm_add_epi32(total_err1,tempA);
  105|   529k|		tempA = _mm_sub_epi32(tempB,prev_err1);
  106|   529k|		prev_err1 = tempB;
  107|   529k|		tempB = _mm_abs_epi32(tempA);
  108|   529k|		total_err2 = _mm_add_epi32(total_err2,tempB);
  109|   529k|		tempB = _mm_sub_epi32(tempA,prev_err2);
  110|   529k|		prev_err2 = tempA;
  111|   529k|		tempA = _mm_abs_epi32(tempB);
  112|   529k|		total_err3 = _mm_add_epi32(total_err3,tempA);
  113|   529k|		tempA = _mm_sub_epi32(tempB,prev_err3);
  114|   529k|		prev_err3 = tempB;
  115|   529k|		tempB = _mm_abs_epi32(tempA);
  116|   529k|		total_err4 = _mm_add_epi32(total_err4,tempB);
  117|   529k|	}
  118|  60.0k|	_mm_storeu_si128((__m128i*)data_scalar,total_err0);
  119|  60.0k|	total_error_0 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  120|  60.0k|	_mm_storeu_si128((__m128i*)data_scalar,total_err1);
  121|  60.0k|	total_error_1 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  122|  60.0k|	_mm_storeu_si128((__m128i*)data_scalar,total_err2);
  123|  60.0k|	total_error_2 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  124|  60.0k|	_mm_storeu_si128((__m128i*)data_scalar,total_err3);
  125|  60.0k|	total_error_3 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  126|  60.0k|	_mm_storeu_si128((__m128i*)data_scalar,total_err4);
  127|  60.0k|	total_error_4 = data_scalar[0] + data_scalar[1] + data_scalar[2] + data_scalar[3];
  128|       |
  129|       |	/* Now the remainder of samples needs to be processed */
  130|  60.0k|	i *= 4;
  131|  60.0k|	if(data_len % 4 > 0){
  ------------------
  |  Branch (131:5): [True: 36.4k, False: 23.5k]
  ------------------
  132|  36.4k|		FLAC__int32 last_error_0 = data[i-1];
  133|  36.4k|		FLAC__int32 last_error_1 = data[i-1] - data[i-2];
  134|  36.4k|		FLAC__int32 last_error_2 = last_error_1 - (data[i-2] - data[i-3]);
  135|  36.4k|		FLAC__int32 last_error_3 = last_error_2 - (data[i-2] - 2*data[i-3] + data[i-4]);
  136|  36.4k|		FLAC__int32 error, save;
  137|  82.3k|		for(; i < data_len_int; i++) {
  ------------------
  |  Branch (137:9): [True: 45.9k, False: 36.4k]
  ------------------
  138|  45.9k|			error  = data[i]     ; total_error_0 += local_abs(error);                      save = error;
  ------------------
  |  |   60|  45.9k|#define local_abs(x) ((uint32_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (60:34): [True: 6.33k, False: 39.5k]
  |  |  ------------------
  ------------------
  139|  45.9k|			error -= last_error_0; total_error_1 += local_abs(error); last_error_0 = save; save = error;
  ------------------
  |  |   60|  45.9k|#define local_abs(x) ((uint32_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (60:34): [True: 10.4k, False: 35.4k]
  |  |  ------------------
  ------------------
  140|  45.9k|			error -= last_error_1; total_error_2 += local_abs(error); last_error_1 = save; save = error;
  ------------------
  |  |   60|  45.9k|#define local_abs(x) ((uint32_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (60:34): [True: 12.3k, False: 33.5k]
  |  |  ------------------
  ------------------
  141|  45.9k|			error -= last_error_2; total_error_3 += local_abs(error); last_error_2 = save; save = error;
  ------------------
  |  |   60|  45.9k|#define local_abs(x) ((uint32_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (60:34): [True: 13.4k, False: 32.5k]
  |  |  ------------------
  ------------------
  142|  45.9k|			error -= last_error_3; total_error_4 += local_abs(error); last_error_3 = save;
  ------------------
  |  |   60|  45.9k|#define local_abs(x) ((uint32_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (60:34): [True: 16.6k, False: 29.2k]
  |  |  ------------------
  ------------------
  143|  45.9k|		}
  144|  36.4k|	}
  145|       |
  146|       |	/* prefer lower order */
  147|  60.0k|	if(total_error_0 <= flac_min(flac_min(flac_min(total_error_1, total_error_2), total_error_3), total_error_4))
  ------------------
  |  |   56|  60.0k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (147:5): [True: 13.2k, False: 46.7k]
  |  Branch (147:22): [True: 34.7k, False: 25.2k]
  |  Branch (147:22): [True: 34.3k, False: 3.75k]
  |  Branch (147:22): [True: 38.0k, False: 21.9k]
  |  Branch (147:22): [True: 34.5k, False: 5.52k]
  |  Branch (147:22): [True: 34.0k, False: 3.67k]
  |  Branch (147:22): [True: 37.7k, False: 2.30k]
  |  Branch (147:22): [True: 40.0k, False: 19.9k]
  ------------------
  148|  13.2k|		order = 0;
  149|  46.7k|	else if(total_error_1 <= flac_min(flac_min(total_error_2, total_error_3), total_error_4))
  ------------------
  |  |   56|  46.7k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (149:10): [True: 44.2k, False: 2.50k]
  |  Branch (149:27): [True: 26.1k, False: 20.5k]
  |  Branch (149:27): [True: 25.9k, False: 2.87k]
  |  Branch (149:27): [True: 28.8k, False: 17.9k]
  ------------------
  150|  44.2k|		order = 1;
  151|  2.50k|	else if(total_error_2 <= flac_min(total_error_3, total_error_4))
  ------------------
  |  |   56|  2.50k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (151:10): [True: 1.03k, False: 1.47k]
  |  Branch (151:27): [True: 2.10k, False: 402]
  ------------------
  152|  1.03k|		order = 2;
  153|  1.47k|	else if(total_error_3 <= total_error_4)
  ------------------
  |  Branch (153:10): [True: 1.07k, False: 399]
  ------------------
  154|  1.07k|		order = 3;
  155|    399|	else
  156|    399|		order = 4;
  157|       |
  158|       |	/* Estimate the expected number of bits per residual signal sample. */
  159|       |	/* 'total_error*' is linearly related to the variance of the residual */
  160|       |	/* signal, so we use it directly to compute E(|x|) */
  161|  60.0k|	FLAC__ASSERT(data_len > 0 || total_error_0 == 0);
  ------------------
  |  |   38|  60.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 60.0k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  162|  60.0k|	FLAC__ASSERT(data_len > 0 || total_error_1 == 0);
  ------------------
  |  |   38|  60.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 60.0k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  163|  60.0k|	FLAC__ASSERT(data_len > 0 || total_error_2 == 0);
  ------------------
  |  |   38|  60.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 60.0k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  164|  60.0k|	FLAC__ASSERT(data_len > 0 || total_error_3 == 0);
  ------------------
  |  |   38|  60.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 60.0k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  165|  60.0k|	FLAC__ASSERT(data_len > 0 || total_error_4 == 0);
  ------------------
  |  |   38|  60.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 60.0k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  166|       |
  167|  60.0k|	residual_bits_per_sample[0] = (float)((total_error_0 > 0) ? log(M_LN2 * (double)total_error_0 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (167:40): [True: 57.3k, False: 2.65k]
  ------------------
  168|  60.0k|	residual_bits_per_sample[1] = (float)((total_error_1 > 0) ? log(M_LN2 * (double)total_error_1 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (168:40): [True: 38.9k, False: 21.0k]
  ------------------
  169|  60.0k|	residual_bits_per_sample[2] = (float)((total_error_2 > 0) ? log(M_LN2 * (double)total_error_2 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (169:40): [True: 39.6k, False: 20.3k]
  ------------------
  170|  60.0k|	residual_bits_per_sample[3] = (float)((total_error_3 > 0) ? log(M_LN2 * (double)total_error_3 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (170:40): [True: 40.5k, False: 19.4k]
  ------------------
  171|  60.0k|	residual_bits_per_sample[4] = (float)((total_error_4 > 0) ? log(M_LN2 * (double)total_error_4 / (double)data_len) / M_LN2 : 0.0);
  ------------------
  |  Branch (171:40): [True: 41.3k, False: 18.6k]
  ------------------
  172|       |
  173|  60.0k|	return order;
  174|  60.0k|}

FLAC__format_sample_rate_is_valid:
  210|   267k|{
  211|   267k|	if(sample_rate > FLAC__MAX_SAMPLE_RATE) {
  ------------------
  |  |  125|   267k|#define FLAC__MAX_SAMPLE_RATE (1048575u)
  ------------------
  |  Branch (211:5): [True: 30, False: 267k]
  ------------------
  212|     30|		return false;
  213|     30|	}
  214|   267k|	else
  215|   267k|		return true;
  216|   267k|}
FLAC__format_blocksize_is_subset:
  219|    695|{
  220|    695|	if(blocksize > 16384)
  ------------------
  |  Branch (220:5): [True: 10, False: 685]
  ------------------
  221|     10|		return false;
  222|    685|	else if(sample_rate <= 48000 && blocksize > 4608)
  ------------------
  |  Branch (222:10): [True: 300, False: 385]
  |  Branch (222:34): [True: 8, False: 292]
  ------------------
  223|      8|		return false;
  224|    677|	else
  225|    677|		return true;
  226|    695|}
FLAC__format_sample_rate_is_subset:
  229|    677|{
  230|    677|	if( // sample rate is not subset if
  231|    677|		!FLAC__format_sample_rate_is_valid(sample_rate) || // sample rate is invalid or
  ------------------
  |  Branch (231:3): [True: 0, False: 677]
  ------------------
  232|    677|		sample_rate >= ((1u << 16) * 10) || // sample rate is larger then or equal to 655360 or
  ------------------
  |  Branch (232:3): [True: 21, False: 656]
  ------------------
  233|    656|		(sample_rate >= (1u << 16) && sample_rate % 10 != 0) //sample rate is >= 65536 and not divisible by 10
  ------------------
  |  Branch (233:4): [True: 266, False: 390]
  |  Branch (233:33): [True: 21, False: 245]
  ------------------
  234|    677|	) {
  235|     42|		return false;
  236|     42|	}
  237|    635|	else
  238|    635|		return true;
  239|    677|}
FLAC__format_get_max_rice_partition_order_from_blocksize:
  541|   247k|{
  542|   247k|	uint32_t max_rice_partition_order = 0;
  543|  1.10M|	while(!(blocksize & 1)) {
  ------------------
  |  Branch (543:8): [True: 855k, False: 247k]
  ------------------
  544|   855k|		max_rice_partition_order++;
  545|   855k|		blocksize >>= 1;
  546|   855k|	}
  547|       |	return flac_min(FLAC__MAX_RICE_PARTITION_ORDER, max_rice_partition_order);
  ------------------
  |  |   56|   247k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (547:9): [True: 0, False: 247k]
  ------------------
  548|   247k|}
FLAC__format_get_max_rice_partition_order_from_blocksize_limited_max_and_predictor_order:
  551|  18.1M|{
  552|  18.1M|	uint32_t max_rice_partition_order = limit;
  553|       |
  554|  27.6M|	while(max_rice_partition_order > 0 && (blocksize >> max_rice_partition_order) <= predictor_order)
  ------------------
  |  Branch (554:8): [True: 12.1M, False: 15.4M]
  |  Branch (554:40): [True: 9.43M, False: 2.69M]
  ------------------
  555|  9.43M|		max_rice_partition_order--;
  556|       |
  557|  18.1M|	FLAC__ASSERT(
  ------------------
  |  |   38|  60.0M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 15.4M, False: 2.69M]
  |  |  |  Branch (38:30): [True: 15.4M, False: 18.4E]
  |  |  |  Branch (38:30): [True: 2.72M, False: 958]
  |  |  |  Branch (38:30): [True: 2.72M, False: 18.4E]
  |  |  ------------------
  ------------------
  558|  18.1M|		(max_rice_partition_order == 0 && blocksize >= predictor_order) ||
  559|  18.1M|		(max_rice_partition_order > 0 && blocksize >> max_rice_partition_order > predictor_order)
  560|  18.1M|	);
  561|       |
  562|  18.1M|	return max_rice_partition_order;
  563|  18.1M|}
FLAC__format_entropy_coding_method_partitioned_rice_contents_init:
  566|  1.43M|{
  567|  1.43M|	FLAC__ASSERT(0 != object);
  ------------------
  |  |   38|  1.43M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.43M]
  |  |  ------------------
  ------------------
  568|       |
  569|  1.43M|	object->parameters = 0;
  570|  1.43M|	object->raw_bits = 0;
  571|  1.43M|	object->capacity_by_order = 0;
  572|  1.43M|}
FLAC__format_entropy_coding_method_partitioned_rice_contents_clear:
  575|   822k|{
  576|   822k|	FLAC__ASSERT(0 != object);
  ------------------
  |  |   38|   822k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 822k]
  |  |  ------------------
  ------------------
  577|       |
  578|   822k|	if(0 != object->parameters)
  ------------------
  |  Branch (578:5): [True: 216k, False: 605k]
  ------------------
  579|   216k|		free(object->parameters);
  580|   822k|	if(0 != object->raw_bits)
  ------------------
  |  Branch (580:5): [True: 216k, False: 605k]
  ------------------
  581|   216k|		free(object->raw_bits);
  582|   822k|	FLAC__format_entropy_coding_method_partitioned_rice_contents_init(object);
  583|   822k|}
FLAC__format_entropy_coding_method_partitioned_rice_contents_ensure_size:
  591|   413k|{
  592|   413k|	FLAC__ASSERT(0 != object);
  ------------------
  |  |   38|   413k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 413k]
  |  |  ------------------
  ------------------
  593|       |
  594|   413k|	if(object->capacity_by_order < max_partition_order || object->parameters == NULL || object->raw_bits == NULL) {
  ------------------
  |  Branch (594:5): [True: 143k, False: 270k]
  |  Branch (594:56): [True: 73.6k, False: 196k]
  |  Branch (594:86): [True: 0, False: 196k]
  ------------------
  595|   216k|		if(0 == (object->parameters = safe_realloc_(object->parameters, sizeof(uint32_t)*(1 << max_partition_order))))
  ------------------
  |  Branch (595:6): [True: 0, False: 216k]
  ------------------
  596|      0|			return false;
  597|   216k|		if(0 == (object->raw_bits = safe_realloc_(object->raw_bits, sizeof(uint32_t)*(1 << max_partition_order))))
  ------------------
  |  Branch (597:6): [True: 0, False: 216k]
  ------------------
  598|      0|			return false;
  599|   216k|		memset(object->raw_bits, 0, sizeof(uint32_t)*(1 << max_partition_order));
  600|   216k|		object->capacity_by_order = max_partition_order;
  601|   216k|	}
  602|       |
  603|   413k|	return true;
  604|   413k|}

stream_encoder.c:FLAC__bitmath_ilog2:
  157|  25.9M|{
  158|  25.9M|	FLAC__ASSERT(v > 0);
  ------------------
  |  |   38|  25.9M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 25.9M]
  |  |  ------------------
  ------------------
  159|       |#if defined(__INTEL_COMPILER)
  160|       |	return _bit_scan_reverse(v);
  161|       |#elif defined(_MSC_VER)
  162|       |	{
  163|       |		unsigned long idx;
  164|       |		_BitScanReverse(&idx, v);
  165|       |		return idx;
  166|       |	}
  167|       |#else
  168|  25.9M|	return FLAC__clz_uint32(v) ^ 31U;
  169|  25.9M|#endif
  170|  25.9M|}
stream_encoder.c:FLAC__clz_uint32:
   74|  25.9M|{
   75|       |/* Never used with input 0 */
   76|  25.9M|	FLAC__ASSERT(v > 0);
  ------------------
  |  |   38|  25.9M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 25.9M]
  |  |  ------------------
  ------------------
   77|       |#if defined(__INTEL_COMPILER)
   78|       |	return _bit_scan_reverse(v) ^ 31U;
   79|       |#elif defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
   80|       |/* This will translate either to (bsr ^ 31U), clz , ctlz, cntlz, lzcnt depending on
   81|       | * -march= setting or to a software routine in exotic machines. */
   82|  25.9M|	return __builtin_clz(v);
   83|       |#elif defined(_MSC_VER)
   84|       |	{
   85|       |		unsigned long idx;
   86|       |		_BitScanReverse(&idx, v);
   87|       |		return idx ^ 31U;
   88|       |	}
   89|       |#else
   90|       |	return FLAC__clz_soft_uint32(v);
   91|       |#endif
   92|  25.9M|}
stream_encoder.c:FLAC__bitmath_ilog2_wide:
  173|  30.5M|{
  174|  30.5M|	FLAC__ASSERT(v > 0);
  ------------------
  |  |   38|  30.5M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 30.5M]
  |  |  ------------------
  ------------------
  175|  30.5M|#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
  176|  30.5M|	return __builtin_clzll(v) ^ 63U;
  177|       |/* Sorry, only supported in x64/Itanium.. and both have fast FPU which makes integer-only encoder pointless */
  178|       |#elif (defined(__INTEL_COMPILER) || defined(_MSC_VER)) && (defined(_M_IA64) || defined(_M_X64))
  179|       |	{
  180|       |		unsigned long idx;
  181|       |		_BitScanReverse64(&idx, v);
  182|       |		return idx;
  183|       |	}
  184|       |#else
  185|       |/*  Brain-damaged compilers will use the fastest possible way that is,
  186|       |	de Bruijn sequences (http://supertech.csail.mit.edu/papers/debruijn.pdf)
  187|       |	(C) Timothy B. Terriberry (tterribe@xiph.org) 2001-2009 CC0 (Public domain).
  188|       |*/
  189|       |	{
  190|       |		static const uint8_t DEBRUIJN_IDX64[64]={
  191|       |			0, 1, 2, 7, 3,13, 8,19, 4,25,14,28, 9,34,20,40,
  192|       |			5,17,26,38,15,46,29,48,10,31,35,54,21,50,41,57,
  193|       |			63, 6,12,18,24,27,33,39,16,37,45,47,30,53,49,56,
  194|       |			62,11,23,32,36,44,52,55,61,22,43,51,60,42,59,58
  195|       |		};
  196|       |		v|= v>>1;
  197|       |		v|= v>>2;
  198|       |		v|= v>>4;
  199|       |		v|= v>>8;
  200|       |		v|= v>>16;
  201|       |		v|= v>>32;
  202|       |		v= (v>>1)+1;
  203|       |		return DEBRUIJN_IDX64[v*FLAC__U64L(0x218A392CD3D5DBF)>>58&0x3F];
  204|       |	}
  205|       |#endif
  206|  30.5M|}
stream_encoder_intrin_avx2.c:FLAC__bitmath_ilog2:
  157|  18.2M|{
  158|  18.2M|	FLAC__ASSERT(v > 0);
  ------------------
  |  |   38|  18.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 18.2M]
  |  |  ------------------
  ------------------
  159|       |#if defined(__INTEL_COMPILER)
  160|       |	return _bit_scan_reverse(v);
  161|       |#elif defined(_MSC_VER)
  162|       |	{
  163|       |		unsigned long idx;
  164|       |		_BitScanReverse(&idx, v);
  165|       |		return idx;
  166|       |	}
  167|       |#else
  168|  18.2M|	return FLAC__clz_uint32(v) ^ 31U;
  169|  18.2M|#endif
  170|  18.2M|}
stream_encoder_intrin_avx2.c:FLAC__clz_uint32:
   74|  18.2M|{
   75|       |/* Never used with input 0 */
   76|  18.2M|	FLAC__ASSERT(v > 0);
  ------------------
  |  |   38|  18.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 18.2M]
  |  |  ------------------
  ------------------
   77|       |#if defined(__INTEL_COMPILER)
   78|       |	return _bit_scan_reverse(v) ^ 31U;
   79|       |#elif defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
   80|       |/* This will translate either to (bsr ^ 31U), clz , ctlz, cntlz, lzcnt depending on
   81|       | * -march= setting or to a software routine in exotic machines. */
   82|  18.2M|	return __builtin_clz(v);
   83|       |#elif defined(_MSC_VER)
   84|       |	{
   85|       |		unsigned long idx;
   86|       |		_BitScanReverse(&idx, v);
   87|       |		return idx ^ 31U;
   88|       |	}
   89|       |#else
   90|       |	return FLAC__clz_soft_uint32(v);
   91|       |#endif
   92|  18.2M|}
bitmath.c:FLAC__bitmath_ilog2_wide:
  173|  26.6M|{
  174|  26.6M|	FLAC__ASSERT(v > 0);
  ------------------
  |  |   38|  26.6M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 26.6M]
  |  |  ------------------
  ------------------
  175|  26.6M|#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
  176|  26.6M|	return __builtin_clzll(v) ^ 63U;
  177|       |/* Sorry, only supported in x64/Itanium.. and both have fast FPU which makes integer-only encoder pointless */
  178|       |#elif (defined(__INTEL_COMPILER) || defined(_MSC_VER)) && (defined(_M_IA64) || defined(_M_X64))
  179|       |	{
  180|       |		unsigned long idx;
  181|       |		_BitScanReverse64(&idx, v);
  182|       |		return idx;
  183|       |	}
  184|       |#else
  185|       |/*  Brain-damaged compilers will use the fastest possible way that is,
  186|       |	de Bruijn sequences (http://supertech.csail.mit.edu/papers/debruijn.pdf)
  187|       |	(C) Timothy B. Terriberry (tterribe@xiph.org) 2001-2009 CC0 (Public domain).
  188|       |*/
  189|       |	{
  190|       |		static const uint8_t DEBRUIJN_IDX64[64]={
  191|       |			0, 1, 2, 7, 3,13, 8,19, 4,25,14,28, 9,34,20,40,
  192|       |			5,17,26,38,15,46,29,48,10,31,35,54,21,50,41,57,
  193|       |			63, 6,12,18,24,27,33,39,16,37,45,47,30,53,49,56,
  194|       |			62,11,23,32,36,44,52,55,61,22,43,51,60,42,59,58
  195|       |		};
  196|       |		v|= v>>1;
  197|       |		v|= v>>2;
  198|       |		v|= v>>4;
  199|       |		v|= v>>8;
  200|       |		v|= v>>16;
  201|       |		v|= v>>32;
  202|       |		v= (v>>1)+1;
  203|       |		return DEBRUIJN_IDX64[v*FLAC__U64L(0x218A392CD3D5DBF)>>58&0x3F];
  204|       |	}
  205|       |#endif
  206|  26.6M|}
bitreader.c:FLAC__clz_uint64:
  102|  21.5M|{
  103|       |	/* Never used with input 0 */
  104|  21.5M|	FLAC__ASSERT(v > 0);
  ------------------
  |  |   38|  21.5M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.5M]
  |  |  ------------------
  ------------------
  105|  21.5M|#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
  106|  21.5M|	return __builtin_clzll(v);
  107|       |#elif (defined(__INTEL_COMPILER) || defined(_MSC_VER)) && (defined(_M_IA64) || defined(_M_X64))
  108|       |	{
  109|       |		unsigned long idx;
  110|       |		_BitScanReverse64(&idx, v);
  111|       |		return idx ^ 63U;
  112|       |	}
  113|       |#else
  114|       |	return FLAC__clz_soft_uint64(v);
  115|       |#endif
  116|  21.5M|}
bitreader.c:FLAC__clz2_uint64:
  127|  18.8M|{
  128|  18.8M|	if (!v)
  ------------------
  |  Branch (128:6): [True: 643k, False: 18.1M]
  ------------------
  129|   643k|		return 64;
  130|  18.1M|	return FLAC__clz_uint64(v);
  131|  18.8M|}

FLAC__lpc_window_data:
   69|   239k|{
   70|   239k|	uint32_t i;
   71|  27.8M|	for(i = 0; i < data_len; i++)
  ------------------
  |  Branch (71:13): [True: 27.6M, False: 239k]
  ------------------
   72|  27.6M|		out[i] = in[i] * window[i];
   73|   239k|}
FLAC__lpc_window_data_wide:
   76|  14.3k|{
   77|  14.3k|	uint32_t i;
   78|  3.39M|	for(i = 0; i < data_len; i++)
  ------------------
  |  Branch (78:13): [True: 3.38M, False: 14.3k]
  ------------------
   79|  3.38M|		out[i] = in[i] * window[i];
   80|  14.3k|}
FLAC__lpc_window_data_partial:
   83|  40.4k|{
   84|  40.4k|	uint32_t i, j;
   85|  40.4k|	if((part_size + data_shift) < data_len){
  ------------------
  |  Branch (85:5): [True: 40.4k, False: 0]
  ------------------
   86|  1.23M|		for(i = 0; i < part_size; i++)
  ------------------
  |  Branch (86:14): [True: 1.19M, False: 40.4k]
  ------------------
   87|  1.19M|			out[i] = in[data_shift+i] * window[i];
   88|  40.4k|		i = flac_min(i,data_len - part_size - data_shift);
  ------------------
  |  |   56|  40.4k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (88:7): [True: 38.1k, False: 2.38k]
  ------------------
   89|  1.23M|		for(j = data_len - part_size; j < data_len; i++, j++)
  ------------------
  |  Branch (89:33): [True: 1.19M, False: 40.4k]
  ------------------
   90|  1.19M|			out[i] = in[data_shift+i] * window[j];
   91|  40.4k|		if(i < data_len)
  ------------------
  |  Branch (91:6): [True: 40.4k, False: 0]
  ------------------
   92|  40.4k|			out[i] = 0.0f;
   93|  40.4k|	}
   94|  40.4k|}
FLAC__lpc_window_data_partial_wide:
   97|  3.17k|{
   98|  3.17k|	uint32_t i, j;
   99|  3.17k|	if((part_size + data_shift) < data_len){
  ------------------
  |  Branch (99:5): [True: 3.17k, False: 0]
  ------------------
  100|  90.0k|		for(i = 0; i < part_size; i++)
  ------------------
  |  Branch (100:14): [True: 86.9k, False: 3.17k]
  ------------------
  101|  86.9k|			out[i] = in[data_shift+i] * window[i];
  102|  3.17k|		i = flac_min(i,data_len - part_size - data_shift);
  ------------------
  |  |   56|  3.17k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (102:7): [True: 2.62k, False: 552]
  ------------------
  103|  90.0k|		for(j = data_len - part_size; j < data_len; i++, j++)
  ------------------
  |  Branch (103:33): [True: 86.9k, False: 3.17k]
  ------------------
  104|  86.9k|			out[i] = in[data_shift+i] * window[j];
  105|  3.17k|		if(i < data_len)
  ------------------
  |  Branch (105:6): [True: 3.17k, False: 0]
  ------------------
  106|  3.17k|			out[i] = 0.0f;
  107|  3.17k|	}
  108|  3.17k|}
FLAC__lpc_compute_autocorrelation:
  111|   245k|{
  112|       |	/* a readable, but slower, version */
  113|       |#if 0
  114|       |	double d;
  115|       |	uint32_t i;
  116|       |
  117|       |	FLAC__ASSERT(lag > 0);
  118|       |	FLAC__ASSERT(lag <= data_len);
  119|       |
  120|       |	/*
  121|       |	 * Technically we should subtract the mean first like so:
  122|       |	 *   for(i = 0; i < data_len; i++)
  123|       |	 *     data[i] -= mean;
  124|       |	 * but it appears not to make enough of a difference to matter, and
  125|       |	 * most signals are already closely centered around zero
  126|       |	 */
  127|       |	while(lag--) {
  128|       |		for(i = lag, d = 0.0; i < data_len; i++)
  129|       |			d += data[i] * (double)data[i - lag];
  130|       |		autoc[lag] = d;
  131|       |	}
  132|       |#endif
  133|   245k|	if (data_len < FLAC__MAX_LPC_ORDER || lag > 16) {
  ------------------
  |  |  128|   491k|#define FLAC__MAX_LPC_ORDER (32u)
  ------------------
  |  Branch (133:6): [True: 221k, False: 23.9k]
  |  Branch (133:40): [True: 7.76k, False: 16.1k]
  ------------------
  134|       |		/*
  135|       |		 * this version tends to run faster because of better data locality
  136|       |		 * ('data_len' is usually much larger than 'lag')
  137|       |		 */
  138|   229k|		double d;
  139|   229k|		uint32_t sample, coeff;
  140|   229k|		const uint32_t limit = data_len - lag;
  141|       |
  142|   229k|		FLAC__ASSERT(lag > 0);
  ------------------
  |  |   38|   229k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 229k]
  |  |  ------------------
  ------------------
  143|   229k|		FLAC__ASSERT(lag <= data_len);
  ------------------
  |  |   38|   229k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 229k]
  |  |  ------------------
  ------------------
  144|       |
  145|  3.23M|		for(coeff = 0; coeff < lag; coeff++)
  ------------------
  |  Branch (145:18): [True: 3.00M, False: 229k]
  ------------------
  146|  3.00M|			autoc[coeff] = 0.0;
  147|  13.2M|		for(sample = 0; sample <= limit; sample++) {
  ------------------
  |  Branch (147:19): [True: 13.0M, False: 229k]
  ------------------
  148|  13.0M|			d = data[sample];
  149|   405M|			for(coeff = 0; coeff < lag; coeff++)
  ------------------
  |  Branch (149:19): [True: 392M, False: 13.0M]
  ------------------
  150|   392M|				autoc[coeff] += d * data[sample+coeff];
  151|  13.0M|		}
  152|  3.00M|		for(; sample < data_len; sample++) {
  ------------------
  |  Branch (152:9): [True: 2.77M, False: 229k]
  ------------------
  153|  2.77M|			d = data[sample];
  154|  24.8M|			for(coeff = 0; coeff < data_len - sample; coeff++)
  ------------------
  |  Branch (154:19): [True: 22.0M, False: 2.77M]
  ------------------
  155|  22.0M|				autoc[coeff] += d * data[sample+coeff];
  156|  2.77M|		}
  157|   229k|	}
  158|  16.1k|	else if(lag <= 8) {
  ------------------
  |  Branch (158:10): [True: 916, False: 15.2k]
  ------------------
  159|    916|		#undef MAX_LAG
  160|    916|		#define MAX_LAG 8
  161|    916|		#include "deduplication/lpc_compute_autocorrelation_intrin.c"
  ------------------
  |  |    1|    916|	int i, j;
  |  |    2|    916|	(void) lag;
  |  |    3|    916|	FLAC__ASSERT(lag <= MAX_LAG);
  |  |  ------------------
  |  |  |  |   38|    916|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 916]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    4|       |
  |  |    5|  8.24k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |  160|  8.24k|		#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (5:20): [True: 7.32k, False: 916]
  |  |  ------------------
  |  |    6|  7.32k|                autoc[i] = 0.0;
  |  |    7|       |
  |  |    8|  8.24k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |  160|  8.24k|		#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (8:20): [True: 7.32k, False: 916]
  |  |  ------------------
  |  |    9|  40.3k|                for(j = 0; j <= i; j++)
  |  |  ------------------
  |  |  |  Branch (9:28): [True: 32.9k, False: 7.32k]
  |  |  ------------------
  |  |   10|  32.9k|                        autoc[j] += (double)data[i] * (double)data[i-j];
  |  |   11|       |
  |  |   12|  22.9k|        for(i = MAX_LAG; i < (int)data_len; i++)
  |  |  ------------------
  |  |  |  |  160|    916|		#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (12:26): [True: 21.9k, False: 916]
  |  |  ------------------
  |  |   13|   197k|		for(j = 0; j < MAX_LAG; j++)
  |  |  ------------------
  |  |  |  |  160|   197k|		#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (13:14): [True: 175k, False: 21.9k]
  |  |  ------------------
  |  |   14|   175k|	                autoc[j] += (double)data[i] * (double)data[i-j];
  ------------------
  162|    916|	}
  163|  15.2k|	else if(lag <= 12) {
  ------------------
  |  Branch (163:10): [True: 6.26k, False: 9.01k]
  ------------------
  164|  6.26k|		#undef MAX_LAG
  165|  6.26k|		#define MAX_LAG 12
  166|  6.26k|		#include "deduplication/lpc_compute_autocorrelation_intrin.c"
  ------------------
  |  |    1|  6.26k|	int i, j;
  |  |    2|  6.26k|	(void) lag;
  |  |    3|  6.26k|	FLAC__ASSERT(lag <= MAX_LAG);
  |  |  ------------------
  |  |  |  |   38|  6.26k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 6.26k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    4|       |
  |  |    5|  81.4k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |  165|  81.4k|		#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (5:20): [True: 75.1k, False: 6.26k]
  |  |  ------------------
  |  |    6|  75.1k|                autoc[i] = 0.0;
  |  |    7|       |
  |  |    8|  81.2k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |  165|  81.2k|		#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (8:20): [True: 75.0k, False: 6.26k]
  |  |  ------------------
  |  |    9|   562k|                for(j = 0; j <= i; j++)
  |  |  ------------------
  |  |  |  Branch (9:28): [True: 487k, False: 75.0k]
  |  |  ------------------
  |  |   10|   487k|                        autoc[j] += (double)data[i] * (double)data[i-j];
  |  |   11|       |
  |  |   12|   130k|        for(i = MAX_LAG; i < (int)data_len; i++)
  |  |  ------------------
  |  |  |  |  165|  6.26k|		#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (12:26): [True: 124k, False: 6.26k]
  |  |  ------------------
  |  |   13|  1.61M|		for(j = 0; j < MAX_LAG; j++)
  |  |  ------------------
  |  |  |  |  165|  1.61M|		#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (13:14): [True: 1.49M, False: 124k]
  |  |  ------------------
  |  |   14|  1.49M|	                autoc[j] += (double)data[i] * (double)data[i-j];
  ------------------
  167|  6.26k|	}
  168|  9.01k|	else if(lag <= 16) {
  ------------------
  |  Branch (168:10): [True: 9.01k, False: 4]
  ------------------
  169|  9.01k|		#undef MAX_LAG
  170|  9.01k|		#define MAX_LAG 16
  171|  9.01k|		#include "deduplication/lpc_compute_autocorrelation_intrin.c"
  ------------------
  |  |    1|  9.01k|	int i, j;
  |  |    2|  9.01k|	(void) lag;
  |  |    3|  9.01k|	FLAC__ASSERT(lag <= MAX_LAG);
  |  |  ------------------
  |  |  |  |   38|  9.01k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 9.01k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    4|       |
  |  |    5|   151k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |  170|   151k|		#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (5:20): [True: 142k, False: 9.01k]
  |  |  ------------------
  |  |    6|   142k|                autoc[i] = 0.0;
  |  |    7|       |
  |  |    8|   148k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |  170|   148k|		#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (8:20): [True: 139k, False: 9.01k]
  |  |  ------------------
  |  |    9|  1.28M|                for(j = 0; j <= i; j++)
  |  |  ------------------
  |  |  |  Branch (9:28): [True: 1.14M, False: 139k]
  |  |  ------------------
  |  |   10|  1.14M|                        autoc[j] += (double)data[i] * (double)data[i-j];
  |  |   11|       |
  |  |   12|   143k|        for(i = MAX_LAG; i < (int)data_len; i++)
  |  |  ------------------
  |  |  |  |  170|  9.01k|		#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (12:26): [True: 134k, False: 9.01k]
  |  |  ------------------
  |  |   13|  2.04M|		for(j = 0; j < MAX_LAG; j++)
  |  |  ------------------
  |  |  |  |  170|  2.04M|		#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (13:14): [True: 1.90M, False: 134k]
  |  |  ------------------
  |  |   14|  1.90M|	                autoc[j] += (double)data[i] * (double)data[i-j];
  ------------------
  172|  9.01k|	}
  173|       |
  174|   245k|}
FLAC__lpc_compute_lp_coefficients:
  177|   333k|{
  178|   333k|	uint32_t i, j;
  179|   333k|	double r, err, lpc[FLAC__MAX_LPC_ORDER];
  180|       |
  181|   333k|	FLAC__ASSERT(0 != max_order);
  ------------------
  |  |   38|   333k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 333k]
  |  |  ------------------
  ------------------
  182|   333k|	FLAC__ASSERT(0 < *max_order);
  ------------------
  |  |   38|   333k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 333k]
  |  |  ------------------
  ------------------
  183|   333k|	FLAC__ASSERT(*max_order <= FLAC__MAX_LPC_ORDER);
  ------------------
  |  |   38|   333k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 333k]
  |  |  ------------------
  ------------------
  184|   333k|	FLAC__ASSERT(autoc[0] != 0.0);
  ------------------
  |  |   38|   333k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 333k]
  |  |  ------------------
  ------------------
  185|       |
  186|   333k|	err = autoc[0];
  187|       |
  188|  4.19M|	for(i = 0; i < *max_order; i++) {
  ------------------
  |  Branch (188:13): [True: 3.86M, False: 333k]
  ------------------
  189|       |		/* Sum up this iteration's reflection coefficient. */
  190|  3.86M|		r = -autoc[i+1];
  191|  29.1M|		for(j = 0; j < i; j++)
  ------------------
  |  Branch (191:14): [True: 25.2M, False: 3.86M]
  ------------------
  192|  25.2M|			r -= lpc[j] * autoc[i-j];
  193|  3.86M|		r /= err;
  194|       |
  195|       |		/* Update LPC coefficients and total error. */
  196|  3.86M|		lpc[i]=r;
  197|  15.5M|		for(j = 0; j < (i>>1); j++) {
  ------------------
  |  Branch (197:14): [True: 11.6M, False: 3.86M]
  ------------------
  198|  11.6M|			double tmp = lpc[j];
  199|  11.6M|			lpc[j] += r * lpc[i-1-j];
  200|  11.6M|			lpc[i-1-j] += r * tmp;
  201|  11.6M|		}
  202|  3.86M|		if(i & 1)
  ------------------
  |  Branch (202:6): [True: 1.89M, False: 1.97M]
  ------------------
  203|  1.89M|			lpc[j] += lpc[j] * r;
  204|       |
  205|  3.86M|		err *= (1.0 - r * r);
  206|       |
  207|       |		/* save this order */
  208|  32.9M|		for(j = 0; j <= i; j++)
  ------------------
  |  Branch (208:14): [True: 29.1M, False: 3.86M]
  ------------------
  209|  29.1M|			lp_coeff[i][j] = (FLAC__real)(-lpc[j]); /* negate FIR filter coeff to get predictor coeff */
  210|  3.86M|		error[i] = err;
  211|       |
  212|       |		/* see SF bug https://sourceforge.net/p/flac/bugs/234/ */
  213|  3.86M|		if(err == 0.0) {
  ------------------
  |  Branch (213:6): [True: 223, False: 3.86M]
  ------------------
  214|    223|			*max_order = i+1;
  215|    223|			return;
  216|    223|		}
  217|  3.86M|	}
  218|   333k|}
FLAC__lpc_quantize_coefficients:
  221|  20.6M|{
  222|  20.6M|	uint32_t i;
  223|  20.6M|	double cmax;
  224|  20.6M|	FLAC__int32 qmax, qmin;
  225|       |
  226|  20.6M|	FLAC__ASSERT(precision > 0);
  ------------------
  |  |   38|  20.6M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 20.6M]
  |  |  ------------------
  ------------------
  227|  20.6M|	FLAC__ASSERT(precision >= FLAC__MIN_QLP_COEFF_PRECISION);
  ------------------
  |  |   38|  20.6M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 20.6M]
  |  |  ------------------
  ------------------
  228|       |
  229|       |	/* drop one bit for the sign; from here on out we consider only |lp_coeff[i]| */
  230|  20.6M|	precision--;
  231|  20.6M|	qmax = 1 << precision;
  232|  20.6M|	qmin = -qmax;
  233|  20.6M|	qmax--;
  234|       |
  235|       |	/* calc cmax = max( |lp_coeff[i]| ) */
  236|  20.6M|	cmax = 0.0;
  237|   184M|	for(i = 0; i < order; i++) {
  ------------------
  |  Branch (237:13): [True: 164M, False: 20.6M]
  ------------------
  238|   164M|		const double d = fabs(lp_coeff[i]);
  239|   164M|		if(d > cmax)
  ------------------
  |  Branch (239:6): [True: 31.4M, False: 132M]
  ------------------
  240|  31.4M|			cmax = d;
  241|   164M|	}
  242|       |
  243|  20.6M|	if(cmax <= 0.0) {
  ------------------
  |  Branch (243:5): [True: 800k, False: 19.8M]
  ------------------
  244|       |		/* => coefficients are all 0, which means our constant-detect didn't work */
  245|   800k|		return 2;
  246|   800k|	}
  247|  19.8M|	else {
  248|  19.8M|		const int max_shiftlimit = (1 << (FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN-1)) - 1;
  249|  19.8M|		const int min_shiftlimit = -max_shiftlimit - 1;
  250|  19.8M|		int log2cmax;
  251|       |
  252|  19.8M|		(void)frexp(cmax, &log2cmax);
  253|  19.8M|		log2cmax--;
  254|  19.8M|		*shift = (int)precision - log2cmax - 1;
  255|       |
  256|  19.8M|		if(*shift > max_shiftlimit)
  ------------------
  |  Branch (256:6): [True: 2.16M, False: 17.6M]
  ------------------
  257|  2.16M|			*shift = max_shiftlimit;
  258|  17.6M|		else if(*shift < min_shiftlimit)
  ------------------
  |  Branch (258:11): [True: 1.99k, False: 17.6M]
  ------------------
  259|  1.99k|			return 1;
  260|  19.8M|	}
  261|       |
  262|  19.8M|	if(*shift >= 0) {
  ------------------
  |  Branch (262:5): [True: 19.5M, False: 259k]
  ------------------
  263|  19.5M|		double error = 0.0;
  264|  19.5M|		FLAC__int32 q;
  265|   179M|		for(i = 0; i < order; i++) {
  ------------------
  |  Branch (265:14): [True: 159M, False: 19.5M]
  ------------------
  266|   159M|			error += lp_coeff[i] * (1 << *shift);
  267|   159M|			q = lround(error);
  268|       |
  269|       |#ifdef FLAC__OVERFLOW_DETECT
  270|       |			if(q > qmax+1) /* we expect q==qmax+1 occasionally due to rounding */
  271|       |				flac_fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q>qmax %d>%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmax,*shift,cmax,precision+1,i,lp_coeff[i]);
  272|       |			else if(q < qmin)
  273|       |				flac_fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q<qmin %d<%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmin,*shift,cmax,precision+1,i,lp_coeff[i]);
  274|       |#endif
  275|   159M|			if(q > qmax)
  ------------------
  |  Branch (275:7): [True: 233k, False: 159M]
  ------------------
  276|   233k|				q = qmax;
  277|   159M|			else if(q < qmin)
  ------------------
  |  Branch (277:12): [True: 0, False: 159M]
  ------------------
  278|      0|				q = qmin;
  279|   159M|			error -= q;
  280|   159M|			qlp_coeff[i] = q;
  281|   159M|		}
  282|  19.5M|	}
  283|       |	/* negative shift is very rare but due to design flaw, negative shift is
  284|       |	 * not allowed in the decoder, so it must be handled specially by scaling
  285|       |	 * down coeffs
  286|       |	 */
  287|   259k|	else {
  288|   259k|		const int nshift = -(*shift);
  289|   259k|		double error = 0.0;
  290|   259k|		FLAC__int32 q;
  291|       |#ifndef NDEBUG
  292|       |		flac_fprintf(stderr,"FLAC__lpc_quantize_coefficients: negative shift=%d order=%u cmax=%f\n", *shift, order, cmax);
  293|       |#endif
  294|   371k|		for(i = 0; i < order; i++) {
  ------------------
  |  Branch (294:14): [True: 111k, False: 259k]
  ------------------
  295|   111k|			error += lp_coeff[i] / (1 << nshift);
  296|   111k|			q = lround(error);
  297|       |#ifdef FLAC__OVERFLOW_DETECT
  298|       |			if(q > qmax+1) /* we expect q==qmax+1 occasionally due to rounding */
  299|       |				flac_fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q>qmax %d>%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmax,*shift,cmax,precision+1,i,lp_coeff[i]);
  300|       |			else if(q < qmin)
  301|       |				flac_fprintf(stderr,"FLAC__lpc_quantize_coefficients: quantizer overflow: q<qmin %d<%d shift=%d cmax=%f precision=%u lpc[%u]=%f\n",q,qmin,*shift,cmax,precision+1,i,lp_coeff[i]);
  302|       |#endif
  303|   111k|			if(q > qmax)
  ------------------
  |  Branch (303:7): [True: 173, False: 111k]
  ------------------
  304|    173|				q = qmax;
  305|   111k|			else if(q < qmin)
  ------------------
  |  Branch (305:12): [True: 0, False: 111k]
  ------------------
  306|      0|				q = qmin;
  307|   111k|			error -= q;
  308|   111k|			qlp_coeff[i] = q;
  309|   111k|		}
  310|   259k|		*shift = 0;
  311|   259k|	}
  312|       |
  313|  19.8M|	return 0;
  314|  20.6M|}
FLAC__lpc_compute_residual_from_qlp_coefficients_limit_residual:
  833|  11.8M|{
  834|  11.8M|	int i;
  835|  11.8M|	FLAC__int64 sum, residual_to_check;
  836|       |
  837|  11.8M|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  11.8M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.8M]
  |  |  ------------------
  ------------------
  838|  11.8M|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  11.8M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.8M]
  |  |  ------------------
  ------------------
  839|       |
  840|  1.18G|	for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (840:13): [True: 1.17G, False: 10.0M]
  ------------------
  841|  1.17G|		sum = 0;
  842|  1.17G|		switch(order) {
  ------------------
  |  Branch (842:10): [True: 1.18G, False: 18.4E]
  ------------------
  843|  22.6M|			case 32: sum += qlp_coeff[31] * (FLAC__int64)data[i-32]; /* Falls through. */
  ------------------
  |  Branch (843:4): [True: 22.6M, False: 1.15G]
  ------------------
  844|  45.6M|			case 31: sum += qlp_coeff[30] * (FLAC__int64)data[i-31]; /* Falls through. */
  ------------------
  |  Branch (844:4): [True: 22.9M, False: 1.15G]
  ------------------
  845|  69.0M|			case 30: sum += qlp_coeff[29] * (FLAC__int64)data[i-30]; /* Falls through. */
  ------------------
  |  Branch (845:4): [True: 23.3M, False: 1.15G]
  ------------------
  846|  92.9M|			case 29: sum += qlp_coeff[28] * (FLAC__int64)data[i-29]; /* Falls through. */
  ------------------
  |  Branch (846:4): [True: 23.9M, False: 1.14G]
  ------------------
  847|   116M|			case 28: sum += qlp_coeff[27] * (FLAC__int64)data[i-28]; /* Falls through. */
  ------------------
  |  Branch (847:4): [True: 23.9M, False: 1.14G]
  ------------------
  848|   140M|			case 27: sum += qlp_coeff[26] * (FLAC__int64)data[i-27]; /* Falls through. */
  ------------------
  |  Branch (848:4): [True: 23.9M, False: 1.14G]
  ------------------
  849|   164M|			case 26: sum += qlp_coeff[25] * (FLAC__int64)data[i-26]; /* Falls through. */
  ------------------
  |  Branch (849:4): [True: 23.9M, False: 1.14G]
  ------------------
  850|   188M|			case 25: sum += qlp_coeff[24] * (FLAC__int64)data[i-25]; /* Falls through. */
  ------------------
  |  Branch (850:4): [True: 23.9M, False: 1.14G]
  ------------------
  851|   213M|			case 24: sum += qlp_coeff[23] * (FLAC__int64)data[i-24]; /* Falls through. */
  ------------------
  |  Branch (851:4): [True: 24.1M, False: 1.14G]
  ------------------
  852|   237M|			case 23: sum += qlp_coeff[22] * (FLAC__int64)data[i-23]; /* Falls through. */
  ------------------
  |  Branch (852:4): [True: 24.2M, False: 1.14G]
  ------------------
  853|   261M|			case 22: sum += qlp_coeff[21] * (FLAC__int64)data[i-22]; /* Falls through. */
  ------------------
  |  Branch (853:4): [True: 24.1M, False: 1.14G]
  ------------------
  854|   285M|			case 21: sum += qlp_coeff[20] * (FLAC__int64)data[i-21]; /* Falls through. */
  ------------------
  |  Branch (854:4): [True: 24.3M, False: 1.14G]
  ------------------
  855|   311M|			case 20: sum += qlp_coeff[19] * (FLAC__int64)data[i-20]; /* Falls through. */
  ------------------
  |  Branch (855:4): [True: 26.0M, False: 1.14G]
  ------------------
  856|   339M|			case 19: sum += qlp_coeff[18] * (FLAC__int64)data[i-19]; /* Falls through. */
  ------------------
  |  Branch (856:4): [True: 27.5M, False: 1.14G]
  ------------------
  857|   366M|			case 18: sum += qlp_coeff[17] * (FLAC__int64)data[i-18]; /* Falls through. */
  ------------------
  |  Branch (857:4): [True: 27.3M, False: 1.14G]
  ------------------
  858|   394M|			case 17: sum += qlp_coeff[16] * (FLAC__int64)data[i-17]; /* Falls through. */
  ------------------
  |  Branch (858:4): [True: 27.3M, False: 1.14G]
  ------------------
  859|   422M|			case 16: sum += qlp_coeff[15] * (FLAC__int64)data[i-16]; /* Falls through. */
  ------------------
  |  Branch (859:4): [True: 27.9M, False: 1.14G]
  ------------------
  860|   450M|			case 15: sum += qlp_coeff[14] * (FLAC__int64)data[i-15]; /* Falls through. */
  ------------------
  |  Branch (860:4): [True: 27.9M, False: 1.14G]
  ------------------
  861|   486M|			case 14: sum += qlp_coeff[13] * (FLAC__int64)data[i-14]; /* Falls through. */
  ------------------
  |  Branch (861:4): [True: 36.1M, False: 1.13G]
  ------------------
  862|   524M|			case 13: sum += qlp_coeff[12] * (FLAC__int64)data[i-13]; /* Falls through. */
  ------------------
  |  Branch (862:4): [True: 38.0M, False: 1.13G]
  ------------------
  863|   562M|			case 12: sum += qlp_coeff[11] * (FLAC__int64)data[i-12]; /* Falls through. */
  ------------------
  |  Branch (863:4): [True: 37.9M, False: 1.13G]
  ------------------
  864|   600M|			case 11: sum += qlp_coeff[10] * (FLAC__int64)data[i-11]; /* Falls through. */
  ------------------
  |  Branch (864:4): [True: 38.6M, False: 1.13G]
  ------------------
  865|   640M|			case 10: sum += qlp_coeff[ 9] * (FLAC__int64)data[i-10]; /* Falls through. */
  ------------------
  |  Branch (865:4): [True: 39.1M, False: 1.13G]
  ------------------
  866|   681M|			case  9: sum += qlp_coeff[ 8] * (FLAC__int64)data[i- 9]; /* Falls through. */
  ------------------
  |  Branch (866:4): [True: 41.1M, False: 1.13G]
  ------------------
  867|   732M|			case  8: sum += qlp_coeff[ 7] * (FLAC__int64)data[i- 8]; /* Falls through. */
  ------------------
  |  Branch (867:4): [True: 51.6M, False: 1.12G]
  ------------------
  868|   791M|			case  7: sum += qlp_coeff[ 6] * (FLAC__int64)data[i- 7]; /* Falls through. */
  ------------------
  |  Branch (868:4): [True: 58.3M, False: 1.11G]
  ------------------
  869|   852M|			case  6: sum += qlp_coeff[ 5] * (FLAC__int64)data[i- 6]; /* Falls through. */
  ------------------
  |  Branch (869:4): [True: 61.6M, False: 1.11G]
  ------------------
  870|   916M|			case  5: sum += qlp_coeff[ 4] * (FLAC__int64)data[i- 5]; /* Falls through. */
  ------------------
  |  Branch (870:4): [True: 63.4M, False: 1.11G]
  ------------------
  871|   980M|			case  4: sum += qlp_coeff[ 3] * (FLAC__int64)data[i- 4]; /* Falls through. */
  ------------------
  |  Branch (871:4): [True: 64.3M, False: 1.10G]
  ------------------
  872|  1.04G|			case  3: sum += qlp_coeff[ 2] * (FLAC__int64)data[i- 3]; /* Falls through. */
  ------------------
  |  Branch (872:4): [True: 61.5M, False: 1.11G]
  ------------------
  873|  1.10G|			case  2: sum += qlp_coeff[ 1] * (FLAC__int64)data[i- 2]; /* Falls through. */
  ------------------
  |  Branch (873:4): [True: 63.3M, False: 1.11G]
  ------------------
  874|  1.18G|			case  1: sum += qlp_coeff[ 0] * (FLAC__int64)data[i- 1];
  ------------------
  |  Branch (874:4): [True: 74.4M, False: 1.09G]
  ------------------
  875|  1.17G|		}
  876|  1.17G|		residual_to_check = data[i] - (sum >> lp_quantization);
  877|       |		 /* residual must not be INT32_MIN because abs(INT32_MIN) is undefined */
  878|  1.17G|		if(residual_to_check <= INT32_MIN || residual_to_check > INT32_MAX)
  ------------------
  |  Branch (878:6): [True: 848k, False: 1.17G]
  |  Branch (878:40): [True: 1.10M, False: 1.17G]
  ------------------
  879|  1.90M|			return false;
  880|  1.17G|		else
  881|  1.17G|			residual[i] = residual_to_check;
  882|  1.17G|	}
  883|  10.0M|	return true;
  884|  11.8M|}
FLAC__lpc_compute_residual_from_qlp_coefficients_limit_residual_33bit:
  887|  1.13M|{
  888|  1.13M|	int i;
  889|  1.13M|	FLAC__int64 sum, residual_to_check;
  890|       |
  891|  1.13M|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  1.13M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.13M]
  |  |  ------------------
  ------------------
  892|  1.13M|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  1.13M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.13M]
  |  |  ------------------
  ------------------
  893|       |
  894|  75.4M|	for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (894:13): [True: 74.6M, False: 791k]
  ------------------
  895|  74.6M|		sum = 0;
  896|  74.6M|		switch(order) {
  ------------------
  |  Branch (896:10): [True: 74.8M, False: 18.4E]
  ------------------
  897|  1.95M|			case 32: sum += qlp_coeff[31] * data[i-32]; /* Falls through. */
  ------------------
  |  Branch (897:4): [True: 1.95M, False: 72.7M]
  ------------------
  898|  3.90M|			case 31: sum += qlp_coeff[30] * data[i-31]; /* Falls through. */
  ------------------
  |  Branch (898:4): [True: 1.95M, False: 72.7M]
  ------------------
  899|  5.89M|			case 30: sum += qlp_coeff[29] * data[i-30]; /* Falls through. */
  ------------------
  |  Branch (899:4): [True: 1.99M, False: 72.6M]
  ------------------
  900|  7.87M|			case 29: sum += qlp_coeff[28] * data[i-29]; /* Falls through. */
  ------------------
  |  Branch (900:4): [True: 1.98M, False: 72.6M]
  ------------------
  901|  9.83M|			case 28: sum += qlp_coeff[27] * data[i-28]; /* Falls through. */
  ------------------
  |  Branch (901:4): [True: 1.96M, False: 72.7M]
  ------------------
  902|  11.7M|			case 27: sum += qlp_coeff[26] * data[i-27]; /* Falls through. */
  ------------------
  |  Branch (902:4): [True: 1.94M, False: 72.7M]
  ------------------
  903|  13.7M|			case 26: sum += qlp_coeff[25] * data[i-26]; /* Falls through. */
  ------------------
  |  Branch (903:4): [True: 1.91M, False: 72.7M]
  ------------------
  904|  15.6M|			case 25: sum += qlp_coeff[24] * data[i-25]; /* Falls through. */
  ------------------
  |  Branch (904:4): [True: 1.91M, False: 72.7M]
  ------------------
  905|  17.6M|			case 24: sum += qlp_coeff[23] * data[i-24]; /* Falls through. */
  ------------------
  |  Branch (905:4): [True: 2.00M, False: 72.6M]
  ------------------
  906|  19.6M|			case 23: sum += qlp_coeff[22] * data[i-23]; /* Falls through. */
  ------------------
  |  Branch (906:4): [True: 2.04M, False: 72.6M]
  ------------------
  907|  21.6M|			case 22: sum += qlp_coeff[21] * data[i-22]; /* Falls through. */
  ------------------
  |  Branch (907:4): [True: 2.00M, False: 72.6M]
  ------------------
  908|  23.6M|			case 21: sum += qlp_coeff[20] * data[i-21]; /* Falls through. */
  ------------------
  |  Branch (908:4): [True: 1.93M, False: 72.7M]
  ------------------
  909|  25.4M|			case 20: sum += qlp_coeff[19] * data[i-20]; /* Falls through. */
  ------------------
  |  Branch (909:4): [True: 1.86M, False: 72.8M]
  ------------------
  910|  27.2M|			case 19: sum += qlp_coeff[18] * data[i-19]; /* Falls through. */
  ------------------
  |  Branch (910:4): [True: 1.80M, False: 72.8M]
  ------------------
  911|  29.0M|			case 18: sum += qlp_coeff[17] * data[i-18]; /* Falls through. */
  ------------------
  |  Branch (911:4): [True: 1.80M, False: 72.8M]
  ------------------
  912|  30.8M|			case 17: sum += qlp_coeff[16] * data[i-17]; /* Falls through. */
  ------------------
  |  Branch (912:4): [True: 1.79M, False: 72.8M]
  ------------------
  913|  32.7M|			case 16: sum += qlp_coeff[15] * data[i-16]; /* Falls through. */
  ------------------
  |  Branch (913:4): [True: 1.85M, False: 72.8M]
  ------------------
  914|  34.5M|			case 15: sum += qlp_coeff[14] * data[i-15]; /* Falls through. */
  ------------------
  |  Branch (914:4): [True: 1.81M, False: 72.8M]
  ------------------
  915|  36.9M|			case 14: sum += qlp_coeff[13] * data[i-14]; /* Falls through. */
  ------------------
  |  Branch (915:4): [True: 2.44M, False: 72.2M]
  ------------------
  916|  39.6M|			case 13: sum += qlp_coeff[12] * data[i-13]; /* Falls through. */
  ------------------
  |  Branch (916:4): [True: 2.66M, False: 72.0M]
  ------------------
  917|  42.2M|			case 12: sum += qlp_coeff[11] * data[i-12]; /* Falls through. */
  ------------------
  |  Branch (917:4): [True: 2.60M, False: 72.0M]
  ------------------
  918|  44.9M|			case 11: sum += qlp_coeff[10] * data[i-11]; /* Falls through. */
  ------------------
  |  Branch (918:4): [True: 2.65M, False: 72.0M]
  ------------------
  919|  47.6M|			case 10: sum += qlp_coeff[ 9] * data[i-10]; /* Falls through. */
  ------------------
  |  Branch (919:4): [True: 2.70M, False: 71.9M]
  ------------------
  920|  50.3M|			case  9: sum += qlp_coeff[ 8] * data[i- 9]; /* Falls through. */
  ------------------
  |  Branch (920:4): [True: 2.73M, False: 71.9M]
  ------------------
  921|  53.1M|			case  8: sum += qlp_coeff[ 7] * data[i- 8]; /* Falls through. */
  ------------------
  |  Branch (921:4): [True: 2.77M, False: 71.8M]
  ------------------
  922|  55.9M|			case  7: sum += qlp_coeff[ 6] * data[i- 7]; /* Falls through. */
  ------------------
  |  Branch (922:4): [True: 2.82M, False: 71.8M]
  ------------------
  923|  58.8M|			case  6: sum += qlp_coeff[ 5] * data[i- 6]; /* Falls through. */
  ------------------
  |  Branch (923:4): [True: 2.87M, False: 71.7M]
  ------------------
  924|  61.8M|			case  5: sum += qlp_coeff[ 4] * data[i- 5]; /* Falls through. */
  ------------------
  |  Branch (924:4): [True: 3.05M, False: 71.6M]
  ------------------
  925|  64.9M|			case  4: sum += qlp_coeff[ 3] * data[i- 4]; /* Falls through. */
  ------------------
  |  Branch (925:4): [True: 3.08M, False: 71.5M]
  ------------------
  926|  68.0M|			case  3: sum += qlp_coeff[ 2] * data[i- 3]; /* Falls through. */
  ------------------
  |  Branch (926:4): [True: 3.11M, False: 71.5M]
  ------------------
  927|  71.1M|			case  2: sum += qlp_coeff[ 1] * data[i- 2]; /* Falls through. */
  ------------------
  |  Branch (927:4): [True: 3.06M, False: 71.6M]
  ------------------
  928|  74.8M|			case  1: sum += qlp_coeff[ 0] * data[i- 1];
  ------------------
  |  Branch (928:4): [True: 3.67M, False: 70.9M]
  ------------------
  929|  74.6M|		}
  930|  74.6M|		residual_to_check = data[i] - (sum >> lp_quantization);
  931|       |		/* residual must not be INT32_MIN because abs(INT32_MIN) is undefined */
  932|  74.6M|		if(residual_to_check <= INT32_MIN || residual_to_check > INT32_MAX)
  ------------------
  |  Branch (932:6): [True: 195k, False: 74.4M]
  |  Branch (932:40): [True: 178k, False: 74.3M]
  ------------------
  933|   365k|			return false;
  934|  74.3M|		else
  935|  74.3M|			residual[i] = residual_to_check;
  936|  74.6M|	}
  937|   791k|	return true;
  938|  1.13M|}
FLAC__lpc_max_prediction_value_before_shift:
  943|  26.7M|{
  944|  26.7M|	FLAC__uint64 max_abs_sample_value = (FLAC__uint64)(1) << (subframe_bps - 1);
  945|  26.7M|	FLAC__uint32 abs_sum_of_qlp_coeff = 0;
  946|  26.7M|	uint32_t i;
  947|   245M|	for(i = 0; i < order; i++)
  ------------------
  |  Branch (947:13): [True: 218M, False: 26.7M]
  ------------------
  948|   218M|		abs_sum_of_qlp_coeff += abs(qlp_coeff[i]);
  949|  26.7M|	return max_abs_sample_value * abs_sum_of_qlp_coeff;
  950|  26.7M|}
FLAC__lpc_max_prediction_before_shift_bps:
  953|  6.95M|{
  954|       |	/* This used to be subframe_bps + qlp_coeff_precision + FLAC__bitmath_ilog2(order)
  955|       |	 * but that treats both the samples as well as the predictor as unknown. The
  956|       |	 * predictor is known however, so taking the log2 of the sum of the absolute values
  957|       |	 * of all coefficients is a more accurate representation of the predictor */
  958|  6.95M|	return FLAC__bitmath_silog2(FLAC__lpc_max_prediction_value_before_shift(subframe_bps, qlp_coeff, order));
  959|  6.95M|}
FLAC__lpc_max_residual_bps:
  963|  19.8M|{
  964|  19.8M|	FLAC__uint64 max_abs_sample_value = (FLAC__uint64)(1) << (subframe_bps - 1);
  965|  19.8M|	FLAC__uint64 max_prediction_value_after_shift = -1 * ((-1 * (FLAC__int64)FLAC__lpc_max_prediction_value_before_shift(subframe_bps, qlp_coeff, order)) >> lp_quantization);
  966|  19.8M|	FLAC__uint64 max_residual_value = max_abs_sample_value + max_prediction_value_after_shift;
  967|  19.8M|	return FLAC__bitmath_silog2(max_residual_value);
  968|  19.8M|}
FLAC__lpc_restore_signal:
 1019|  6.81k|{
 1020|  6.81k|	int i;
 1021|  6.81k|	FLAC__int32 sum;
 1022|       |
 1023|  6.81k|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  6.81k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 6.81k]
  |  |  ------------------
  ------------------
 1024|  6.81k|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  6.81k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 6.81k]
  |  |  ------------------
  ------------------
 1025|       |
 1026|       |	/*
 1027|       |	 * We do unique versions up to 12th order since that's the subset limit.
 1028|       |	 * Also they are roughly ordered to match frequency of occurrence to
 1029|       |	 * minimize branching.
 1030|       |	 */
 1031|  6.81k|	if(order <= 12) {
  ------------------
  |  Branch (1031:5): [True: 6.34k, False: 470]
  ------------------
 1032|  6.34k|		if(order > 8) {
  ------------------
  |  Branch (1032:6): [True: 1.13k, False: 5.21k]
  ------------------
 1033|  1.13k|			if(order > 10) {
  ------------------
  |  Branch (1033:7): [True: 618, False: 517]
  ------------------
 1034|    618|				if(order == 12) {
  ------------------
  |  Branch (1034:8): [True: 453, False: 165]
  ------------------
 1035|  72.4k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1035:17): [True: 71.9k, False: 453]
  ------------------
 1036|  71.9k|						sum = 0;
 1037|  71.9k|						sum += qlp_coeff[11] * data[i-12];
 1038|  71.9k|						sum += qlp_coeff[10] * data[i-11];
 1039|  71.9k|						sum += qlp_coeff[9] * data[i-10];
 1040|  71.9k|						sum += qlp_coeff[8] * data[i-9];
 1041|  71.9k|						sum += qlp_coeff[7] * data[i-8];
 1042|  71.9k|						sum += qlp_coeff[6] * data[i-7];
 1043|  71.9k|						sum += qlp_coeff[5] * data[i-6];
 1044|  71.9k|						sum += qlp_coeff[4] * data[i-5];
 1045|  71.9k|						sum += qlp_coeff[3] * data[i-4];
 1046|  71.9k|						sum += qlp_coeff[2] * data[i-3];
 1047|  71.9k|						sum += qlp_coeff[1] * data[i-2];
 1048|  71.9k|						sum += qlp_coeff[0] * data[i-1];
 1049|  71.9k|						data[i] = residual[i] + (sum >> lp_quantization);
 1050|  71.9k|					}
 1051|    453|				}
 1052|    165|				else { /* order == 11 */
 1053|  7.41k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1053:17): [True: 7.24k, False: 165]
  ------------------
 1054|  7.24k|						sum = 0;
 1055|  7.24k|						sum += qlp_coeff[10] * data[i-11];
 1056|  7.24k|						sum += qlp_coeff[9] * data[i-10];
 1057|  7.24k|						sum += qlp_coeff[8] * data[i-9];
 1058|  7.24k|						sum += qlp_coeff[7] * data[i-8];
 1059|  7.24k|						sum += qlp_coeff[6] * data[i-7];
 1060|  7.24k|						sum += qlp_coeff[5] * data[i-6];
 1061|  7.24k|						sum += qlp_coeff[4] * data[i-5];
 1062|  7.24k|						sum += qlp_coeff[3] * data[i-4];
 1063|  7.24k|						sum += qlp_coeff[2] * data[i-3];
 1064|  7.24k|						sum += qlp_coeff[1] * data[i-2];
 1065|  7.24k|						sum += qlp_coeff[0] * data[i-1];
 1066|  7.24k|						data[i] = residual[i] + (sum >> lp_quantization);
 1067|  7.24k|					}
 1068|    165|				}
 1069|    618|			}
 1070|    517|			else {
 1071|    517|				if(order == 10) {
  ------------------
  |  Branch (1071:8): [True: 396, False: 121]
  ------------------
 1072|  56.7k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1072:17): [True: 56.3k, False: 396]
  ------------------
 1073|  56.3k|						sum = 0;
 1074|  56.3k|						sum += qlp_coeff[9] * data[i-10];
 1075|  56.3k|						sum += qlp_coeff[8] * data[i-9];
 1076|  56.3k|						sum += qlp_coeff[7] * data[i-8];
 1077|  56.3k|						sum += qlp_coeff[6] * data[i-7];
 1078|  56.3k|						sum += qlp_coeff[5] * data[i-6];
 1079|  56.3k|						sum += qlp_coeff[4] * data[i-5];
 1080|  56.3k|						sum += qlp_coeff[3] * data[i-4];
 1081|  56.3k|						sum += qlp_coeff[2] * data[i-3];
 1082|  56.3k|						sum += qlp_coeff[1] * data[i-2];
 1083|  56.3k|						sum += qlp_coeff[0] * data[i-1];
 1084|  56.3k|						data[i] = residual[i] + (sum >> lp_quantization);
 1085|  56.3k|					}
 1086|    396|				}
 1087|    121|				else { /* order == 9 */
 1088|  52.4k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1088:17): [True: 52.3k, False: 121]
  ------------------
 1089|  52.3k|						sum = 0;
 1090|  52.3k|						sum += qlp_coeff[8] * data[i-9];
 1091|  52.3k|						sum += qlp_coeff[7] * data[i-8];
 1092|  52.3k|						sum += qlp_coeff[6] * data[i-7];
 1093|  52.3k|						sum += qlp_coeff[5] * data[i-6];
 1094|  52.3k|						sum += qlp_coeff[4] * data[i-5];
 1095|  52.3k|						sum += qlp_coeff[3] * data[i-4];
 1096|  52.3k|						sum += qlp_coeff[2] * data[i-3];
 1097|  52.3k|						sum += qlp_coeff[1] * data[i-2];
 1098|  52.3k|						sum += qlp_coeff[0] * data[i-1];
 1099|  52.3k|						data[i] = residual[i] + (sum >> lp_quantization);
 1100|  52.3k|					}
 1101|    121|				}
 1102|    517|			}
 1103|  1.13k|		}
 1104|  5.21k|		else if(order > 4) {
  ------------------
  |  Branch (1104:11): [True: 1.37k, False: 3.83k]
  ------------------
 1105|  1.37k|			if(order > 6) {
  ------------------
  |  Branch (1105:7): [True: 687, False: 691]
  ------------------
 1106|    687|				if(order == 8) {
  ------------------
  |  Branch (1106:8): [True: 371, False: 316]
  ------------------
 1107|  38.0k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1107:17): [True: 37.6k, False: 371]
  ------------------
 1108|  37.6k|						sum = 0;
 1109|  37.6k|						sum += qlp_coeff[7] * data[i-8];
 1110|  37.6k|						sum += qlp_coeff[6] * data[i-7];
 1111|  37.6k|						sum += qlp_coeff[5] * data[i-6];
 1112|  37.6k|						sum += qlp_coeff[4] * data[i-5];
 1113|  37.6k|						sum += qlp_coeff[3] * data[i-4];
 1114|  37.6k|						sum += qlp_coeff[2] * data[i-3];
 1115|  37.6k|						sum += qlp_coeff[1] * data[i-2];
 1116|  37.6k|						sum += qlp_coeff[0] * data[i-1];
 1117|  37.6k|						data[i] = residual[i] + (sum >> lp_quantization);
 1118|  37.6k|					}
 1119|    371|				}
 1120|    316|				else { /* order == 7 */
 1121|   174k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1121:17): [True: 174k, False: 316]
  ------------------
 1122|   174k|						sum = 0;
 1123|   174k|						sum += qlp_coeff[6] * data[i-7];
 1124|   174k|						sum += qlp_coeff[5] * data[i-6];
 1125|   174k|						sum += qlp_coeff[4] * data[i-5];
 1126|   174k|						sum += qlp_coeff[3] * data[i-4];
 1127|   174k|						sum += qlp_coeff[2] * data[i-3];
 1128|   174k|						sum += qlp_coeff[1] * data[i-2];
 1129|   174k|						sum += qlp_coeff[0] * data[i-1];
 1130|   174k|						data[i] = residual[i] + (sum >> lp_quantization);
 1131|   174k|					}
 1132|    316|				}
 1133|    687|			}
 1134|    691|			else {
 1135|    691|				if(order == 6) {
  ------------------
  |  Branch (1135:8): [True: 367, False: 324]
  ------------------
 1136|   141k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1136:17): [True: 141k, False: 367]
  ------------------
 1137|   141k|						sum = 0;
 1138|   141k|						sum += qlp_coeff[5] * data[i-6];
 1139|   141k|						sum += qlp_coeff[4] * data[i-5];
 1140|   141k|						sum += qlp_coeff[3] * data[i-4];
 1141|   141k|						sum += qlp_coeff[2] * data[i-3];
 1142|   141k|						sum += qlp_coeff[1] * data[i-2];
 1143|   141k|						sum += qlp_coeff[0] * data[i-1];
 1144|   141k|						data[i] = residual[i] + (sum >> lp_quantization);
 1145|   141k|					}
 1146|    367|				}
 1147|    324|				else { /* order == 5 */
 1148|   137k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1148:17): [True: 137k, False: 324]
  ------------------
 1149|   137k|						sum = 0;
 1150|   137k|						sum += qlp_coeff[4] * data[i-5];
 1151|   137k|						sum += qlp_coeff[3] * data[i-4];
 1152|   137k|						sum += qlp_coeff[2] * data[i-3];
 1153|   137k|						sum += qlp_coeff[1] * data[i-2];
 1154|   137k|						sum += qlp_coeff[0] * data[i-1];
 1155|   137k|						data[i] = residual[i] + (sum >> lp_quantization);
 1156|   137k|					}
 1157|    324|				}
 1158|    691|			}
 1159|  1.37k|		}
 1160|  3.83k|		else {
 1161|  3.83k|			if(order > 2) {
  ------------------
  |  Branch (1161:7): [True: 1.48k, False: 2.35k]
  ------------------
 1162|  1.48k|				if(order == 4) {
  ------------------
  |  Branch (1162:8): [True: 473, False: 1.00k]
  ------------------
 1163|  42.6k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1163:17): [True: 42.1k, False: 473]
  ------------------
 1164|  42.1k|						sum = 0;
 1165|  42.1k|						sum += qlp_coeff[3] * data[i-4];
 1166|  42.1k|						sum += qlp_coeff[2] * data[i-3];
 1167|  42.1k|						sum += qlp_coeff[1] * data[i-2];
 1168|  42.1k|						sum += qlp_coeff[0] * data[i-1];
 1169|  42.1k|						data[i] = residual[i] + (sum >> lp_quantization);
 1170|  42.1k|					}
 1171|    473|				}
 1172|  1.00k|				else { /* order == 3 */
 1173|   252k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1173:17): [True: 251k, False: 1.00k]
  ------------------
 1174|   251k|						sum = 0;
 1175|   251k|						sum += qlp_coeff[2] * data[i-3];
 1176|   251k|						sum += qlp_coeff[1] * data[i-2];
 1177|   251k|						sum += qlp_coeff[0] * data[i-1];
 1178|   251k|						data[i] = residual[i] + (sum >> lp_quantization);
 1179|   251k|					}
 1180|  1.00k|				}
 1181|  1.48k|			}
 1182|  2.35k|			else {
 1183|  2.35k|				if(order == 2) {
  ------------------
  |  Branch (1183:8): [True: 980, False: 1.37k]
  ------------------
 1184|   385k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1184:17): [True: 384k, False: 980]
  ------------------
 1185|   384k|						sum = 0;
 1186|   384k|						sum += qlp_coeff[1] * data[i-2];
 1187|   384k|						sum += qlp_coeff[0] * data[i-1];
 1188|   384k|						data[i] = residual[i] + (sum >> lp_quantization);
 1189|   384k|					}
 1190|    980|				}
 1191|  1.37k|				else { /* order == 1 */
 1192|  62.2k|					for(i = 0; i < (int)data_len; i++)
  ------------------
  |  Branch (1192:17): [True: 60.8k, False: 1.37k]
  ------------------
 1193|  60.8k|						data[i] = residual[i] + ((qlp_coeff[0] * data[i-1]) >> lp_quantization);
 1194|  1.37k|				}
 1195|  2.35k|			}
 1196|  3.83k|		}
 1197|  6.34k|	}
 1198|    470|	else { /* order > 12 */
 1199|   392k|		for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1199:14): [True: 392k, False: 470]
  ------------------
 1200|   392k|			sum = 0;
 1201|   392k|			switch(order) {
  ------------------
  |  Branch (1201:11): [True: 392k, False: 0]
  ------------------
 1202|   107k|				case 32: sum += qlp_coeff[31] * data[i-32]; /* Falls through. */
  ------------------
  |  Branch (1202:5): [True: 107k, False: 284k]
  ------------------
 1203|   110k|				case 31: sum += qlp_coeff[30] * data[i-31]; /* Falls through. */
  ------------------
  |  Branch (1203:5): [True: 2.48k, False: 389k]
  ------------------
 1204|   111k|				case 30: sum += qlp_coeff[29] * data[i-30]; /* Falls through. */
  ------------------
  |  Branch (1204:5): [True: 1.25k, False: 391k]
  ------------------
 1205|   114k|				case 29: sum += qlp_coeff[28] * data[i-29]; /* Falls through. */
  ------------------
  |  Branch (1205:5): [True: 3.45k, False: 388k]
  ------------------
 1206|   115k|				case 28: sum += qlp_coeff[27] * data[i-28]; /* Falls through. */
  ------------------
  |  Branch (1206:5): [True: 1.22k, False: 391k]
  ------------------
 1207|   121k|				case 27: sum += qlp_coeff[26] * data[i-27]; /* Falls through. */
  ------------------
  |  Branch (1207:5): [True: 5.80k, False: 386k]
  ------------------
 1208|   132k|				case 26: sum += qlp_coeff[25] * data[i-26]; /* Falls through. */
  ------------------
  |  Branch (1208:5): [True: 10.8k, False: 381k]
  ------------------
 1209|   134k|				case 25: sum += qlp_coeff[24] * data[i-25]; /* Falls through. */
  ------------------
  |  Branch (1209:5): [True: 1.80k, False: 390k]
  ------------------
 1210|   137k|				case 24: sum += qlp_coeff[23] * data[i-24]; /* Falls through. */
  ------------------
  |  Branch (1210:5): [True: 3.43k, False: 388k]
  ------------------
 1211|   147k|				case 23: sum += qlp_coeff[22] * data[i-23]; /* Falls through. */
  ------------------
  |  Branch (1211:5): [True: 9.52k, False: 382k]
  ------------------
 1212|   153k|				case 22: sum += qlp_coeff[21] * data[i-22]; /* Falls through. */
  ------------------
  |  Branch (1212:5): [True: 6.50k, False: 385k]
  ------------------
 1213|   159k|				case 21: sum += qlp_coeff[20] * data[i-21]; /* Falls through. */
  ------------------
  |  Branch (1213:5): [True: 5.26k, False: 387k]
  ------------------
 1214|   168k|				case 20: sum += qlp_coeff[19] * data[i-20]; /* Falls through. */
  ------------------
  |  Branch (1214:5): [True: 9.31k, False: 383k]
  ------------------
 1215|   173k|				case 19: sum += qlp_coeff[18] * data[i-19]; /* Falls through. */
  ------------------
  |  Branch (1215:5): [True: 5.04k, False: 387k]
  ------------------
 1216|   185k|				case 18: sum += qlp_coeff[17] * data[i-18]; /* Falls through. */
  ------------------
  |  Branch (1216:5): [True: 11.7k, False: 380k]
  ------------------
 1217|   257k|				case 17: sum += qlp_coeff[16] * data[i-17]; /* Falls through. */
  ------------------
  |  Branch (1217:5): [True: 72.5k, False: 319k]
  ------------------
 1218|   279k|				case 16: sum += qlp_coeff[15] * data[i-16]; /* Falls through. */
  ------------------
  |  Branch (1218:5): [True: 21.2k, False: 371k]
  ------------------
 1219|   288k|				case 15: sum += qlp_coeff[14] * data[i-15]; /* Falls through. */
  ------------------
  |  Branch (1219:5): [True: 9.70k, False: 382k]
  ------------------
 1220|   299k|				case 14: sum += qlp_coeff[13] * data[i-14]; /* Falls through. */
  ------------------
  |  Branch (1220:5): [True: 11.1k, False: 381k]
  ------------------
 1221|   392k|				case 13: sum += qlp_coeff[12] * data[i-13];
  ------------------
  |  Branch (1221:5): [True: 92.4k, False: 299k]
  ------------------
 1222|   392k|				         sum += qlp_coeff[11] * data[i-12];
 1223|   392k|				         sum += qlp_coeff[10] * data[i-11];
 1224|   392k|				         sum += qlp_coeff[ 9] * data[i-10];
 1225|   392k|				         sum += qlp_coeff[ 8] * data[i- 9];
 1226|   392k|				         sum += qlp_coeff[ 7] * data[i- 8];
 1227|   392k|				         sum += qlp_coeff[ 6] * data[i- 7];
 1228|   392k|				         sum += qlp_coeff[ 5] * data[i- 6];
 1229|   392k|				         sum += qlp_coeff[ 4] * data[i- 5];
 1230|   392k|				         sum += qlp_coeff[ 3] * data[i- 4];
 1231|   392k|				         sum += qlp_coeff[ 2] * data[i- 3];
 1232|   392k|				         sum += qlp_coeff[ 1] * data[i- 2];
 1233|   392k|				         sum += qlp_coeff[ 0] * data[i- 1];
 1234|   392k|			}
 1235|   392k|			data[i] = residual[i] + (sum >> lp_quantization);
 1236|   392k|		}
 1237|    470|	}
 1238|  6.81k|}
FLAC__lpc_restore_signal_wide:
 1271|  10.2k|{
 1272|  10.2k|	int i;
 1273|  10.2k|	FLAC__int64 sum;
 1274|       |
 1275|  10.2k|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  10.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 10.2k]
  |  |  ------------------
  ------------------
 1276|  10.2k|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  10.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 10.2k]
  |  |  ------------------
  ------------------
 1277|       |
 1278|       |	/*
 1279|       |	 * We do unique versions up to 12th order since that's the subset limit.
 1280|       |	 * Also they are roughly ordered to match frequency of occurrence to
 1281|       |	 * minimize branching.
 1282|       |	 */
 1283|  10.2k|	if(order <= 12) {
  ------------------
  |  Branch (1283:5): [True: 9.56k, False: 657]
  ------------------
 1284|  9.56k|		if(order > 8) {
  ------------------
  |  Branch (1284:6): [True: 1.81k, False: 7.74k]
  ------------------
 1285|  1.81k|			if(order > 10) {
  ------------------
  |  Branch (1285:7): [True: 641, False: 1.17k]
  ------------------
 1286|    641|				if(order == 12) {
  ------------------
  |  Branch (1286:8): [True: 334, False: 307]
  ------------------
 1287|   148k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1287:17): [True: 148k, False: 334]
  ------------------
 1288|   148k|						sum = 0;
 1289|   148k|						sum += qlp_coeff[11] * (FLAC__int64)data[i-12];
 1290|   148k|						sum += qlp_coeff[10] * (FLAC__int64)data[i-11];
 1291|   148k|						sum += qlp_coeff[9] * (FLAC__int64)data[i-10];
 1292|   148k|						sum += qlp_coeff[8] * (FLAC__int64)data[i-9];
 1293|   148k|						sum += qlp_coeff[7] * (FLAC__int64)data[i-8];
 1294|   148k|						sum += qlp_coeff[6] * (FLAC__int64)data[i-7];
 1295|   148k|						sum += qlp_coeff[5] * (FLAC__int64)data[i-6];
 1296|   148k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1297|   148k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1298|   148k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1299|   148k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1300|   148k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1301|   148k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1302|   148k|					}
 1303|    334|				}
 1304|    307|				else { /* order == 11 */
 1305|   126k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1305:17): [True: 126k, False: 307]
  ------------------
 1306|   126k|						sum = 0;
 1307|   126k|						sum += qlp_coeff[10] * (FLAC__int64)data[i-11];
 1308|   126k|						sum += qlp_coeff[9] * (FLAC__int64)data[i-10];
 1309|   126k|						sum += qlp_coeff[8] * (FLAC__int64)data[i-9];
 1310|   126k|						sum += qlp_coeff[7] * (FLAC__int64)data[i-8];
 1311|   126k|						sum += qlp_coeff[6] * (FLAC__int64)data[i-7];
 1312|   126k|						sum += qlp_coeff[5] * (FLAC__int64)data[i-6];
 1313|   126k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1314|   126k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1315|   126k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1316|   126k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1317|   126k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1318|   126k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1319|   126k|					}
 1320|    307|				}
 1321|    641|			}
 1322|  1.17k|			else {
 1323|  1.17k|				if(order == 10) {
  ------------------
  |  Branch (1323:8): [True: 411, False: 764]
  ------------------
 1324|  38.6k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1324:17): [True: 38.2k, False: 411]
  ------------------
 1325|  38.2k|						sum = 0;
 1326|  38.2k|						sum += qlp_coeff[9] * (FLAC__int64)data[i-10];
 1327|  38.2k|						sum += qlp_coeff[8] * (FLAC__int64)data[i-9];
 1328|  38.2k|						sum += qlp_coeff[7] * (FLAC__int64)data[i-8];
 1329|  38.2k|						sum += qlp_coeff[6] * (FLAC__int64)data[i-7];
 1330|  38.2k|						sum += qlp_coeff[5] * (FLAC__int64)data[i-6];
 1331|  38.2k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1332|  38.2k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1333|  38.2k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1334|  38.2k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1335|  38.2k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1336|  38.2k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1337|  38.2k|					}
 1338|    411|				}
 1339|    764|				else { /* order == 9 */
 1340|  61.6k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1340:17): [True: 60.8k, False: 764]
  ------------------
 1341|  60.8k|						sum = 0;
 1342|  60.8k|						sum += qlp_coeff[8] * (FLAC__int64)data[i-9];
 1343|  60.8k|						sum += qlp_coeff[7] * (FLAC__int64)data[i-8];
 1344|  60.8k|						sum += qlp_coeff[6] * (FLAC__int64)data[i-7];
 1345|  60.8k|						sum += qlp_coeff[5] * (FLAC__int64)data[i-6];
 1346|  60.8k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1347|  60.8k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1348|  60.8k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1349|  60.8k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1350|  60.8k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1351|  60.8k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1352|  60.8k|					}
 1353|    764|				}
 1354|  1.17k|			}
 1355|  1.81k|		}
 1356|  7.74k|		else if(order > 4) {
  ------------------
  |  Branch (1356:11): [True: 2.27k, False: 5.46k]
  ------------------
 1357|  2.27k|			if(order > 6) {
  ------------------
  |  Branch (1357:7): [True: 1.05k, False: 1.21k]
  ------------------
 1358|  1.05k|				if(order == 8) {
  ------------------
  |  Branch (1358:8): [True: 440, False: 618]
  ------------------
 1359|   263k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1359:17): [True: 262k, False: 440]
  ------------------
 1360|   262k|						sum = 0;
 1361|   262k|						sum += qlp_coeff[7] * (FLAC__int64)data[i-8];
 1362|   262k|						sum += qlp_coeff[6] * (FLAC__int64)data[i-7];
 1363|   262k|						sum += qlp_coeff[5] * (FLAC__int64)data[i-6];
 1364|   262k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1365|   262k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1366|   262k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1367|   262k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1368|   262k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1369|   262k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1370|   262k|					}
 1371|    440|				}
 1372|    618|				else { /* order == 7 */
 1373|   236k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1373:17): [True: 235k, False: 618]
  ------------------
 1374|   235k|						sum = 0;
 1375|   235k|						sum += qlp_coeff[6] * (FLAC__int64)data[i-7];
 1376|   235k|						sum += qlp_coeff[5] * (FLAC__int64)data[i-6];
 1377|   235k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1378|   235k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1379|   235k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1380|   235k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1381|   235k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1382|   235k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1383|   235k|					}
 1384|    618|				}
 1385|  1.05k|			}
 1386|  1.21k|			else {
 1387|  1.21k|				if(order == 6) {
  ------------------
  |  Branch (1387:8): [True: 634, False: 584]
  ------------------
 1388|   266k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1388:17): [True: 265k, False: 634]
  ------------------
 1389|   265k|						sum = 0;
 1390|   265k|						sum += qlp_coeff[5] * (FLAC__int64)data[i-6];
 1391|   265k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1392|   265k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1393|   265k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1394|   265k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1395|   265k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1396|   265k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1397|   265k|					}
 1398|    634|				}
 1399|    584|				else { /* order == 5 */
 1400|  71.3k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1400:17): [True: 70.7k, False: 584]
  ------------------
 1401|  70.7k|						sum = 0;
 1402|  70.7k|						sum += qlp_coeff[4] * (FLAC__int64)data[i-5];
 1403|  70.7k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1404|  70.7k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1405|  70.7k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1406|  70.7k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1407|  70.7k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1408|  70.7k|					}
 1409|    584|				}
 1410|  1.21k|			}
 1411|  2.27k|		}
 1412|  5.46k|		else {
 1413|  5.46k|			if(order > 2) {
  ------------------
  |  Branch (1413:7): [True: 1.83k, False: 3.63k]
  ------------------
 1414|  1.83k|				if(order == 4) {
  ------------------
  |  Branch (1414:8): [True: 814, False: 1.01k]
  ------------------
 1415|   181k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1415:17): [True: 180k, False: 814]
  ------------------
 1416|   180k|						sum = 0;
 1417|   180k|						sum += qlp_coeff[3] * (FLAC__int64)data[i-4];
 1418|   180k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1419|   180k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1420|   180k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1421|   180k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1422|   180k|					}
 1423|    814|				}
 1424|  1.01k|				else { /* order == 3 */
 1425|   218k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1425:17): [True: 217k, False: 1.01k]
  ------------------
 1426|   217k|						sum = 0;
 1427|   217k|						sum += qlp_coeff[2] * (FLAC__int64)data[i-3];
 1428|   217k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1429|   217k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1430|   217k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1431|   217k|					}
 1432|  1.01k|				}
 1433|  1.83k|			}
 1434|  3.63k|			else {
 1435|  3.63k|				if(order == 2) {
  ------------------
  |  Branch (1435:8): [True: 2.41k, False: 1.22k]
  ------------------
 1436|   371k|					for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1436:17): [True: 369k, False: 2.41k]
  ------------------
 1437|   369k|						sum = 0;
 1438|   369k|						sum += qlp_coeff[1] * (FLAC__int64)data[i-2];
 1439|   369k|						sum += qlp_coeff[0] * (FLAC__int64)data[i-1];
 1440|   369k|						data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1441|   369k|					}
 1442|  2.41k|				}
 1443|  1.22k|				else { /* order == 1 */
 1444|   530k|					for(i = 0; i < (int)data_len; i++)
  ------------------
  |  Branch (1444:17): [True: 529k, False: 1.22k]
  ------------------
 1445|   529k|						data[i] = (FLAC__int32)(residual[i] + ((qlp_coeff[0] * (FLAC__int64)data[i-1]) >> lp_quantization));
 1446|  1.22k|				}
 1447|  3.63k|			}
 1448|  5.46k|		}
 1449|  9.56k|	}
 1450|    657|	else { /* order > 12 */
 1451|  3.68M|		for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1451:14): [True: 3.68M, False: 657]
  ------------------
 1452|  3.68M|			sum = 0;
 1453|  3.68M|			switch(order) {
  ------------------
  |  Branch (1453:11): [True: 3.68M, False: 0]
  ------------------
 1454|   168k|				case 32: sum += qlp_coeff[31] * (FLAC__int64)data[i-32]; /* Falls through. */
  ------------------
  |  Branch (1454:5): [True: 168k, False: 3.51M]
  ------------------
 1455|   171k|				case 31: sum += qlp_coeff[30] * (FLAC__int64)data[i-31]; /* Falls through. */
  ------------------
  |  Branch (1455:5): [True: 3.75k, False: 3.68M]
  ------------------
 1456|   196k|				case 30: sum += qlp_coeff[29] * (FLAC__int64)data[i-30]; /* Falls through. */
  ------------------
  |  Branch (1456:5): [True: 24.0k, False: 3.65M]
  ------------------
 1457|   202k|				case 29: sum += qlp_coeff[28] * (FLAC__int64)data[i-29]; /* Falls through. */
  ------------------
  |  Branch (1457:5): [True: 6.46k, False: 3.67M]
  ------------------
 1458|   221k|				case 28: sum += qlp_coeff[27] * (FLAC__int64)data[i-28]; /* Falls through. */
  ------------------
  |  Branch (1458:5): [True: 19.2k, False: 3.66M]
  ------------------
 1459|   256k|				case 27: sum += qlp_coeff[26] * (FLAC__int64)data[i-27]; /* Falls through. */
  ------------------
  |  Branch (1459:5): [True: 34.7k, False: 3.64M]
  ------------------
 1460|   259k|				case 26: sum += qlp_coeff[25] * (FLAC__int64)data[i-26]; /* Falls through. */
  ------------------
  |  Branch (1460:5): [True: 2.56k, False: 3.68M]
  ------------------
 1461|   260k|				case 25: sum += qlp_coeff[24] * (FLAC__int64)data[i-25]; /* Falls through. */
  ------------------
  |  Branch (1461:5): [True: 1.57k, False: 3.68M]
  ------------------
 1462|   262k|				case 24: sum += qlp_coeff[23] * (FLAC__int64)data[i-24]; /* Falls through. */
  ------------------
  |  Branch (1462:5): [True: 2.05k, False: 3.68M]
  ------------------
 1463|   319k|				case 23: sum += qlp_coeff[22] * (FLAC__int64)data[i-23]; /* Falls through. */
  ------------------
  |  Branch (1463:5): [True: 56.7k, False: 3.62M]
  ------------------
 1464|   321k|				case 22: sum += qlp_coeff[21] * (FLAC__int64)data[i-22]; /* Falls through. */
  ------------------
  |  Branch (1464:5): [True: 2.44k, False: 3.68M]
  ------------------
 1465|   327k|				case 21: sum += qlp_coeff[20] * (FLAC__int64)data[i-21]; /* Falls through. */
  ------------------
  |  Branch (1465:5): [True: 5.05k, False: 3.67M]
  ------------------
 1466|   328k|				case 20: sum += qlp_coeff[19] * (FLAC__int64)data[i-20]; /* Falls through. */
  ------------------
  |  Branch (1466:5): [True: 1.02k, False: 3.68M]
  ------------------
 1467|   350k|				case 19: sum += qlp_coeff[18] * (FLAC__int64)data[i-19]; /* Falls through. */
  ------------------
  |  Branch (1467:5): [True: 22.3k, False: 3.66M]
  ------------------
 1468|   356k|				case 18: sum += qlp_coeff[17] * (FLAC__int64)data[i-18]; /* Falls through. */
  ------------------
  |  Branch (1468:5): [True: 5.63k, False: 3.67M]
  ------------------
 1469|   359k|				case 17: sum += qlp_coeff[16] * (FLAC__int64)data[i-17]; /* Falls through. */
  ------------------
  |  Branch (1469:5): [True: 3.16k, False: 3.68M]
  ------------------
 1470|   374k|				case 16: sum += qlp_coeff[15] * (FLAC__int64)data[i-16]; /* Falls through. */
  ------------------
  |  Branch (1470:5): [True: 15.4k, False: 3.66M]
  ------------------
 1471|   378k|				case 15: sum += qlp_coeff[14] * (FLAC__int64)data[i-15]; /* Falls through. */
  ------------------
  |  Branch (1471:5): [True: 3.90k, False: 3.68M]
  ------------------
 1472|  3.17M|				case 14: sum += qlp_coeff[13] * (FLAC__int64)data[i-14]; /* Falls through. */
  ------------------
  |  Branch (1472:5): [True: 2.79M, False: 890k]
  ------------------
 1473|  3.68M|				case 13: sum += qlp_coeff[12] * (FLAC__int64)data[i-13];
  ------------------
  |  Branch (1473:5): [True: 511k, False: 3.17M]
  ------------------
 1474|  3.68M|				         sum += qlp_coeff[11] * (FLAC__int64)data[i-12];
 1475|  3.68M|				         sum += qlp_coeff[10] * (FLAC__int64)data[i-11];
 1476|  3.68M|				         sum += qlp_coeff[ 9] * (FLAC__int64)data[i-10];
 1477|  3.68M|				         sum += qlp_coeff[ 8] * (FLAC__int64)data[i- 9];
 1478|  3.68M|				         sum += qlp_coeff[ 7] * (FLAC__int64)data[i- 8];
 1479|  3.68M|				         sum += qlp_coeff[ 6] * (FLAC__int64)data[i- 7];
 1480|  3.68M|				         sum += qlp_coeff[ 5] * (FLAC__int64)data[i- 6];
 1481|  3.68M|				         sum += qlp_coeff[ 4] * (FLAC__int64)data[i- 5];
 1482|  3.68M|				         sum += qlp_coeff[ 3] * (FLAC__int64)data[i- 4];
 1483|  3.68M|				         sum += qlp_coeff[ 2] * (FLAC__int64)data[i- 3];
 1484|  3.68M|				         sum += qlp_coeff[ 1] * (FLAC__int64)data[i- 2];
 1485|  3.68M|				         sum += qlp_coeff[ 0] * (FLAC__int64)data[i- 1];
 1486|  3.68M|			}
 1487|  3.68M|			data[i] = (FLAC__int32) (residual[i] + (sum >> lp_quantization));
 1488|  3.68M|		}
 1489|    657|	}
 1490|  10.2k|}
FLAC__lpc_restore_signal_wide_33bit:
 1526|  1.52k|{
 1527|  1.52k|	int i;
 1528|  1.52k|	FLAC__int64 sum;
 1529|       |
 1530|  1.52k|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  1.52k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.52k]
  |  |  ------------------
  ------------------
 1531|  1.52k|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  1.52k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.52k]
  |  |  ------------------
  ------------------
 1532|       |
 1533|   129k|	for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1533:13): [True: 128k, False: 1.52k]
  ------------------
 1534|   128k|		sum = 0;
 1535|   128k|		switch(order) {
  ------------------
  |  Branch (1535:10): [True: 128k, False: 0]
  ------------------
 1536|    972|			case 32: sum += qlp_coeff[31] * data[i-32]; /* Falls through. */
  ------------------
  |  Branch (1536:4): [True: 972, False: 127k]
  ------------------
 1537|  1.93k|			case 31: sum += qlp_coeff[30] * data[i-31]; /* Falls through. */
  ------------------
  |  Branch (1537:4): [True: 965, False: 127k]
  ------------------
 1538|  11.5k|			case 30: sum += qlp_coeff[29] * data[i-30]; /* Falls through. */
  ------------------
  |  Branch (1538:4): [True: 9.56k, False: 118k]
  ------------------
 1539|  12.4k|			case 29: sum += qlp_coeff[28] * data[i-29]; /* Falls through. */
  ------------------
  |  Branch (1539:4): [True: 966, False: 127k]
  ------------------
 1540|  13.4k|			case 28: sum += qlp_coeff[27] * data[i-28]; /* Falls through. */
  ------------------
  |  Branch (1540:4): [True: 965, False: 127k]
  ------------------
 1541|  14.4k|			case 27: sum += qlp_coeff[26] * data[i-27]; /* Falls through. */
  ------------------
  |  Branch (1541:4): [True: 968, False: 127k]
  ------------------
 1542|  15.4k|			case 26: sum += qlp_coeff[25] * data[i-26]; /* Falls through. */
  ------------------
  |  Branch (1542:4): [True: 1.06k, False: 127k]
  ------------------
 1543|  21.7k|			case 25: sum += qlp_coeff[24] * data[i-25]; /* Falls through. */
  ------------------
  |  Branch (1543:4): [True: 6.31k, False: 122k]
  ------------------
 1544|  22.9k|			case 24: sum += qlp_coeff[23] * data[i-24]; /* Falls through. */
  ------------------
  |  Branch (1544:4): [True: 1.20k, False: 127k]
  ------------------
 1545|  23.9k|			case 23: sum += qlp_coeff[22] * data[i-23]; /* Falls through. */
  ------------------
  |  Branch (1545:4): [True: 963, False: 127k]
  ------------------
 1546|  24.9k|			case 22: sum += qlp_coeff[21] * data[i-22]; /* Falls through. */
  ------------------
  |  Branch (1546:4): [True: 969, False: 127k]
  ------------------
 1547|  25.8k|			case 21: sum += qlp_coeff[20] * data[i-21]; /* Falls through. */
  ------------------
  |  Branch (1547:4): [True: 963, False: 127k]
  ------------------
 1548|  32.2k|			case 20: sum += qlp_coeff[19] * data[i-20]; /* Falls through. */
  ------------------
  |  Branch (1548:4): [True: 6.33k, False: 122k]
  ------------------
 1549|  33.1k|			case 19: sum += qlp_coeff[18] * data[i-19]; /* Falls through. */
  ------------------
  |  Branch (1549:4): [True: 962, False: 127k]
  ------------------
 1550|  34.3k|			case 18: sum += qlp_coeff[17] * data[i-18]; /* Falls through. */
  ------------------
  |  Branch (1550:4): [True: 1.16k, False: 127k]
  ------------------
 1551|  35.3k|			case 17: sum += qlp_coeff[16] * data[i-17]; /* Falls through. */
  ------------------
  |  Branch (1551:4): [True: 963, False: 127k]
  ------------------
 1552|  36.2k|			case 16: sum += qlp_coeff[15] * data[i-16]; /* Falls through. */
  ------------------
  |  Branch (1552:4): [True: 962, False: 127k]
  ------------------
 1553|  37.2k|			case 15: sum += qlp_coeff[14] * data[i-15]; /* Falls through. */
  ------------------
  |  Branch (1553:4): [True: 973, False: 127k]
  ------------------
 1554|  37.9k|			case 14: sum += qlp_coeff[13] * data[i-14]; /* Falls through. */
  ------------------
  |  Branch (1554:4): [True: 755, False: 127k]
  ------------------
 1555|  38.7k|			case 13: sum += qlp_coeff[12] * data[i-13]; /* Falls through. */
  ------------------
  |  Branch (1555:4): [True: 801, False: 127k]
  ------------------
 1556|  39.6k|			case 12: sum += qlp_coeff[11] * data[i-12]; /* Falls through. */
  ------------------
  |  Branch (1556:4): [True: 888, False: 127k]
  ------------------
 1557|  43.0k|			case 11: sum += qlp_coeff[10] * data[i-11]; /* Falls through. */
  ------------------
  |  Branch (1557:4): [True: 3.33k, False: 125k]
  ------------------
 1558|  44.9k|			case 10: sum += qlp_coeff[ 9] * data[i-10]; /* Falls through. */
  ------------------
  |  Branch (1558:4): [True: 1.93k, False: 126k]
  ------------------
 1559|  47.7k|			case  9: sum += qlp_coeff[ 8] * data[i- 9]; /* Falls through. */
  ------------------
  |  Branch (1559:4): [True: 2.76k, False: 125k]
  ------------------
 1560|  51.5k|			case  8: sum += qlp_coeff[ 7] * data[i- 8]; /* Falls through. */
  ------------------
  |  Branch (1560:4): [True: 3.80k, False: 124k]
  ------------------
 1561|  57.0k|			case  7: sum += qlp_coeff[ 6] * data[i- 7]; /* Falls through. */
  ------------------
  |  Branch (1561:4): [True: 5.57k, False: 122k]
  ------------------
 1562|  57.6k|			case  6: sum += qlp_coeff[ 5] * data[i- 6]; /* Falls through. */
  ------------------
  |  Branch (1562:4): [True: 542, False: 127k]
  ------------------
 1563|  63.1k|			case  5: sum += qlp_coeff[ 4] * data[i- 5]; /* Falls through. */
  ------------------
  |  Branch (1563:4): [True: 5.49k, False: 122k]
  ------------------
 1564|  65.9k|			case  4: sum += qlp_coeff[ 3] * data[i- 4]; /* Falls through. */
  ------------------
  |  Branch (1564:4): [True: 2.85k, False: 125k]
  ------------------
 1565|  82.0k|			case  3: sum += qlp_coeff[ 2] * data[i- 3]; /* Falls through. */
  ------------------
  |  Branch (1565:4): [True: 16.1k, False: 112k]
  ------------------
 1566|  90.0k|			case  2: sum += qlp_coeff[ 1] * data[i- 2]; /* Falls through. */
  ------------------
  |  Branch (1566:4): [True: 7.96k, False: 120k]
  ------------------
 1567|   128k|			case  1: sum += qlp_coeff[ 0] * data[i- 1];
  ------------------
  |  Branch (1567:4): [True: 38.2k, False: 90.0k]
  ------------------
 1568|   128k|		}
 1569|   128k|		data[i] = residual[i] + (sum >> lp_quantization);
 1570|   128k|	}
 1571|  1.52k|}
FLAC__lpc_compute_expected_bits_per_residual_sample:
 1581|  3.03M|{
 1582|  3.03M|	double error_scale;
 1583|       |
 1584|  3.03M|	FLAC__ASSERT(total_samples > 0);
  ------------------
  |  |   38|  3.03M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 3.03M]
  |  |  ------------------
  ------------------
 1585|       |
 1586|  3.03M|	error_scale = 0.5 / (double)total_samples;
 1587|       |
 1588|  3.03M|	return FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error, error_scale);
 1589|  3.03M|}
FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale:
 1592|  6.89M|{
 1593|  6.89M|	if(lpc_error > 0.0) {
  ------------------
  |  Branch (1593:5): [True: 6.83M, False: 58.4k]
  ------------------
 1594|  6.83M|		double bps = (double)0.5 * log(error_scale * lpc_error) / M_LN2;
 1595|  6.83M|		if(bps >= 0.0)
  ------------------
  |  Branch (1595:6): [True: 6.59M, False: 246k]
  ------------------
 1596|  6.59M|			return bps;
 1597|   246k|		else
 1598|   246k|			return 0.0;
 1599|  6.83M|	}
 1600|  58.4k|	else if(lpc_error < 0.0) { /* error should not be negative but can happen due to inadequate floating-point resolution */
  ------------------
  |  Branch (1600:10): [True: 58.0k, False: 374]
  ------------------
 1601|  58.0k|		return 1e32;
 1602|  58.0k|	}
 1603|    374|	else {
 1604|    374|		return 0.0;
 1605|    374|	}
 1606|  6.89M|}
FLAC__lpc_compute_best_order:
 1609|   333k|{
 1610|   333k|	uint32_t order, indx, best_index; /* 'index' the index into lpc_error; index==order-1 since lpc_error[0] is for order==1, lpc_error[1] is for order==2, etc */
 1611|   333k|	double bits, best_bits, error_scale;
 1612|       |
 1613|   333k|	FLAC__ASSERT(max_order > 0);
  ------------------
  |  |   38|   333k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 333k]
  |  |  ------------------
  ------------------
 1614|   333k|	FLAC__ASSERT(total_samples > 0);
  ------------------
  |  |   38|   333k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 333k]
  |  |  ------------------
  ------------------
 1615|       |
 1616|   333k|	error_scale = 0.5 / (double)total_samples;
 1617|       |
 1618|   333k|	best_index = 0;
 1619|   333k|	best_bits = (uint32_t)(-1);
 1620|       |
 1621|  4.20M|	for(indx = 0, order = 1; indx < max_order; indx++, order++) {
  ------------------
  |  Branch (1621:27): [True: 3.86M, False: 333k]
  ------------------
 1622|  3.86M|		bits = FLAC__lpc_compute_expected_bits_per_residual_sample_with_error_scale(lpc_error[indx], error_scale) * (double)(total_samples - order) + (double)(order * overhead_bits_per_order);
 1623|  3.86M|		if(bits < best_bits) {
  ------------------
  |  Branch (1623:6): [True: 505k, False: 3.36M]
  ------------------
 1624|   505k|			best_index = indx;
 1625|   505k|			best_bits = bits;
 1626|   505k|		}
 1627|  3.86M|	}
 1628|       |
 1629|   333k|	return best_index+1; /* +1 since indx of lpc_error[] is order-1 */
 1630|   333k|}

FLAC__lpc_compute_residual_from_qlp_coefficients_16_intrin_avx2:
   52|  1.66M|{
   53|  1.66M|	int i;
   54|  1.66M|	FLAC__int32 sum;
   55|  1.66M|	const __m128i cnt = _mm_cvtsi32_si128(lp_quantization);
   56|       |
   57|  1.66M|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  1.66M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.66M]
  |  |  ------------------
  ------------------
   58|  1.66M|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  1.66M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.66M]
  |  |  ------------------
  ------------------
   59|       |
   60|  1.66M|	if(order <= 12) {
  ------------------
  |  Branch (60:5): [True: 1.29M, False: 371k]
  ------------------
   61|  1.29M|		if(order > 8) {
  ------------------
  |  Branch (61:6): [True: 398k, False: 898k]
  ------------------
   62|   398k|			if(order > 10) {
  ------------------
  |  Branch (62:7): [True: 198k, False: 200k]
  ------------------
   63|   198k|				if(order == 12) {
  ------------------
  |  Branch (63:8): [True: 98.6k, False: 99.5k]
  ------------------
   64|  98.6k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11;
   65|  98.6k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
   66|  98.6k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
   67|  98.6k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
   68|  98.6k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
   69|  98.6k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
   70|  98.6k|					q5  = _mm256_set1_epi32(0xffff & qlp_coeff[5 ]);
   71|  98.6k|					q6  = _mm256_set1_epi32(0xffff & qlp_coeff[6 ]);
   72|  98.6k|					q7  = _mm256_set1_epi32(0xffff & qlp_coeff[7 ]);
   73|  98.6k|					q8  = _mm256_set1_epi32(0xffff & qlp_coeff[8 ]);
   74|  98.6k|					q9  = _mm256_set1_epi32(0xffff & qlp_coeff[9 ]);
   75|  98.6k|					q10 = _mm256_set1_epi32(0xffff & qlp_coeff[10]);
   76|  98.6k|					q11 = _mm256_set1_epi32(0xffff & qlp_coeff[11]);
   77|       |
   78|  1.75M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (78:17): [True: 1.65M, False: 98.6k]
  ------------------
   79|  1.65M|						__m256i summ, mull;
   80|  1.65M|						summ = _mm256_madd_epi16(q11, _mm256_loadu_si256((const __m256i*)(const void*)(data+i-12)));
   81|  1.65M|						mull = _mm256_madd_epi16(q10, _mm256_loadu_si256((const __m256i*)(const void*)(data+i-11))); summ = _mm256_add_epi32(summ, mull);
   82|  1.65M|						mull = _mm256_madd_epi16(q9,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-10))); summ = _mm256_add_epi32(summ, mull);
   83|  1.65M|						mull = _mm256_madd_epi16(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9 ))); summ = _mm256_add_epi32(summ, mull);
   84|  1.65M|						mull = _mm256_madd_epi16(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8 ))); summ = _mm256_add_epi32(summ, mull);
   85|  1.65M|						mull = _mm256_madd_epi16(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7 ))); summ = _mm256_add_epi32(summ, mull);
   86|  1.65M|						mull = _mm256_madd_epi16(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6 ))); summ = _mm256_add_epi32(summ, mull);
   87|  1.65M|						mull = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 ))); summ = _mm256_add_epi32(summ, mull);
   88|  1.65M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
   89|  1.65M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
   90|  1.65M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
   91|  1.65M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
   92|  1.65M|						summ = _mm256_sra_epi32(summ, cnt);
   93|  1.65M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
   94|  1.65M|					}
   95|  98.6k|				}
   96|  99.5k|				else { /* order == 11 */
   97|  99.5k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10;
   98|  99.5k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
   99|  99.5k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  100|  99.5k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  101|  99.5k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  102|  99.5k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
  103|  99.5k|					q5  = _mm256_set1_epi32(0xffff & qlp_coeff[5 ]);
  104|  99.5k|					q6  = _mm256_set1_epi32(0xffff & qlp_coeff[6 ]);
  105|  99.5k|					q7  = _mm256_set1_epi32(0xffff & qlp_coeff[7 ]);
  106|  99.5k|					q8  = _mm256_set1_epi32(0xffff & qlp_coeff[8 ]);
  107|  99.5k|					q9  = _mm256_set1_epi32(0xffff & qlp_coeff[9 ]);
  108|  99.5k|					q10 = _mm256_set1_epi32(0xffff & qlp_coeff[10]);
  109|       |
  110|  1.75M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (110:17): [True: 1.65M, False: 99.5k]
  ------------------
  111|  1.65M|						__m256i summ, mull;
  112|  1.65M|						summ = _mm256_madd_epi16(q10, _mm256_loadu_si256((const __m256i*)(const void*)(data+i-11)));
  113|  1.65M|						mull = _mm256_madd_epi16(q9,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-10))); summ = _mm256_add_epi32(summ, mull);
  114|  1.65M|						mull = _mm256_madd_epi16(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9 ))); summ = _mm256_add_epi32(summ, mull);
  115|  1.65M|						mull = _mm256_madd_epi16(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8 ))); summ = _mm256_add_epi32(summ, mull);
  116|  1.65M|						mull = _mm256_madd_epi16(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7 ))); summ = _mm256_add_epi32(summ, mull);
  117|  1.65M|						mull = _mm256_madd_epi16(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6 ))); summ = _mm256_add_epi32(summ, mull);
  118|  1.65M|						mull = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 ))); summ = _mm256_add_epi32(summ, mull);
  119|  1.65M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
  120|  1.65M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  121|  1.65M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  122|  1.65M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  123|  1.65M|						summ = _mm256_sra_epi32(summ, cnt);
  124|  1.65M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  125|  1.65M|					}
  126|  99.5k|				}
  127|   198k|			}
  128|   200k|			else {
  129|   200k|				if(order == 10) {
  ------------------
  |  Branch (129:8): [True: 99.7k, False: 100k]
  ------------------
  130|  99.7k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9;
  131|  99.7k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  132|  99.7k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  133|  99.7k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  134|  99.7k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  135|  99.7k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
  136|  99.7k|					q5  = _mm256_set1_epi32(0xffff & qlp_coeff[5 ]);
  137|  99.7k|					q6  = _mm256_set1_epi32(0xffff & qlp_coeff[6 ]);
  138|  99.7k|					q7  = _mm256_set1_epi32(0xffff & qlp_coeff[7 ]);
  139|  99.7k|					q8  = _mm256_set1_epi32(0xffff & qlp_coeff[8 ]);
  140|  99.7k|					q9  = _mm256_set1_epi32(0xffff & qlp_coeff[9 ]);
  141|       |
  142|  1.75M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (142:17): [True: 1.65M, False: 99.7k]
  ------------------
  143|  1.65M|						__m256i summ, mull;
  144|  1.65M|						summ = _mm256_madd_epi16(q9,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-10)));
  145|  1.65M|						mull = _mm256_madd_epi16(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9 ))); summ = _mm256_add_epi32(summ, mull);
  146|  1.65M|						mull = _mm256_madd_epi16(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8 ))); summ = _mm256_add_epi32(summ, mull);
  147|  1.65M|						mull = _mm256_madd_epi16(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7 ))); summ = _mm256_add_epi32(summ, mull);
  148|  1.65M|						mull = _mm256_madd_epi16(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6 ))); summ = _mm256_add_epi32(summ, mull);
  149|  1.65M|						mull = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 ))); summ = _mm256_add_epi32(summ, mull);
  150|  1.65M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
  151|  1.65M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  152|  1.65M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  153|  1.65M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  154|  1.65M|						summ = _mm256_sra_epi32(summ, cnt);
  155|  1.65M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  156|  1.65M|					}
  157|  99.7k|				}
  158|   100k|				else { /* order == 9 */
  159|   100k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8;
  160|   100k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  161|   100k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  162|   100k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  163|   100k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  164|   100k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
  165|   100k|					q5  = _mm256_set1_epi32(0xffff & qlp_coeff[5 ]);
  166|   100k|					q6  = _mm256_set1_epi32(0xffff & qlp_coeff[6 ]);
  167|   100k|					q7  = _mm256_set1_epi32(0xffff & qlp_coeff[7 ]);
  168|   100k|					q8  = _mm256_set1_epi32(0xffff & qlp_coeff[8 ]);
  169|       |
  170|  1.80M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (170:17): [True: 1.70M, False: 100k]
  ------------------
  171|  1.70M|						__m256i summ, mull;
  172|  1.70M|						summ = _mm256_madd_epi16(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9 )));
  173|  1.70M|						mull = _mm256_madd_epi16(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8 ))); summ = _mm256_add_epi32(summ, mull);
  174|  1.70M|						mull = _mm256_madd_epi16(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7 ))); summ = _mm256_add_epi32(summ, mull);
  175|  1.70M|						mull = _mm256_madd_epi16(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6 ))); summ = _mm256_add_epi32(summ, mull);
  176|  1.70M|						mull = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 ))); summ = _mm256_add_epi32(summ, mull);
  177|  1.70M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
  178|  1.70M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  179|  1.70M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  180|  1.70M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  181|  1.70M|						summ = _mm256_sra_epi32(summ, cnt);
  182|  1.70M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  183|  1.70M|					}
  184|   100k|				}
  185|   200k|			}
  186|   398k|		}
  187|   898k|		else if(order > 4) {
  ------------------
  |  Branch (187:11): [True: 424k, False: 474k]
  ------------------
  188|   424k|			if(order > 6) {
  ------------------
  |  Branch (188:7): [True: 208k, False: 215k]
  ------------------
  189|   208k|				if(order == 8) {
  ------------------
  |  Branch (189:8): [True: 100k, False: 108k]
  ------------------
  190|   100k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7;
  191|   100k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  192|   100k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  193|   100k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  194|   100k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  195|   100k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
  196|   100k|					q5  = _mm256_set1_epi32(0xffff & qlp_coeff[5 ]);
  197|   100k|					q6  = _mm256_set1_epi32(0xffff & qlp_coeff[6 ]);
  198|   100k|					q7  = _mm256_set1_epi32(0xffff & qlp_coeff[7 ]);
  199|       |
  200|  1.83M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (200:17): [True: 1.73M, False: 100k]
  ------------------
  201|  1.73M|						__m256i summ, mull;
  202|  1.73M|						summ = _mm256_madd_epi16(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8 )));
  203|  1.73M|						mull = _mm256_madd_epi16(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7 ))); summ = _mm256_add_epi32(summ, mull);
  204|  1.73M|						mull = _mm256_madd_epi16(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6 ))); summ = _mm256_add_epi32(summ, mull);
  205|  1.73M|						mull = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 ))); summ = _mm256_add_epi32(summ, mull);
  206|  1.73M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
  207|  1.73M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  208|  1.73M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  209|  1.73M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  210|  1.73M|						summ = _mm256_sra_epi32(summ, cnt);
  211|  1.73M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  212|  1.73M|					}
  213|   100k|				}
  214|   108k|				else { /* order == 7 */
  215|   108k|					__m256i q0, q1, q2, q3, q4, q5, q6;
  216|   108k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  217|   108k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  218|   108k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  219|   108k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  220|   108k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
  221|   108k|					q5  = _mm256_set1_epi32(0xffff & qlp_coeff[5 ]);
  222|   108k|					q6  = _mm256_set1_epi32(0xffff & qlp_coeff[6 ]);
  223|       |
  224|  1.90M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (224:17): [True: 1.79M, False: 108k]
  ------------------
  225|  1.79M|						__m256i summ, mull;
  226|  1.79M|						summ = _mm256_madd_epi16(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7 )));
  227|  1.79M|						mull = _mm256_madd_epi16(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6 ))); summ = _mm256_add_epi32(summ, mull);
  228|  1.79M|						mull = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 ))); summ = _mm256_add_epi32(summ, mull);
  229|  1.79M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
  230|  1.79M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  231|  1.79M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  232|  1.79M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  233|  1.79M|						summ = _mm256_sra_epi32(summ, cnt);
  234|  1.79M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  235|  1.79M|					}
  236|   108k|				}
  237|   208k|			}
  238|   215k|			else {
  239|   215k|				if(order == 6) {
  ------------------
  |  Branch (239:8): [True: 107k, False: 108k]
  ------------------
  240|   107k|					__m256i q0, q1, q2, q3, q4, q5;
  241|   107k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  242|   107k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  243|   107k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  244|   107k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  245|   107k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
  246|   107k|					q5  = _mm256_set1_epi32(0xffff & qlp_coeff[5 ]);
  247|       |
  248|  1.89M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (248:17): [True: 1.78M, False: 107k]
  ------------------
  249|  1.78M|						__m256i summ, mull;
  250|  1.78M|						summ = _mm256_madd_epi16(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6 )));
  251|  1.78M|						mull = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 ))); summ = _mm256_add_epi32(summ, mull);
  252|  1.78M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
  253|  1.78M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  254|  1.78M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  255|  1.78M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  256|  1.78M|						summ = _mm256_sra_epi32(summ, cnt);
  257|  1.78M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  258|  1.78M|					}
  259|   107k|				}
  260|   108k|				else { /* order == 5 */
  261|   108k|					__m256i q0, q1, q2, q3, q4;
  262|   108k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  263|   108k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  264|   108k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  265|   108k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  266|   108k|					q4  = _mm256_set1_epi32(0xffff & qlp_coeff[4 ]);
  267|       |
  268|  1.90M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (268:17): [True: 1.79M, False: 108k]
  ------------------
  269|  1.79M|						__m256i summ, mull;
  270|  1.79M|						summ = _mm256_madd_epi16(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5 )));
  271|  1.79M|						mull = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 ))); summ = _mm256_add_epi32(summ, mull);
  272|  1.79M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  273|  1.79M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  274|  1.79M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  275|  1.79M|						summ = _mm256_sra_epi32(summ, cnt);
  276|  1.79M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  277|  1.79M|					}
  278|   108k|				}
  279|   215k|			}
  280|   424k|		}
  281|   474k|		else {
  282|   474k|			if(order > 2) {
  ------------------
  |  Branch (282:7): [True: 227k, False: 247k]
  ------------------
  283|   227k|				if(order == 4) {
  ------------------
  |  Branch (283:8): [True: 110k, False: 116k]
  ------------------
  284|   110k|					__m256i q0, q1, q2, q3;
  285|   110k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  286|   110k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  287|   110k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  288|   110k|					q3  = _mm256_set1_epi32(0xffff & qlp_coeff[3 ]);
  289|       |
  290|  1.90M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (290:17): [True: 1.79M, False: 110k]
  ------------------
  291|  1.79M|						__m256i summ, mull;
  292|  1.79M|						summ = _mm256_madd_epi16(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4 )));
  293|  1.79M|						mull = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 ))); summ = _mm256_add_epi32(summ, mull);
  294|  1.79M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  295|  1.79M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  296|  1.79M|						summ = _mm256_sra_epi32(summ, cnt);
  297|  1.79M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  298|  1.79M|					}
  299|   110k|				}
  300|   116k|				else { /* order == 3 */
  301|   116k|					__m256i q0, q1, q2;
  302|   116k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  303|   116k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  304|   116k|					q2  = _mm256_set1_epi32(0xffff & qlp_coeff[2 ]);
  305|       |
  306|  1.95M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (306:17): [True: 1.84M, False: 116k]
  ------------------
  307|  1.84M|						__m256i summ, mull;
  308|  1.84M|						summ = _mm256_madd_epi16(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3 )));
  309|  1.84M|						mull = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 ))); summ = _mm256_add_epi32(summ, mull);
  310|  1.84M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  311|  1.84M|						summ = _mm256_sra_epi32(summ, cnt);
  312|  1.84M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  313|  1.84M|					}
  314|   116k|				}
  315|   227k|			}
  316|   247k|			else {
  317|   247k|				if(order == 2) {
  ------------------
  |  Branch (317:8): [True: 116k, False: 130k]
  ------------------
  318|   116k|					__m256i q0, q1;
  319|   116k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  320|   116k|					q1  = _mm256_set1_epi32(0xffff & qlp_coeff[1 ]);
  321|       |
  322|  1.96M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (322:17): [True: 1.84M, False: 116k]
  ------------------
  323|  1.84M|						__m256i summ, mull;
  324|  1.84M|						summ = _mm256_madd_epi16(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2 )));
  325|  1.84M|						mull = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 ))); summ = _mm256_add_epi32(summ, mull);
  326|  1.84M|						summ = _mm256_sra_epi32(summ, cnt);
  327|  1.84M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  328|  1.84M|					}
  329|   116k|				}
  330|   130k|				else { /* order == 1 */
  331|   130k|					__m256i q0;
  332|   130k|					q0  = _mm256_set1_epi32(0xffff & qlp_coeff[0 ]);
  333|       |
  334|  2.05M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (334:17): [True: 1.92M, False: 130k]
  ------------------
  335|  1.92M|						__m256i summ;
  336|  1.92M|						summ = _mm256_madd_epi16(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1 )));
  337|  1.92M|						summ = _mm256_sra_epi32(summ, cnt);
  338|  1.92M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  339|  1.92M|					}
  340|   130k|				}
  341|   247k|			}
  342|   474k|		}
  343|  6.29M|		for(; i < (int)data_len; i++) {
  ------------------
  |  Branch (343:9): [True: 5.00M, False: 1.29M]
  ------------------
  344|  5.00M|			sum = 0;
  345|  5.00M|			switch(order) {
  ------------------
  |  Branch (345:11): [True: 5.00M, False: 0]
  ------------------
  346|   433k|				case 12: sum += qlp_coeff[11] * data[i-12]; /* Falls through. */
  ------------------
  |  Branch (346:5): [True: 433k, False: 4.56M]
  ------------------
  347|   927k|				case 11: sum += qlp_coeff[10] * data[i-11]; /* Falls through. */
  ------------------
  |  Branch (347:5): [True: 493k, False: 4.50M]
  ------------------
  348|  1.51M|				case 10: sum += qlp_coeff[ 9] * data[i-10]; /* Falls through. */
  ------------------
  |  Branch (348:5): [True: 584k, False: 4.41M]
  ------------------
  349|  1.84M|				case 9:  sum += qlp_coeff[ 8] * data[i- 9]; /* Falls through. */
  ------------------
  |  Branch (349:5): [True: 330k, False: 4.67M]
  ------------------
  350|  2.01M|				case 8:  sum += qlp_coeff[ 7] * data[i- 8]; /* Falls through. */
  ------------------
  |  Branch (350:5): [True: 167k, False: 4.83M]
  ------------------
  351|  2.19M|				case 7:  sum += qlp_coeff[ 6] * data[i- 7]; /* Falls through. */
  ------------------
  |  Branch (351:5): [True: 185k, False: 4.81M]
  ------------------
  352|  2.47M|				case 6:  sum += qlp_coeff[ 5] * data[i- 6]; /* Falls through. */
  ------------------
  |  Branch (352:5): [True: 281k, False: 4.71M]
  ------------------
  353|  2.85M|				case 5:  sum += qlp_coeff[ 4] * data[i- 5]; /* Falls through. */
  ------------------
  |  Branch (353:5): [True: 378k, False: 4.62M]
  ------------------
  354|  3.33M|				case 4:  sum += qlp_coeff[ 3] * data[i- 4]; /* Falls through. */
  ------------------
  |  Branch (354:5): [True: 479k, False: 4.52M]
  ------------------
  355|  3.91M|				case 3:  sum += qlp_coeff[ 2] * data[i- 3]; /* Falls through. */
  ------------------
  |  Branch (355:5): [True: 578k, False: 4.42M]
  ------------------
  356|  4.59M|				case 2:  sum += qlp_coeff[ 1] * data[i- 2]; /* Falls through. */
  ------------------
  |  Branch (356:5): [True: 681k, False: 4.31M]
  ------------------
  357|  5.00M|				case 1:  sum += qlp_coeff[ 0] * data[i- 1];
  ------------------
  |  Branch (357:5): [True: 404k, False: 4.59M]
  ------------------
  358|  5.00M|			}
  359|  5.00M|			residual[i] = data[i] - (sum >> lp_quantization);
  360|  5.00M|		}
  361|  1.29M|	}
  362|   371k|	else { /* order > 12 */
  363|   254M|		for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (363:14): [True: 254M, False: 371k]
  ------------------
  364|   254M|			sum = 0;
  365|   254M|			switch(order) {
  ------------------
  |  Branch (365:11): [True: 254M, False: 0]
  ------------------
  366|  11.6M|				case 32: sum += qlp_coeff[31] * data[i-32]; /* Falls through. */
  ------------------
  |  Branch (366:5): [True: 11.6M, False: 242M]
  ------------------
  367|  23.8M|				case 31: sum += qlp_coeff[30] * data[i-31]; /* Falls through. */
  ------------------
  |  Branch (367:5): [True: 12.2M, False: 242M]
  ------------------
  368|  36.5M|				case 30: sum += qlp_coeff[29] * data[i-30]; /* Falls through. */
  ------------------
  |  Branch (368:5): [True: 12.6M, False: 241M]
  ------------------
  369|  49.1M|				case 29: sum += qlp_coeff[28] * data[i-29]; /* Falls through. */
  ------------------
  |  Branch (369:5): [True: 12.6M, False: 241M]
  ------------------
  370|  61.8M|				case 28: sum += qlp_coeff[27] * data[i-28]; /* Falls through. */
  ------------------
  |  Branch (370:5): [True: 12.6M, False: 241M]
  ------------------
  371|  74.4M|				case 27: sum += qlp_coeff[26] * data[i-27]; /* Falls through. */
  ------------------
  |  Branch (371:5): [True: 12.6M, False: 241M]
  ------------------
  372|  87.1M|				case 26: sum += qlp_coeff[25] * data[i-26]; /* Falls through. */
  ------------------
  |  Branch (372:5): [True: 12.6M, False: 241M]
  ------------------
  373|  99.8M|				case 25: sum += qlp_coeff[24] * data[i-25]; /* Falls through. */
  ------------------
  |  Branch (373:5): [True: 12.6M, False: 241M]
  ------------------
  374|   112M|				case 24: sum += qlp_coeff[23] * data[i-24]; /* Falls through. */
  ------------------
  |  Branch (374:5): [True: 12.6M, False: 241M]
  ------------------
  375|   125M|				case 23: sum += qlp_coeff[22] * data[i-23]; /* Falls through. */
  ------------------
  |  Branch (375:5): [True: 12.6M, False: 241M]
  ------------------
  376|   137M|				case 22: sum += qlp_coeff[21] * data[i-22]; /* Falls through. */
  ------------------
  |  Branch (376:5): [True: 12.6M, False: 241M]
  ------------------
  377|   150M|				case 21: sum += qlp_coeff[20] * data[i-21]; /* Falls through. */
  ------------------
  |  Branch (377:5): [True: 12.7M, False: 241M]
  ------------------
  378|   163M|				case 20: sum += qlp_coeff[19] * data[i-20]; /* Falls through. */
  ------------------
  |  Branch (378:5): [True: 12.7M, False: 241M]
  ------------------
  379|   176M|				case 19: sum += qlp_coeff[18] * data[i-19]; /* Falls through. */
  ------------------
  |  Branch (379:5): [True: 12.7M, False: 241M]
  ------------------
  380|   188M|				case 18: sum += qlp_coeff[17] * data[i-18]; /* Falls through. */
  ------------------
  |  Branch (380:5): [True: 12.7M, False: 241M]
  ------------------
  381|   201M|				case 17: sum += qlp_coeff[16] * data[i-17]; /* Falls through. */
  ------------------
  |  Branch (381:5): [True: 12.7M, False: 241M]
  ------------------
  382|   214M|				case 16: sum += qlp_coeff[15] * data[i-16]; /* Falls through. */
  ------------------
  |  Branch (382:5): [True: 12.8M, False: 241M]
  ------------------
  383|   227M|				case 15: sum += qlp_coeff[14] * data[i-15]; /* Falls through. */
  ------------------
  |  Branch (383:5): [True: 13.1M, False: 241M]
  ------------------
  384|   240M|				case 14: sum += qlp_coeff[13] * data[i-14]; /* Falls through. */
  ------------------
  |  Branch (384:5): [True: 13.4M, False: 241M]
  ------------------
  385|   254M|				case 13: sum += qlp_coeff[12] * data[i-13];
  ------------------
  |  Branch (385:5): [True: 13.6M, False: 240M]
  ------------------
  386|   254M|				         sum += qlp_coeff[11] * data[i-12];
  387|   254M|				         sum += qlp_coeff[10] * data[i-11];
  388|   254M|				         sum += qlp_coeff[ 9] * data[i-10];
  389|   254M|				         sum += qlp_coeff[ 8] * data[i- 9];
  390|   254M|				         sum += qlp_coeff[ 7] * data[i- 8];
  391|   254M|				         sum += qlp_coeff[ 6] * data[i- 7];
  392|   254M|				         sum += qlp_coeff[ 5] * data[i- 6];
  393|   254M|				         sum += qlp_coeff[ 4] * data[i- 5];
  394|   254M|				         sum += qlp_coeff[ 3] * data[i- 4];
  395|   254M|				         sum += qlp_coeff[ 2] * data[i- 3];
  396|   254M|				         sum += qlp_coeff[ 1] * data[i- 2];
  397|   254M|				         sum += qlp_coeff[ 0] * data[i- 1];
  398|   254M|			}
  399|   254M|			residual[i] = data[i] - (sum >> lp_quantization);
  400|   254M|		}
  401|   371k|	}
  402|  1.66M|	_mm256_zeroupper();
  403|  1.66M|}
FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_avx2:
  407|  1.97M|{
  408|  1.97M|	int i;
  409|  1.97M|	FLAC__int32 sum;
  410|  1.97M|	const __m128i cnt = _mm_cvtsi32_si128(lp_quantization);
  411|       |
  412|  1.97M|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  1.97M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.97M]
  |  |  ------------------
  ------------------
  413|  1.97M|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  1.97M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.97M]
  |  |  ------------------
  ------------------
  414|       |
  415|  1.97M|	if(order <= 12) {
  ------------------
  |  Branch (415:5): [True: 1.66M, False: 304k]
  ------------------
  416|  1.66M|		if(order > 8) {
  ------------------
  |  Branch (416:6): [True: 452k, False: 1.21M]
  ------------------
  417|   452k|			if(order > 10) {
  ------------------
  |  Branch (417:7): [True: 222k, False: 229k]
  ------------------
  418|   222k|				if(order == 12) {
  ------------------
  |  Branch (418:8): [True: 110k, False: 112k]
  ------------------
  419|   110k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11;
  420|   110k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  421|   110k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  422|   110k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  423|   110k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  424|   110k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  425|   110k|					q5  = _mm256_set1_epi32(qlp_coeff[5 ]);
  426|   110k|					q6  = _mm256_set1_epi32(qlp_coeff[6 ]);
  427|   110k|					q7  = _mm256_set1_epi32(qlp_coeff[7 ]);
  428|   110k|					q8  = _mm256_set1_epi32(qlp_coeff[8 ]);
  429|   110k|					q9  = _mm256_set1_epi32(qlp_coeff[9 ]);
  430|   110k|					q10 = _mm256_set1_epi32(qlp_coeff[10]);
  431|   110k|					q11 = _mm256_set1_epi32(qlp_coeff[11]);
  432|       |
  433|  1.19M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (433:17): [True: 1.08M, False: 110k]
  ------------------
  434|  1.08M|						__m256i summ, mull;
  435|  1.08M|						summ = _mm256_mullo_epi32(q11, _mm256_loadu_si256((const __m256i*)(const void*)(data+i-12)));
  436|  1.08M|						mull = _mm256_mullo_epi32(q10, _mm256_loadu_si256((const __m256i*)(const void*)(data+i-11))); summ = _mm256_add_epi32(summ, mull);
  437|  1.08M|						mull = _mm256_mullo_epi32(q9,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-10))); summ = _mm256_add_epi32(summ, mull);
  438|  1.08M|						mull = _mm256_mullo_epi32(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9)));  summ = _mm256_add_epi32(summ, mull);
  439|  1.08M|						mull = _mm256_mullo_epi32(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8)));  summ = _mm256_add_epi32(summ, mull);
  440|  1.08M|						mull = _mm256_mullo_epi32(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7)));  summ = _mm256_add_epi32(summ, mull);
  441|  1.08M|						mull = _mm256_mullo_epi32(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6)));  summ = _mm256_add_epi32(summ, mull);
  442|  1.08M|						mull = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));  summ = _mm256_add_epi32(summ, mull);
  443|  1.08M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  444|  1.08M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  445|  1.08M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  446|  1.08M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  447|  1.08M|						summ = _mm256_sra_epi32(summ, cnt);
  448|  1.08M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  449|  1.08M|					}
  450|   110k|				}
  451|   112k|				else { /* order == 11 */
  452|   112k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10;
  453|   112k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  454|   112k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  455|   112k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  456|   112k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  457|   112k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  458|   112k|					q5  = _mm256_set1_epi32(qlp_coeff[5 ]);
  459|   112k|					q6  = _mm256_set1_epi32(qlp_coeff[6 ]);
  460|   112k|					q7  = _mm256_set1_epi32(qlp_coeff[7 ]);
  461|   112k|					q8  = _mm256_set1_epi32(qlp_coeff[8 ]);
  462|   112k|					q9  = _mm256_set1_epi32(qlp_coeff[9 ]);
  463|   112k|					q10 = _mm256_set1_epi32(qlp_coeff[10]);
  464|       |
  465|  1.21M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (465:17): [True: 1.10M, False: 112k]
  ------------------
  466|  1.10M|						__m256i summ, mull;
  467|  1.10M|						summ = _mm256_mullo_epi32(q10, _mm256_loadu_si256((const __m256i*)(const void*)(data+i-11)));
  468|  1.10M|						mull = _mm256_mullo_epi32(q9,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-10))); summ = _mm256_add_epi32(summ, mull);
  469|  1.10M|						mull = _mm256_mullo_epi32(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9)));  summ = _mm256_add_epi32(summ, mull);
  470|  1.10M|						mull = _mm256_mullo_epi32(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8)));  summ = _mm256_add_epi32(summ, mull);
  471|  1.10M|						mull = _mm256_mullo_epi32(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7)));  summ = _mm256_add_epi32(summ, mull);
  472|  1.10M|						mull = _mm256_mullo_epi32(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6)));  summ = _mm256_add_epi32(summ, mull);
  473|  1.10M|						mull = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));  summ = _mm256_add_epi32(summ, mull);
  474|  1.10M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  475|  1.10M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  476|  1.10M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  477|  1.10M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  478|  1.10M|						summ = _mm256_sra_epi32(summ, cnt);
  479|  1.10M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  480|  1.10M|					}
  481|   112k|				}
  482|   222k|			}
  483|   229k|			else {
  484|   229k|				if(order == 10) {
  ------------------
  |  Branch (484:8): [True: 113k, False: 116k]
  ------------------
  485|   113k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9;
  486|   113k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  487|   113k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  488|   113k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  489|   113k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  490|   113k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  491|   113k|					q5  = _mm256_set1_epi32(qlp_coeff[5 ]);
  492|   113k|					q6  = _mm256_set1_epi32(qlp_coeff[6 ]);
  493|   113k|					q7  = _mm256_set1_epi32(qlp_coeff[7 ]);
  494|   113k|					q8  = _mm256_set1_epi32(qlp_coeff[8 ]);
  495|   113k|					q9  = _mm256_set1_epi32(qlp_coeff[9 ]);
  496|       |
  497|  1.21M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (497:17): [True: 1.10M, False: 113k]
  ------------------
  498|  1.10M|						__m256i summ, mull;
  499|  1.10M|						summ = _mm256_mullo_epi32(q9,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-10)));
  500|  1.10M|						mull = _mm256_mullo_epi32(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9)));  summ = _mm256_add_epi32(summ, mull);
  501|  1.10M|						mull = _mm256_mullo_epi32(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8)));  summ = _mm256_add_epi32(summ, mull);
  502|  1.10M|						mull = _mm256_mullo_epi32(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7)));  summ = _mm256_add_epi32(summ, mull);
  503|  1.10M|						mull = _mm256_mullo_epi32(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6)));  summ = _mm256_add_epi32(summ, mull);
  504|  1.10M|						mull = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));  summ = _mm256_add_epi32(summ, mull);
  505|  1.10M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  506|  1.10M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  507|  1.10M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  508|  1.10M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  509|  1.10M|						summ = _mm256_sra_epi32(summ, cnt);
  510|  1.10M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  511|  1.10M|					}
  512|   113k|				}
  513|   116k|				else { /* order == 9 */
  514|   116k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8;
  515|   116k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  516|   116k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  517|   116k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  518|   116k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  519|   116k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  520|   116k|					q5  = _mm256_set1_epi32(qlp_coeff[5 ]);
  521|   116k|					q6  = _mm256_set1_epi32(qlp_coeff[6 ]);
  522|   116k|					q7  = _mm256_set1_epi32(qlp_coeff[7 ]);
  523|   116k|					q8  = _mm256_set1_epi32(qlp_coeff[8 ]);
  524|       |
  525|  1.29M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (525:17): [True: 1.18M, False: 116k]
  ------------------
  526|  1.18M|						__m256i summ, mull;
  527|  1.18M|						summ = _mm256_mullo_epi32(q8,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-9)));
  528|  1.18M|						mull = _mm256_mullo_epi32(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8)));  summ = _mm256_add_epi32(summ, mull);
  529|  1.18M|						mull = _mm256_mullo_epi32(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7)));  summ = _mm256_add_epi32(summ, mull);
  530|  1.18M|						mull = _mm256_mullo_epi32(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6)));  summ = _mm256_add_epi32(summ, mull);
  531|  1.18M|						mull = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));  summ = _mm256_add_epi32(summ, mull);
  532|  1.18M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  533|  1.18M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  534|  1.18M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  535|  1.18M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  536|  1.18M|						summ = _mm256_sra_epi32(summ, cnt);
  537|  1.18M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  538|  1.18M|					}
  539|   116k|				}
  540|   229k|			}
  541|   452k|		}
  542|  1.21M|		else if(order > 4) {
  ------------------
  |  Branch (542:11): [True: 517k, False: 695k]
  ------------------
  543|   517k|			if(order > 6) {
  ------------------
  |  Branch (543:7): [True: 245k, False: 272k]
  ------------------
  544|   245k|				if(order == 8) {
  ------------------
  |  Branch (544:8): [True: 118k, False: 126k]
  ------------------
  545|   118k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7;
  546|   118k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  547|   118k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  548|   118k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  549|   118k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  550|   118k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  551|   118k|					q5  = _mm256_set1_epi32(qlp_coeff[5 ]);
  552|   118k|					q6  = _mm256_set1_epi32(qlp_coeff[6 ]);
  553|   118k|					q7  = _mm256_set1_epi32(qlp_coeff[7 ]);
  554|       |
  555|  1.36M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (555:17): [True: 1.24M, False: 118k]
  ------------------
  556|  1.24M|						__m256i summ, mull;
  557|  1.24M|						summ = _mm256_mullo_epi32(q7,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-8)));
  558|  1.24M|						mull = _mm256_mullo_epi32(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7)));  summ = _mm256_add_epi32(summ, mull);
  559|  1.24M|						mull = _mm256_mullo_epi32(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6)));  summ = _mm256_add_epi32(summ, mull);
  560|  1.24M|						mull = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));  summ = _mm256_add_epi32(summ, mull);
  561|  1.24M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  562|  1.24M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  563|  1.24M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  564|  1.24M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  565|  1.24M|						summ = _mm256_sra_epi32(summ, cnt);
  566|  1.24M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  567|  1.24M|					}
  568|   118k|				}
  569|   126k|				else { /* order == 7 */
  570|   126k|					__m256i q0, q1, q2, q3, q4, q5, q6;
  571|   126k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  572|   126k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  573|   126k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  574|   126k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  575|   126k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  576|   126k|					q5  = _mm256_set1_epi32(qlp_coeff[5 ]);
  577|   126k|					q6  = _mm256_set1_epi32(qlp_coeff[6 ]);
  578|       |
  579|  1.53M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (579:17): [True: 1.40M, False: 126k]
  ------------------
  580|  1.40M|						__m256i summ, mull;
  581|  1.40M|						summ = _mm256_mullo_epi32(q6,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-7)));
  582|  1.40M|						mull = _mm256_mullo_epi32(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6)));  summ = _mm256_add_epi32(summ, mull);
  583|  1.40M|						mull = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));  summ = _mm256_add_epi32(summ, mull);
  584|  1.40M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  585|  1.40M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  586|  1.40M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  587|  1.40M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  588|  1.40M|						summ = _mm256_sra_epi32(summ, cnt);
  589|  1.40M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  590|  1.40M|					}
  591|   126k|				}
  592|   245k|			}
  593|   272k|			else {
  594|   272k|				if(order == 6) {
  ------------------
  |  Branch (594:8): [True: 130k, False: 141k]
  ------------------
  595|   130k|					__m256i q0, q1, q2, q3, q4, q5;
  596|   130k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  597|   130k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  598|   130k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  599|   130k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  600|   130k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  601|   130k|					q5  = _mm256_set1_epi32(qlp_coeff[5 ]);
  602|       |
  603|  1.55M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (603:17): [True: 1.42M, False: 130k]
  ------------------
  604|  1.42M|						__m256i summ, mull;
  605|  1.42M|						summ = _mm256_mullo_epi32(q5,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-6)));
  606|  1.42M|						mull = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));  summ = _mm256_add_epi32(summ, mull);
  607|  1.42M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  608|  1.42M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  609|  1.42M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  610|  1.42M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  611|  1.42M|						summ = _mm256_sra_epi32(summ, cnt);
  612|  1.42M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  613|  1.42M|					}
  614|   130k|				}
  615|   141k|				else { /* order == 5 */
  616|   141k|					__m256i q0, q1, q2, q3, q4;
  617|   141k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  618|   141k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  619|   141k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  620|   141k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  621|   141k|					q4  = _mm256_set1_epi32(qlp_coeff[4 ]);
  622|       |
  623|  1.58M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (623:17): [True: 1.44M, False: 141k]
  ------------------
  624|  1.44M|						__m256i summ, mull;
  625|  1.44M|						summ = _mm256_mullo_epi32(q4,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-5)));
  626|  1.44M|						mull = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));  summ = _mm256_add_epi32(summ, mull);
  627|  1.44M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  628|  1.44M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  629|  1.44M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  630|  1.44M|						summ = _mm256_sra_epi32(summ, cnt);
  631|  1.44M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  632|  1.44M|					}
  633|   141k|				}
  634|   272k|			}
  635|   517k|		}
  636|   695k|		else {
  637|   695k|			if(order > 2) {
  ------------------
  |  Branch (637:7): [True: 306k, False: 389k]
  ------------------
  638|   306k|				if(order == 4) {
  ------------------
  |  Branch (638:8): [True: 147k, False: 158k]
  ------------------
  639|   147k|					__m256i q0, q1, q2, q3;
  640|   147k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  641|   147k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  642|   147k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  643|   147k|					q3  = _mm256_set1_epi32(qlp_coeff[3 ]);
  644|       |
  645|  1.66M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (645:17): [True: 1.51M, False: 147k]
  ------------------
  646|  1.51M|						__m256i summ, mull;
  647|  1.51M|						summ = _mm256_mullo_epi32(q3,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-4)));
  648|  1.51M|						mull = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));  summ = _mm256_add_epi32(summ, mull);
  649|  1.51M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  650|  1.51M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  651|  1.51M|						summ = _mm256_sra_epi32(summ, cnt);
  652|  1.51M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  653|  1.51M|					}
  654|   147k|				}
  655|   158k|				else { /* order == 3 */
  656|   158k|					__m256i q0, q1, q2;
  657|   158k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  658|   158k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  659|   158k|					q2  = _mm256_set1_epi32(qlp_coeff[2 ]);
  660|       |
  661|  1.72M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (661:17): [True: 1.56M, False: 158k]
  ------------------
  662|  1.56M|						__m256i summ, mull;
  663|  1.56M|						summ = _mm256_mullo_epi32(q2,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-3)));
  664|  1.56M|						mull = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));  summ = _mm256_add_epi32(summ, mull);
  665|  1.56M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  666|  1.56M|						summ = _mm256_sra_epi32(summ, cnt);
  667|  1.56M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  668|  1.56M|					}
  669|   158k|				}
  670|   306k|			}
  671|   389k|			else {
  672|   389k|				if(order == 2) {
  ------------------
  |  Branch (672:8): [True: 164k, False: 224k]
  ------------------
  673|   164k|					__m256i q0, q1;
  674|   164k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  675|   164k|					q1  = _mm256_set1_epi32(qlp_coeff[1 ]);
  676|       |
  677|  1.95M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (677:17): [True: 1.79M, False: 164k]
  ------------------
  678|  1.79M|						__m256i summ, mull;
  679|  1.79M|						summ = _mm256_mullo_epi32(q1,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-2)));
  680|  1.79M|						mull = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));  summ = _mm256_add_epi32(summ, mull);
  681|  1.79M|						summ = _mm256_sra_epi32(summ, cnt);
  682|  1.79M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  683|  1.79M|					}
  684|   164k|				}
  685|   224k|				else { /* order == 1 */
  686|   224k|					__m256i q0;
  687|   224k|					q0  = _mm256_set1_epi32(qlp_coeff[0 ]);
  688|       |
  689|  2.39M|					for(i = 0; i < (int)data_len-7; i+=8) {
  ------------------
  |  Branch (689:17): [True: 2.16M, False: 224k]
  ------------------
  690|  2.16M|						__m256i summ;
  691|  2.16M|						summ = _mm256_mullo_epi32(q0,  _mm256_loadu_si256((const __m256i*)(const void*)(data+i-1)));
  692|  2.16M|						summ = _mm256_sra_epi32(summ, cnt);
  693|  2.16M|						_mm256_storeu_si256((__m256i*)(void*)(residual+i), _mm256_sub_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(data+i)), summ));
  694|  2.16M|					}
  695|   224k|				}
  696|   389k|			}
  697|   695k|		}
  698|  7.81M|		for(; i < (int)data_len; i++) {
  ------------------
  |  Branch (698:9): [True: 6.14M, False: 1.66M]
  ------------------
  699|  6.14M|			sum = 0;
  700|  6.14M|			switch(order) {
  ------------------
  |  Branch (700:11): [True: 6.16M, False: 18.4E]
  ------------------
  701|   440k|				case 12: sum += qlp_coeff[11] * data[i-12]; /* Falls through. */
  ------------------
  |  Branch (701:5): [True: 440k, False: 5.70M]
  ------------------
  702|   946k|				case 11: sum += qlp_coeff[10] * data[i-11]; /* Falls through. */
  ------------------
  |  Branch (702:5): [True: 505k, False: 5.64M]
  ------------------
  703|  1.56M|				case 10: sum += qlp_coeff[ 9] * data[i-10]; /* Falls through. */
  ------------------
  |  Branch (703:5): [True: 613k, False: 5.53M]
  ------------------
  704|  1.83M|				case 9:  sum += qlp_coeff[ 8] * data[i- 9]; /* Falls through. */
  ------------------
  |  Branch (704:5): [True: 274k, False: 5.87M]
  ------------------
  705|  2.02M|				case 8:  sum += qlp_coeff[ 7] * data[i- 8]; /* Falls through. */
  ------------------
  |  Branch (705:5): [True: 187k, False: 5.96M]
  ------------------
  706|  2.33M|				case 7:  sum += qlp_coeff[ 6] * data[i- 7]; /* Falls through. */
  ------------------
  |  Branch (706:5): [True: 310k, False: 5.83M]
  ------------------
  707|  2.77M|				case 6:  sum += qlp_coeff[ 5] * data[i- 6]; /* Falls through. */
  ------------------
  |  Branch (707:5): [True: 439k, False: 5.71M]
  ------------------
  708|  3.37M|				case 5:  sum += qlp_coeff[ 4] * data[i- 5]; /* Falls through. */
  ------------------
  |  Branch (708:5): [True: 597k, False: 5.55M]
  ------------------
  709|  3.94M|				case 4:  sum += qlp_coeff[ 3] * data[i- 4]; /* Falls through. */
  ------------------
  |  Branch (709:5): [True: 574k, False: 5.57M]
  ------------------
  710|  4.64M|				case 3:  sum += qlp_coeff[ 2] * data[i- 3]; /* Falls through. */
  ------------------
  |  Branch (710:5): [True: 695k, False: 5.45M]
  ------------------
  711|  5.50M|				case 2:  sum += qlp_coeff[ 1] * data[i- 2]; /* Falls through. */
  ------------------
  |  Branch (711:5): [True: 862k, False: 5.28M]
  ------------------
  712|  6.16M|				case 1:  sum += qlp_coeff[ 0] * data[i- 1];
  ------------------
  |  Branch (712:5): [True: 659k, False: 5.49M]
  ------------------
  713|  6.14M|			}
  714|  6.15M|			residual[i] = data[i] - (sum >> lp_quantization);
  715|  6.15M|		}
  716|  1.66M|	}
  717|   304k|	else { /* order > 12 */
  718|   151M|		for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (718:14): [True: 151M, False: 304k]
  ------------------
  719|   151M|			sum = 0;
  720|   151M|			switch(order) {
  ------------------
  |  Branch (720:11): [True: 151M, False: 18.4E]
  ------------------
  721|  6.97M|				case 32: sum += qlp_coeff[31] * data[i-32]; /* Falls through. */
  ------------------
  |  Branch (721:5): [True: 6.97M, False: 144M]
  ------------------
  722|  14.0M|				case 31: sum += qlp_coeff[30] * data[i-31]; /* Falls through. */
  ------------------
  |  Branch (722:5): [True: 7.07M, False: 143M]
  ------------------
  723|  21.1M|				case 30: sum += qlp_coeff[29] * data[i-30]; /* Falls through. */
  ------------------
  |  Branch (723:5): [True: 7.10M, False: 143M]
  ------------------
  724|  28.2M|				case 29: sum += qlp_coeff[28] * data[i-29]; /* Falls through. */
  ------------------
  |  Branch (724:5): [True: 7.09M, False: 143M]
  ------------------
  725|  35.3M|				case 28: sum += qlp_coeff[27] * data[i-28]; /* Falls through. */
  ------------------
  |  Branch (725:5): [True: 7.09M, False: 143M]
  ------------------
  726|  42.4M|				case 27: sum += qlp_coeff[26] * data[i-27]; /* Falls through. */
  ------------------
  |  Branch (726:5): [True: 7.14M, False: 143M]
  ------------------
  727|  49.6M|				case 26: sum += qlp_coeff[25] * data[i-26]; /* Falls through. */
  ------------------
  |  Branch (727:5): [True: 7.13M, False: 143M]
  ------------------
  728|  56.7M|				case 25: sum += qlp_coeff[24] * data[i-25]; /* Falls through. */
  ------------------
  |  Branch (728:5): [True: 7.14M, False: 143M]
  ------------------
  729|  63.9M|				case 24: sum += qlp_coeff[23] * data[i-24]; /* Falls through. */
  ------------------
  |  Branch (729:5): [True: 7.18M, False: 143M]
  ------------------
  730|  71.5M|				case 23: sum += qlp_coeff[22] * data[i-23]; /* Falls through. */
  ------------------
  |  Branch (730:5): [True: 7.55M, False: 143M]
  ------------------
  731|  79.0M|				case 22: sum += qlp_coeff[21] * data[i-22]; /* Falls through. */
  ------------------
  |  Branch (731:5): [True: 7.57M, False: 143M]
  ------------------
  732|  86.6M|				case 21: sum += qlp_coeff[20] * data[i-21]; /* Falls through. */
  ------------------
  |  Branch (732:5): [True: 7.57M, False: 143M]
  ------------------
  733|  94.2M|				case 20: sum += qlp_coeff[19] * data[i-20]; /* Falls through. */
  ------------------
  |  Branch (733:5): [True: 7.60M, False: 143M]
  ------------------
  734|   101M|				case 19: sum += qlp_coeff[18] * data[i-19]; /* Falls through. */
  ------------------
  |  Branch (734:5): [True: 7.63M, False: 143M]
  ------------------
  735|   109M|				case 18: sum += qlp_coeff[17] * data[i-18]; /* Falls through. */
  ------------------
  |  Branch (735:5): [True: 7.76M, False: 143M]
  ------------------
  736|   117M|				case 17: sum += qlp_coeff[16] * data[i-17]; /* Falls through. */
  ------------------
  |  Branch (736:5): [True: 7.84M, False: 143M]
  ------------------
  737|   125M|				case 16: sum += qlp_coeff[15] * data[i-16]; /* Falls through. */
  ------------------
  |  Branch (737:5): [True: 7.87M, False: 143M]
  ------------------
  738|   133M|				case 15: sum += qlp_coeff[14] * data[i-15]; /* Falls through. */
  ------------------
  |  Branch (738:5): [True: 7.91M, False: 143M]
  ------------------
  739|   142M|				case 14: sum += qlp_coeff[13] * data[i-14]; /* Falls through. */
  ------------------
  |  Branch (739:5): [True: 8.74M, False: 142M]
  ------------------
  740|   151M|				case 13: sum += qlp_coeff[12] * data[i-13];
  ------------------
  |  Branch (740:5): [True: 8.99M, False: 142M]
  ------------------
  741|   151M|				         sum += qlp_coeff[11] * data[i-12];
  742|   151M|				         sum += qlp_coeff[10] * data[i-11];
  743|   151M|				         sum += qlp_coeff[ 9] * data[i-10];
  744|   151M|				         sum += qlp_coeff[ 8] * data[i- 9];
  745|   151M|				         sum += qlp_coeff[ 7] * data[i- 8];
  746|   151M|				         sum += qlp_coeff[ 6] * data[i- 7];
  747|   151M|				         sum += qlp_coeff[ 5] * data[i- 6];
  748|   151M|				         sum += qlp_coeff[ 4] * data[i- 5];
  749|   151M|				         sum += qlp_coeff[ 3] * data[i- 4];
  750|   151M|				         sum += qlp_coeff[ 2] * data[i- 3];
  751|   151M|				         sum += qlp_coeff[ 1] * data[i- 2];
  752|   151M|				         sum += qlp_coeff[ 0] * data[i- 1];
  753|   151M|			}
  754|   151M|			residual[i] = data[i] - (sum >> lp_quantization);
  755|   151M|		}
  756|   304k|	}
  757|  1.97M|	_mm256_zeroupper();
  758|  1.97M|}
FLAC__lpc_compute_residual_from_qlp_coefficients_wide_intrin_avx2:
  764|  3.34M|{
  765|  3.34M|	int i;
  766|  3.34M|	FLAC__int64 sum;
  767|  3.34M|	const __m128i cnt = _mm_cvtsi32_si128(lp_quantization);
  768|  3.34M|	const __m256i pack = _mm256_loadu_si256((const __m256i *)(const void*)pack_arr);
  769|       |
  770|  3.34M|	FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  3.34M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 3.34M]
  |  |  ------------------
  ------------------
  771|  3.34M|	FLAC__ASSERT(order <= 32);
  ------------------
  |  |   38|  3.34M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 3.34M]
  |  |  ------------------
  ------------------
  772|  3.34M|	FLAC__ASSERT(lp_quantization <= 32); /* there's no _mm256_sra_epi64() so we have to use _mm256_srl_epi64() */
  ------------------
  |  |   38|  3.34M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 3.34M]
  |  |  ------------------
  ------------------
  773|       |
  774|  3.34M|	if(order <= 12) {
  ------------------
  |  Branch (774:5): [True: 2.69M, False: 644k]
  ------------------
  775|  2.69M|		if(order > 8) {
  ------------------
  |  Branch (775:6): [True: 929k, False: 1.76M]
  ------------------
  776|   929k|			if(order > 10) {
  ------------------
  |  Branch (776:7): [True: 466k, False: 462k]
  ------------------
  777|   466k|				if(order == 12) {
  ------------------
  |  Branch (777:8): [True: 233k, False: 232k]
  ------------------
  778|   233k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11;
  779|   233k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  780|   233k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  781|   233k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  782|   233k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  783|   233k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  784|   233k|					q5  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[5 ]));
  785|   233k|					q6  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[6 ]));
  786|   233k|					q7  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[7 ]));
  787|   233k|					q8  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[8 ]));
  788|   233k|					q9  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[9 ]));
  789|   233k|					q10 = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[10]));
  790|   233k|					q11 = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[11]));
  791|       |
  792|  6.26M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (792:17): [True: 6.02M, False: 233k]
  ------------------
  793|  6.02M|						__m256i summ, mull;
  794|  6.02M|						summ = _mm256_mul_epi32(q11, _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-12))));
  795|  6.02M|						mull = _mm256_mul_epi32(q10, _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-11)))); summ = _mm256_add_epi64(summ, mull);
  796|  6.02M|						mull = _mm256_mul_epi32(q9,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-10)))); summ = _mm256_add_epi64(summ, mull);
  797|  6.02M|						mull = _mm256_mul_epi32(q8,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-9 )))); summ = _mm256_add_epi64(summ, mull);
  798|  6.02M|						mull = _mm256_mul_epi32(q7,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-8 )))); summ = _mm256_add_epi64(summ, mull);
  799|  6.02M|						mull = _mm256_mul_epi32(q6,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-7 )))); summ = _mm256_add_epi64(summ, mull);
  800|  6.02M|						mull = _mm256_mul_epi32(q5,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-6 )))); summ = _mm256_add_epi64(summ, mull);
  801|  6.02M|						mull = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 )))); summ = _mm256_add_epi64(summ, mull);
  802|  6.02M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  803|  6.02M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  804|  6.02M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  805|  6.02M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  806|  6.02M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  807|  6.02M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  808|  6.02M|					}
  809|   233k|				}
  810|   232k|				else { /* order == 11 */
  811|   232k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10;
  812|   232k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  813|   232k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  814|   232k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  815|   232k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  816|   232k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  817|   232k|					q5  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[5 ]));
  818|   232k|					q6  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[6 ]));
  819|   232k|					q7  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[7 ]));
  820|   232k|					q8  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[8 ]));
  821|   232k|					q9  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[9 ]));
  822|   232k|					q10 = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[10]));
  823|       |
  824|  6.25M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (824:17): [True: 6.01M, False: 232k]
  ------------------
  825|  6.01M|						__m256i summ, mull;
  826|  6.01M|						summ = _mm256_mul_epi32(q10, _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-11))));
  827|  6.01M|						mull = _mm256_mul_epi32(q9,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-10)))); summ = _mm256_add_epi64(summ, mull);
  828|  6.01M|						mull = _mm256_mul_epi32(q8,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-9 )))); summ = _mm256_add_epi64(summ, mull);
  829|  6.01M|						mull = _mm256_mul_epi32(q7,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-8 )))); summ = _mm256_add_epi64(summ, mull);
  830|  6.01M|						mull = _mm256_mul_epi32(q6,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-7 )))); summ = _mm256_add_epi64(summ, mull);
  831|  6.01M|						mull = _mm256_mul_epi32(q5,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-6 )))); summ = _mm256_add_epi64(summ, mull);
  832|  6.01M|						mull = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 )))); summ = _mm256_add_epi64(summ, mull);
  833|  6.01M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  834|  6.01M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  835|  6.01M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  836|  6.01M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  837|  6.01M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  838|  6.01M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  839|  6.01M|					}
  840|   232k|				}
  841|   466k|			}
  842|   462k|			else {
  843|   462k|				if(order == 10) {
  ------------------
  |  Branch (843:8): [True: 231k, False: 230k]
  ------------------
  844|   231k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8, q9;
  845|   231k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  846|   231k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  847|   231k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  848|   231k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  849|   231k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  850|   231k|					q5  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[5 ]));
  851|   231k|					q6  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[6 ]));
  852|   231k|					q7  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[7 ]));
  853|   231k|					q8  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[8 ]));
  854|   231k|					q9  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[9 ]));
  855|       |
  856|  6.24M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (856:17): [True: 6.01M, False: 231k]
  ------------------
  857|  6.01M|						__m256i summ, mull;
  858|  6.01M|						summ = _mm256_mul_epi32(q9,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-10))));
  859|  6.01M|						mull = _mm256_mul_epi32(q8,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-9 )))); summ = _mm256_add_epi64(summ, mull);
  860|  6.01M|						mull = _mm256_mul_epi32(q7,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-8 )))); summ = _mm256_add_epi64(summ, mull);
  861|  6.01M|						mull = _mm256_mul_epi32(q6,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-7 )))); summ = _mm256_add_epi64(summ, mull);
  862|  6.01M|						mull = _mm256_mul_epi32(q5,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-6 )))); summ = _mm256_add_epi64(summ, mull);
  863|  6.01M|						mull = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 )))); summ = _mm256_add_epi64(summ, mull);
  864|  6.01M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  865|  6.01M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  866|  6.01M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  867|  6.01M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  868|  6.01M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  869|  6.01M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  870|  6.01M|					}
  871|   231k|				}
  872|   230k|				else { /* order == 9 */
  873|   230k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7, q8;
  874|   230k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  875|   230k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  876|   230k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  877|   230k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  878|   230k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  879|   230k|					q5  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[5 ]));
  880|   230k|					q6  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[6 ]));
  881|   230k|					q7  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[7 ]));
  882|   230k|					q8  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[8 ]));
  883|       |
  884|  6.38M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (884:17): [True: 6.15M, False: 230k]
  ------------------
  885|  6.15M|						__m256i summ, mull;
  886|  6.15M|						summ = _mm256_mul_epi32(q8,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-9 ))));
  887|  6.15M|						mull = _mm256_mul_epi32(q7,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-8 )))); summ = _mm256_add_epi64(summ, mull);
  888|  6.15M|						mull = _mm256_mul_epi32(q6,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-7 )))); summ = _mm256_add_epi64(summ, mull);
  889|  6.15M|						mull = _mm256_mul_epi32(q5,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-6 )))); summ = _mm256_add_epi64(summ, mull);
  890|  6.15M|						mull = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 )))); summ = _mm256_add_epi64(summ, mull);
  891|  6.15M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  892|  6.15M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  893|  6.15M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  894|  6.15M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  895|  6.15M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  896|  6.15M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  897|  6.15M|					}
  898|   230k|				}
  899|   462k|			}
  900|   929k|		}
  901|  1.76M|		else if(order > 4) {
  ------------------
  |  Branch (901:11): [True: 902k, False: 866k]
  ------------------
  902|   902k|			if(order > 6) {
  ------------------
  |  Branch (902:7): [True: 456k, False: 445k]
  ------------------
  903|   456k|				if(order == 8) {
  ------------------
  |  Branch (903:8): [True: 230k, False: 226k]
  ------------------
  904|   230k|					__m256i q0, q1, q2, q3, q4, q5, q6, q7;
  905|   230k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  906|   230k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  907|   230k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  908|   230k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  909|   230k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  910|   230k|					q5  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[5 ]));
  911|   230k|					q6  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[6 ]));
  912|   230k|					q7  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[7 ]));
  913|       |
  914|  6.40M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (914:17): [True: 6.17M, False: 230k]
  ------------------
  915|  6.17M|						__m256i summ, mull;
  916|  6.17M|						summ = _mm256_mul_epi32(q7,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-8 ))));
  917|  6.17M|						mull = _mm256_mul_epi32(q6,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-7 )))); summ = _mm256_add_epi64(summ, mull);
  918|  6.17M|						mull = _mm256_mul_epi32(q5,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-6 )))); summ = _mm256_add_epi64(summ, mull);
  919|  6.17M|						mull = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 )))); summ = _mm256_add_epi64(summ, mull);
  920|  6.17M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  921|  6.17M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  922|  6.17M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  923|  6.17M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  924|  6.17M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  925|  6.17M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  926|  6.17M|					}
  927|   230k|				}
  928|   226k|				else { /* order == 7 */
  929|   226k|					__m256i q0, q1, q2, q3, q4, q5, q6;
  930|   226k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  931|   226k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  932|   226k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  933|   226k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  934|   226k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  935|   226k|					q5  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[5 ]));
  936|   226k|					q6  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[6 ]));
  937|       |
  938|  6.11M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (938:17): [True: 5.89M, False: 226k]
  ------------------
  939|  5.89M|						__m256i summ, mull;
  940|  5.89M|						summ = _mm256_mul_epi32(q6,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-7 ))));
  941|  5.89M|						mull = _mm256_mul_epi32(q5,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-6 )))); summ = _mm256_add_epi64(summ, mull);
  942|  5.89M|						mull = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 )))); summ = _mm256_add_epi64(summ, mull);
  943|  5.89M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  944|  5.89M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  945|  5.89M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  946|  5.89M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  947|  5.89M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  948|  5.89M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  949|  5.89M|					}
  950|   226k|				}
  951|   456k|			}
  952|   445k|			else {
  953|   445k|				if(order == 6) {
  ------------------
  |  Branch (953:8): [True: 224k, False: 221k]
  ------------------
  954|   224k|					__m256i q0, q1, q2, q3, q4, q5;
  955|   224k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  956|   224k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  957|   224k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  958|   224k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  959|   224k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  960|   224k|					q5  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[5 ]));
  961|       |
  962|  6.08M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (962:17): [True: 5.86M, False: 224k]
  ------------------
  963|  5.86M|						__m256i summ, mull;
  964|  5.86M|						summ = _mm256_mul_epi32(q5,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-6 ))));
  965|  5.86M|						mull = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 )))); summ = _mm256_add_epi64(summ, mull);
  966|  5.86M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  967|  5.86M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  968|  5.86M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  969|  5.86M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  970|  5.86M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  971|  5.86M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  972|  5.86M|					}
  973|   224k|				}
  974|   221k|				else { /* order == 5 */
  975|   221k|					__m256i q0, q1, q2, q3, q4;
  976|   221k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
  977|   221k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
  978|   221k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
  979|   221k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
  980|   221k|					q4  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[4 ]));
  981|       |
  982|  6.20M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (982:17): [True: 5.98M, False: 221k]
  ------------------
  983|  5.98M|						__m256i summ, mull;
  984|  5.98M|						summ = _mm256_mul_epi32(q4,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-5 ))));
  985|  5.98M|						mull = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 )))); summ = _mm256_add_epi64(summ, mull);
  986|  5.98M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
  987|  5.98M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
  988|  5.98M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
  989|  5.98M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
  990|  5.98M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
  991|  5.98M|					}
  992|   221k|				}
  993|   445k|			}
  994|   902k|		}
  995|   866k|		else {
  996|   866k|			if(order > 2) {
  ------------------
  |  Branch (996:7): [True: 431k, False: 434k]
  ------------------
  997|   431k|				if(order == 4) {
  ------------------
  |  Branch (997:8): [True: 221k, False: 209k]
  ------------------
  998|   221k|					__m256i q0, q1, q2, q3;
  999|   221k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
 1000|   221k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
 1001|   221k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
 1002|   221k|					q3  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[3 ]));
 1003|       |
 1004|  6.14M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (1004:17): [True: 5.92M, False: 221k]
  ------------------
 1005|  5.92M|						__m256i summ, mull;
 1006|  5.92M|						summ = _mm256_mul_epi32(q3,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-4 ))));
 1007|  5.92M|						mull = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 )))); summ = _mm256_add_epi64(summ, mull);
 1008|  5.92M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
 1009|  5.92M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
 1010|  5.92M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
 1011|  5.92M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
 1012|  5.92M|					}
 1013|   221k|				}
 1014|   209k|				else { /* order == 3 */
 1015|   209k|					__m256i q0, q1, q2;
 1016|   209k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
 1017|   209k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
 1018|   209k|					q2  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[2 ]));
 1019|       |
 1020|  6.06M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (1020:17): [True: 5.85M, False: 209k]
  ------------------
 1021|  5.85M|						__m256i summ, mull;
 1022|  5.85M|						summ = _mm256_mul_epi32(q2,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-3 ))));
 1023|  5.85M|						mull = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 )))); summ = _mm256_add_epi64(summ, mull);
 1024|  5.85M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
 1025|  5.85M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
 1026|  5.85M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
 1027|  5.85M|					}
 1028|   209k|				}
 1029|   431k|			}
 1030|   434k|			else {
 1031|   434k|				if(order == 2) {
  ------------------
  |  Branch (1031:8): [True: 203k, False: 231k]
  ------------------
 1032|   203k|					__m256i q0, q1;
 1033|   203k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
 1034|   203k|					q1  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[1 ]));
 1035|       |
 1036|  5.58M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (1036:17): [True: 5.38M, False: 203k]
  ------------------
 1037|  5.38M|						__m256i summ, mull;
 1038|  5.38M|						summ = _mm256_mul_epi32(q1,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-2 ))));
 1039|  5.38M|						mull = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 )))); summ = _mm256_add_epi64(summ, mull);
 1040|  5.38M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
 1041|  5.38M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
 1042|  5.38M|					}
 1043|   203k|				}
 1044|   231k|				else { /* order == 1 */
 1045|   231k|					__m256i q0;
 1046|   231k|					q0  = _mm256_cvtepu32_epi64(_mm_set1_epi32(qlp_coeff[0 ]));
 1047|       |
 1048|  5.67M|					for(i = 0; i < (int)data_len-3; i+=4) {
  ------------------
  |  Branch (1048:17): [True: 5.44M, False: 231k]
  ------------------
 1049|  5.44M|						__m256i summ;
 1050|  5.44M|						summ = _mm256_mul_epi32(q0,  _mm256_cvtepu32_epi64(_mm_loadu_si128((const __m128i*)(const void*)(data+i-1 ))));
 1051|  5.44M|						summ = _mm256_permutevar8x32_epi32(_mm256_srl_epi64(summ, cnt), pack);
 1052|  5.44M|						_mm_storeu_si128((__m128i*)(void*)(residual+i), _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(const void*)(data+i)), _mm256_castsi256_si128(summ)));
 1053|  5.44M|					}
 1054|   231k|				}
 1055|   434k|			}
 1056|   866k|		}
 1057|  6.67M|		for(; i < (int)data_len; i++) {
  ------------------
  |  Branch (1057:9): [True: 3.97M, False: 2.69M]
  ------------------
 1058|  3.97M|			sum = 0;
 1059|  3.97M|			switch(order) {
  ------------------
  |  Branch (1059:11): [True: 3.98M, False: 18.4E]
  ------------------
 1060|   170k|				case 12: sum += qlp_coeff[11] * (FLAC__int64)data[i-12]; /* Falls through. */
  ------------------
  |  Branch (1060:5): [True: 170k, False: 3.80M]
  ------------------
 1061|   535k|				case 11: sum += qlp_coeff[10] * (FLAC__int64)data[i-11]; /* Falls through. */
  ------------------
  |  Branch (1061:5): [True: 364k, False: 3.60M]
  ------------------
 1062|  1.11M|				case 10: sum += qlp_coeff[ 9] * (FLAC__int64)data[i-10]; /* Falls through. */
  ------------------
  |  Branch (1062:5): [True: 579k, False: 3.39M]
  ------------------
 1063|  1.39M|				case 9:  sum += qlp_coeff[ 8] * (FLAC__int64)data[i- 9]; /* Falls through. */
  ------------------
  |  Branch (1063:5): [True: 281k, False: 3.69M]
  ------------------
 1064|  1.56M|				case 8:  sum += qlp_coeff[ 7] * (FLAC__int64)data[i- 8]; /* Falls through. */
  ------------------
  |  Branch (1064:5): [True: 167k, False: 3.80M]
  ------------------
 1065|  1.91M|				case 7:  sum += qlp_coeff[ 6] * (FLAC__int64)data[i- 7]; /* Falls through. */
  ------------------
  |  Branch (1065:5): [True: 353k, False: 3.61M]
  ------------------
 1066|  2.47M|				case 6:  sum += qlp_coeff[ 5] * (FLAC__int64)data[i- 6]; /* Falls through. */
  ------------------
  |  Branch (1066:5): [True: 556k, False: 3.41M]
  ------------------
 1067|  2.74M|				case 5:  sum += qlp_coeff[ 4] * (FLAC__int64)data[i- 5]; /* Falls through. */
  ------------------
  |  Branch (1067:5): [True: 269k, False: 3.70M]
  ------------------
 1068|  2.91M|				case 4:  sum += qlp_coeff[ 3] * (FLAC__int64)data[i- 4]; /* Falls through. */
  ------------------
  |  Branch (1068:5): [True: 170k, False: 3.80M]
  ------------------
 1069|  3.24M|				case 3:  sum += qlp_coeff[ 2] * (FLAC__int64)data[i- 3]; /* Falls through. */
  ------------------
  |  Branch (1069:5): [True: 331k, False: 3.64M]
  ------------------
 1070|  3.75M|				case 2:  sum += qlp_coeff[ 1] * (FLAC__int64)data[i- 2]; /* Falls through. */
  ------------------
  |  Branch (1070:5): [True: 507k, False: 3.46M]
  ------------------
 1071|  3.98M|				case 1:  sum += qlp_coeff[ 0] * (FLAC__int64)data[i- 1];
  ------------------
  |  Branch (1071:5): [True: 235k, False: 3.73M]
  ------------------
 1072|  3.97M|			}
 1073|  3.97M|			residual[i] = data[i] - (FLAC__int32)(sum >> lp_quantization);
 1074|  3.97M|		}
 1075|  2.69M|	}
 1076|   644k|	else { /* order > 12 */
 1077|   218M|		for(i = 0; i < (int)data_len; i++) {
  ------------------
  |  Branch (1077:14): [True: 217M, False: 644k]
  ------------------
 1078|   217M|			sum = 0;
 1079|   217M|			switch(order) {
  ------------------
  |  Branch (1079:11): [True: 217M, False: 18.4E]
  ------------------
 1080|  9.39M|				case 32: sum += qlp_coeff[31] * (FLAC__int64)data[i-32]; /* Falls through. */
  ------------------
  |  Branch (1080:5): [True: 9.39M, False: 208M]
  ------------------
 1081|  18.9M|				case 31: sum += qlp_coeff[30] * (FLAC__int64)data[i-31]; /* Falls through. */
  ------------------
  |  Branch (1081:5): [True: 9.57M, False: 208M]
  ------------------
 1082|  28.5M|				case 30: sum += qlp_coeff[29] * (FLAC__int64)data[i-30]; /* Falls through. */
  ------------------
  |  Branch (1082:5): [True: 9.55M, False: 208M]
  ------------------
 1083|  38.1M|				case 29: sum += qlp_coeff[28] * (FLAC__int64)data[i-29]; /* Falls through. */
  ------------------
  |  Branch (1083:5): [True: 9.57M, False: 208M]
  ------------------
 1084|  47.6M|				case 28: sum += qlp_coeff[27] * (FLAC__int64)data[i-28]; /* Falls through. */
  ------------------
  |  Branch (1084:5): [True: 9.58M, False: 208M]
  ------------------
 1085|  57.2M|				case 27: sum += qlp_coeff[26] * (FLAC__int64)data[i-27]; /* Falls through. */
  ------------------
  |  Branch (1085:5): [True: 9.54M, False: 208M]
  ------------------
 1086|  66.8M|				case 26: sum += qlp_coeff[25] * (FLAC__int64)data[i-26]; /* Falls through. */
  ------------------
  |  Branch (1086:5): [True: 9.56M, False: 208M]
  ------------------
 1087|  76.3M|				case 25: sum += qlp_coeff[24] * (FLAC__int64)data[i-25]; /* Falls through. */
  ------------------
  |  Branch (1087:5): [True: 9.56M, False: 208M]
  ------------------
 1088|  85.9M|				case 24: sum += qlp_coeff[23] * (FLAC__int64)data[i-24]; /* Falls through. */
  ------------------
  |  Branch (1088:5): [True: 9.56M, False: 208M]
  ------------------
 1089|  95.1M|				case 23: sum += qlp_coeff[22] * (FLAC__int64)data[i-23]; /* Falls through. */
  ------------------
  |  Branch (1089:5): [True: 9.20M, False: 208M]
  ------------------
 1090|   104M|				case 22: sum += qlp_coeff[21] * (FLAC__int64)data[i-22]; /* Falls through. */
  ------------------
  |  Branch (1090:5): [True: 9.20M, False: 208M]
  ------------------
 1091|   113M|				case 21: sum += qlp_coeff[20] * (FLAC__int64)data[i-21]; /* Falls through. */
  ------------------
  |  Branch (1091:5): [True: 9.21M, False: 208M]
  ------------------
 1092|   122M|				case 20: sum += qlp_coeff[19] * (FLAC__int64)data[i-20]; /* Falls through. */
  ------------------
  |  Branch (1092:5): [True: 9.21M, False: 208M]
  ------------------
 1093|   131M|				case 19: sum += qlp_coeff[18] * (FLAC__int64)data[i-19]; /* Falls through. */
  ------------------
  |  Branch (1093:5): [True: 9.19M, False: 208M]
  ------------------
 1094|   141M|				case 18: sum += qlp_coeff[17] * (FLAC__int64)data[i-18]; /* Falls through. */
  ------------------
  |  Branch (1094:5): [True: 9.08M, False: 208M]
  ------------------
 1095|   150M|				case 17: sum += qlp_coeff[16] * (FLAC__int64)data[i-17]; /* Falls through. */
  ------------------
  |  Branch (1095:5): [True: 9.02M, False: 208M]
  ------------------
 1096|   159M|				case 16: sum += qlp_coeff[15] * (FLAC__int64)data[i-16]; /* Falls through. */
  ------------------
  |  Branch (1096:5): [True: 9.05M, False: 208M]
  ------------------
 1097|   168M|				case 15: sum += qlp_coeff[14] * (FLAC__int64)data[i-15]; /* Falls through. */
  ------------------
  |  Branch (1097:5): [True: 9.05M, False: 208M]
  ------------------
 1098|   193M|				case 14: sum += qlp_coeff[13] * (FLAC__int64)data[i-14]; /* Falls through. */
  ------------------
  |  Branch (1098:5): [True: 25.5M, False: 192M]
  ------------------
 1099|   217M|				case 13: sum += qlp_coeff[12] * (FLAC__int64)data[i-13];
  ------------------
  |  Branch (1099:5): [True: 24.0M, False: 193M]
  ------------------
 1100|   217M|				         sum += qlp_coeff[11] * (FLAC__int64)data[i-12];
 1101|   217M|				         sum += qlp_coeff[10] * (FLAC__int64)data[i-11];
 1102|   217M|				         sum += qlp_coeff[ 9] * (FLAC__int64)data[i-10];
 1103|   217M|				         sum += qlp_coeff[ 8] * (FLAC__int64)data[i- 9];
 1104|   217M|				         sum += qlp_coeff[ 7] * (FLAC__int64)data[i- 8];
 1105|   217M|				         sum += qlp_coeff[ 6] * (FLAC__int64)data[i- 7];
 1106|   217M|				         sum += qlp_coeff[ 5] * (FLAC__int64)data[i- 6];
 1107|   217M|				         sum += qlp_coeff[ 4] * (FLAC__int64)data[i- 5];
 1108|   217M|				         sum += qlp_coeff[ 3] * (FLAC__int64)data[i- 4];
 1109|   217M|				         sum += qlp_coeff[ 2] * (FLAC__int64)data[i- 3];
 1110|   217M|				         sum += qlp_coeff[ 1] * (FLAC__int64)data[i- 2];
 1111|   217M|				         sum += qlp_coeff[ 0] * (FLAC__int64)data[i- 1];
 1112|   217M|			}
 1113|   217M|			residual[i] = data[i] - (FLAC__int32)(sum >> lp_quantization);
 1114|   217M|		}
 1115|   644k|	}
 1116|  3.34M|	_mm256_zeroupper();
 1117|  3.34M|}

FLAC__lpc_compute_autocorrelation_intrin_fma_lag_8:
   48|  4.05k|{
   49|  4.05k|#undef MAX_LAG
   50|  4.05k|#define MAX_LAG 8
   51|  4.05k|#include "deduplication/lpc_compute_autocorrelation_intrin.c"
  ------------------
  |  |    1|  4.05k|	int i, j;
  |  |    2|  4.05k|	(void) lag;
  |  |    3|  4.05k|	FLAC__ASSERT(lag <= MAX_LAG);
  |  |  ------------------
  |  |  |  |   38|  4.05k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 4.05k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    4|       |
  |  |    5|  36.4k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |   50|  36.4k|#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (5:20): [True: 32.4k, False: 4.05k]
  |  |  ------------------
  |  |    6|  32.4k|                autoc[i] = 0.0;
  |  |    7|       |
  |  |    8|  36.4k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |   50|  36.4k|#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (8:20): [True: 32.4k, False: 4.05k]
  |  |  ------------------
  |  |    9|   178k|                for(j = 0; j <= i; j++)
  |  |  ------------------
  |  |  |  Branch (9:28): [True: 145k, False: 32.4k]
  |  |  ------------------
  |  |   10|   145k|                        autoc[j] += (double)data[i] * (double)data[i-j];
  |  |   11|       |
  |  |   12|  4.85M|        for(i = MAX_LAG; i < (int)data_len; i++)
  |  |  ------------------
  |  |  |  |   50|  4.05k|#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (12:26): [True: 4.85M, False: 4.05k]
  |  |  ------------------
  |  |   13|  43.6M|		for(j = 0; j < MAX_LAG; j++)
  |  |  ------------------
  |  |  |  |   50|  43.6M|#define MAX_LAG 8
  |  |  ------------------
  |  |  |  Branch (13:14): [True: 38.8M, False: 4.85M]
  |  |  ------------------
  |  |   14|  38.8M|	                autoc[j] += (double)data[i] * (double)data[i-j];
  ------------------
   52|  4.05k|}
FLAC__lpc_compute_autocorrelation_intrin_fma_lag_12:
   56|  28.5k|{
   57|  28.5k|#undef MAX_LAG
   58|  28.5k|#define MAX_LAG 12
   59|  28.5k|#include "deduplication/lpc_compute_autocorrelation_intrin.c"
  ------------------
  |  |    1|  28.5k|	int i, j;
  |  |    2|  28.5k|	(void) lag;
  |  |    3|  28.5k|	FLAC__ASSERT(lag <= MAX_LAG);
  |  |  ------------------
  |  |  |  |   38|  28.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 28.5k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    4|       |
  |  |    5|   370k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |   58|   370k|#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (5:20): [True: 342k, False: 28.5k]
  |  |  ------------------
  |  |    6|   342k|                autoc[i] = 0.0;
  |  |    7|       |
  |  |    8|   370k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |   58|   370k|#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (8:20): [True: 342k, False: 28.5k]
  |  |  ------------------
  |  |    9|  2.56M|                for(j = 0; j <= i; j++)
  |  |  ------------------
  |  |  |  Branch (9:28): [True: 2.22M, False: 342k]
  |  |  ------------------
  |  |   10|  2.22M|                        autoc[j] += (double)data[i] * (double)data[i-j];
  |  |   11|       |
  |  |   12|  4.13M|        for(i = MAX_LAG; i < (int)data_len; i++)
  |  |  ------------------
  |  |  |  |   58|  28.5k|#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (12:26): [True: 4.10M, False: 28.5k]
  |  |  ------------------
  |  |   13|  53.3M|		for(j = 0; j < MAX_LAG; j++)
  |  |  ------------------
  |  |  |  |   58|  53.3M|#define MAX_LAG 12
  |  |  ------------------
  |  |  |  Branch (13:14): [True: 49.2M, False: 4.10M]
  |  |  ------------------
  |  |   14|  49.2M|	                autoc[j] += (double)data[i] * (double)data[i-j];
  ------------------
   60|  28.5k|}
FLAC__lpc_compute_autocorrelation_intrin_fma_lag_16:
   63|  19.6k|{
   64|  19.6k|#undef MAX_LAG
   65|  19.6k|#define MAX_LAG 16
   66|  19.6k|#include "deduplication/lpc_compute_autocorrelation_intrin.c"
  ------------------
  |  |    1|  19.6k|	int i, j;
  |  |    2|  19.6k|	(void) lag;
  |  |    3|  19.6k|	FLAC__ASSERT(lag <= MAX_LAG);
  |  |  ------------------
  |  |  |  |   38|  19.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (38:28): [True: 0, False: 19.6k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |    4|       |
  |  |    5|   333k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |   65|   333k|#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (5:20): [True: 313k, False: 19.6k]
  |  |  ------------------
  |  |    6|   313k|                autoc[i] = 0.0;
  |  |    7|       |
  |  |    8|   332k|        for(i = 0; i < MAX_LAG; i++)
  |  |  ------------------
  |  |  |  |   65|   332k|#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (8:20): [True: 312k, False: 19.6k]
  |  |  ------------------
  |  |    9|  2.96M|                for(j = 0; j <= i; j++)
  |  |  ------------------
  |  |  |  Branch (9:28): [True: 2.64M, False: 312k]
  |  |  ------------------
  |  |   10|  2.64M|                        autoc[j] += (double)data[i] * (double)data[i-j];
  |  |   11|       |
  |  |   12|  7.64M|        for(i = MAX_LAG; i < (int)data_len; i++)
  |  |  ------------------
  |  |  |  |   65|  19.6k|#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (12:26): [True: 7.62M, False: 19.6k]
  |  |  ------------------
  |  |   13|   129M|		for(j = 0; j < MAX_LAG; j++)
  |  |  ------------------
  |  |  |  |   65|   129M|#define MAX_LAG 16
  |  |  ------------------
  |  |  |  Branch (13:14): [True: 122M, False: 7.62M]
  |  |  ------------------
  |  |   14|   122M|	                autoc[j] += (double)data[i] * (double)data[i-j];
  ------------------
   67|       |
   68|  19.6k|}

FLAC__MD5Init:
  224|  17.8k|{
  225|  17.8k|	ctx->buf[0] = 0x67452301;
  226|  17.8k|	ctx->buf[1] = 0xefcdab89;
  227|  17.8k|	ctx->buf[2] = 0x98badcfe;
  228|  17.8k|	ctx->buf[3] = 0x10325476;
  229|       |
  230|  17.8k|	ctx->bytes[0] = 0;
  231|  17.8k|	ctx->bytes[1] = 0;
  232|       |
  233|  17.8k|	ctx->internal_buf.p8 = 0;
  234|  17.8k|	ctx->capacity = 0;
  235|  17.8k|}
FLAC__MD5Final:
  242|  17.8k|{
  243|  17.8k|	int count = ctx->bytes[0] & 0x3f;	/* Number of bytes in ctx->in */
  244|  17.8k|	FLAC__byte *p = (FLAC__byte *)ctx->in + count;
  245|       |
  246|       |	/* Set the first char of padding to 0x80.  There is always room. */
  247|  17.8k|	*p++ = 0x80;
  248|       |
  249|       |	/* Bytes of padding needed to make 56 bytes (-8..55) */
  250|  17.8k|	count = 56 - 1 - count;
  251|       |
  252|  17.8k|	if (count < 0) {	/* Padding forces an extra block */
  ------------------
  |  Branch (252:6): [True: 722, False: 17.1k]
  ------------------
  253|    722|		memset(p, 0, count + 8);
  254|    722|		byteSwapX16(ctx->in);
  255|    722|		FLAC__MD5Transform(ctx->buf, ctx->in);
  256|    722|		p = (FLAC__byte *)ctx->in;
  257|    722|		count = 56;
  258|    722|	}
  259|  17.8k|	memset(p, 0, count);
  260|  17.8k|	byteSwap(ctx->in, 14);
  261|       |
  262|       |	/* Append length in bits and transform */
  263|  17.8k|	ctx->in[14] = ctx->bytes[0] << 3;
  264|  17.8k|	ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29;
  265|  17.8k|	FLAC__MD5Transform(ctx->buf, ctx->in);
  266|       |
  267|  17.8k|	byteSwap(ctx->buf, 4);
  268|  17.8k|	memcpy(digest, ctx->buf, 16);
  269|  17.8k|	if (0 != ctx->internal_buf.p8) {
  ------------------
  |  Branch (269:6): [True: 8.70k, False: 9.17k]
  ------------------
  270|  8.70k|		free(ctx->internal_buf.p8);
  271|  8.70k|		ctx->internal_buf.p8 = 0;
  272|  8.70k|		ctx->capacity = 0;
  273|  8.70k|	}
  274|  17.8k|	memset(ctx, 0, sizeof(*ctx));	/* In case it's sensitive */
  275|  17.8k|}
FLAC__MD5Accumulate:
  498|   197k|{
  499|   197k|	const size_t bytes_needed = (size_t)channels * (size_t)samples * (size_t)bytes_per_sample;
  500|       |
  501|       |	/* overflow check */
  502|   197k|	if ((size_t)channels > SIZE_MAX / (size_t)bytes_per_sample)
  ------------------
  |  Branch (502:6): [True: 0, False: 197k]
  ------------------
  503|      0|		return false;
  504|   197k|	if ((size_t)channels * (size_t)bytes_per_sample > SIZE_MAX / (size_t)samples)
  ------------------
  |  Branch (504:6): [True: 0, False: 197k]
  ------------------
  505|      0|		return false;
  506|       |
  507|   197k|	if (ctx->capacity < bytes_needed) {
  ------------------
  |  Branch (507:6): [True: 9.21k, False: 188k]
  ------------------
  508|  9.21k|		if (0 == (ctx->internal_buf.p8 = safe_realloc_(ctx->internal_buf.p8, bytes_needed))) {
  ------------------
  |  Branch (508:7): [True: 0, False: 9.21k]
  ------------------
  509|      0|			if (0 == (ctx->internal_buf.p8 = safe_malloc_(bytes_needed))) {
  ------------------
  |  Branch (509:8): [True: 0, False: 0]
  ------------------
  510|      0|				ctx->capacity = 0;
  511|      0|				return false;
  512|      0|			}
  513|      0|		}
  514|  9.21k|		ctx->capacity = bytes_needed;
  515|  9.21k|	}
  516|       |
  517|   197k|	format_input_(&ctx->internal_buf, signal, channels, samples, bytes_per_sample);
  518|       |
  519|   197k|	FLAC__MD5Update(ctx, ctx->internal_buf.p8, bytes_needed);
  520|       |
  521|       |	return true;
  522|   197k|}
md5.c:FLAC__MD5Transform:
   61|  1.74M|{
   62|  1.74M|	register FLAC__uint32 a, b, c, d;
   63|       |
   64|  1.74M|	a = buf[0];
   65|  1.74M|	b = buf[1];
   66|  1.74M|	c = buf[2];
   67|  1.74M|	d = buf[3];
   68|       |
   69|  1.74M|	MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   69|  1.74M|	MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   70|  1.74M|	MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   70|  1.74M|	MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   71|  1.74M|	MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   71|  1.74M|	MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   72|  1.74M|	MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   72|  1.74M|	MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   73|  1.74M|	MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   73|  1.74M|	MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   74|  1.74M|	MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   74|  1.74M|	MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   75|  1.74M|	MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   75|  1.74M|	MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   76|  1.74M|	MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   76|  1.74M|	MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   77|  1.74M|	MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   77|  1.74M|	MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   78|  1.74M|	MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   78|  1.74M|	MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   79|  1.74M|	MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   79|  1.74M|	MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   80|  1.74M|	MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   80|  1.74M|	MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   81|  1.74M|	MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   81|  1.74M|	MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   82|  1.74M|	MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   82|  1.74M|	MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   83|  1.74M|	MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   83|  1.74M|	MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   84|  1.74M|	MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   84|  1.74M|	MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   85|       |
   86|  1.74M|	MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   86|  1.74M|	MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   87|  1.74M|	MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   87|  1.74M|	MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   88|  1.74M|	MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   88|  1.74M|	MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   89|  1.74M|	MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   89|  1.74M|	MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   90|  1.74M|	MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   90|  1.74M|	MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   91|  1.74M|	MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   91|  1.74M|	MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   92|  1.74M|	MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   92|  1.74M|	MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   93|  1.74M|	MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   93|  1.74M|	MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   94|  1.74M|	MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   94|  1.74M|	MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   95|  1.74M|	MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   95|  1.74M|	MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   96|  1.74M|	MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   96|  1.74M|	MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   97|  1.74M|	MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   97|  1.74M|	MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   98|  1.74M|	MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   98|  1.74M|	MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   99|  1.74M|	MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |   99|  1.74M|	MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  100|  1.74M|	MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  100|  1.74M|	MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  101|  1.74M|	MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  101|  1.74M|	MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  1.74M|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  1.74M|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  102|       |
  103|  1.74M|	MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  103|  1.74M|	MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|  1.74M|	MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  104|  1.74M|	MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  105|  1.74M|	MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  105|  1.74M|	MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|  1.74M|	MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  106|  1.74M|	MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  107|  1.74M|	MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  107|  1.74M|	MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  108|  1.74M|	MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  108|  1.74M|	MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  109|  1.74M|	MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  109|  1.74M|	MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  110|  1.74M|	MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  110|  1.74M|	MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  111|  1.74M|	MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  111|  1.74M|	MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  112|  1.74M|	MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  112|  1.74M|	MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  113|  1.74M|	MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  113|  1.74M|	MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  114|  1.74M|	MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  114|  1.74M|	MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  115|  1.74M|	MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  115|  1.74M|	MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  116|  1.74M|	MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  116|  1.74M|	MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  117|  1.74M|	MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  117|  1.74M|	MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  118|  1.74M|	MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  118|  1.74M|	MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.74M|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  119|       |
  120|  1.74M|	MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  120|  1.74M|	MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  121|  1.74M|	MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  121|  1.74M|	MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  122|  1.74M|	MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  122|  1.74M|	MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  123|  1.74M|	MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  123|  1.74M|	MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  124|  1.74M|	MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  124|  1.74M|	MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  125|  1.74M|	MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  125|  1.74M|	MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  126|  1.74M|	MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  126|  1.74M|	MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  127|  1.74M|	MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  127|  1.74M|	MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  128|  1.74M|	MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  128|  1.74M|	MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  129|  1.74M|	MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  129|  1.74M|	MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  130|  1.74M|	MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  130|  1.74M|	MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  131|  1.74M|	MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  131|  1.74M|	MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  132|  1.74M|	MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  132|  1.74M|	MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  133|  1.74M|	MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  133|  1.74M|	MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  134|  1.74M|	MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  134|  1.74M|	MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  135|  1.74M|	MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
  ------------------
  |  |   48|  1.74M|	 (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  135|  1.74M|	MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |   44|  1.74M|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  136|       |
  137|  1.74M|	buf[0] += a;
  138|  1.74M|	buf[1] += b;
  139|  1.74M|	buf[2] += c;
  140|  1.74M|	buf[3] += d;
  141|  1.74M|}
md5.c:format_input_:
  281|   197k|{
  282|   197k|	FLAC__byte *buf_ = mbuf->p8;
  283|   197k|	FLAC__int16 *buf16 = mbuf->p16;
  284|   197k|	FLAC__int32 *buf32 = mbuf->p32;
  285|   197k|	FLAC__int32 a_word;
  286|   197k|	uint32_t channel, sample;
  287|       |
  288|       |	/* Storage in the output buffer, buf, is little endian. */
  289|       |
  290|   197k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  291|       |
  292|       |	/* First do the most commonly used combinations. */
  293|   197k|	switch (BYTES_CHANNEL_SELECTOR (bytes_per_sample, channels)) {
  ------------------
  |  |  290|   197k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  294|       |		/* One byte per sample. */
  295|  3.71k|		case (BYTES_CHANNEL_SELECTOR (1, 1)):
  ------------------
  |  |  290|  3.71k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (295:3): [True: 3.71k, False: 193k]
  ------------------
  296|  1.31M|			for (sample = 0; sample < samples; sample++)
  ------------------
  |  Branch (296:21): [True: 1.30M, False: 3.71k]
  ------------------
  297|  1.30M|				*buf_++ = signal[0][sample];
  298|  3.71k|			return;
  299|       |
  300|    980|		case (BYTES_CHANNEL_SELECTOR (1, 2)):
  ------------------
  |  |  290|    980|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (300:3): [True: 980, False: 196k]
  ------------------
  301|  25.2k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (301:21): [True: 24.2k, False: 980]
  ------------------
  302|  24.2k|				*buf_++ = signal[0][sample];
  303|  24.2k|				*buf_++ = signal[1][sample];
  304|  24.2k|			}
  305|    980|			return;
  306|       |
  307|    482|		case (BYTES_CHANNEL_SELECTOR (1, 4)):
  ------------------
  |  |  290|    482|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (307:3): [True: 482, False: 196k]
  ------------------
  308|  8.37k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (308:21): [True: 7.89k, False: 482]
  ------------------
  309|  7.89k|				*buf_++ = signal[0][sample];
  310|  7.89k|				*buf_++ = signal[1][sample];
  311|  7.89k|				*buf_++ = signal[2][sample];
  312|  7.89k|				*buf_++ = signal[3][sample];
  313|  7.89k|			}
  314|    482|			return;
  315|       |
  316|    202|		case (BYTES_CHANNEL_SELECTOR (1, 6)):
  ------------------
  |  |  290|    202|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (316:3): [True: 202, False: 197k]
  ------------------
  317|  3.39k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (317:21): [True: 3.18k, False: 202]
  ------------------
  318|  3.18k|				*buf_++ = signal[0][sample];
  319|  3.18k|				*buf_++ = signal[1][sample];
  320|  3.18k|				*buf_++ = signal[2][sample];
  321|  3.18k|				*buf_++ = signal[3][sample];
  322|  3.18k|				*buf_++ = signal[4][sample];
  323|  3.18k|				*buf_++ = signal[5][sample];
  324|  3.18k|			}
  325|    202|			return;
  326|       |
  327|    231|		case (BYTES_CHANNEL_SELECTOR (1, 8)):
  ------------------
  |  |  290|    231|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (327:3): [True: 231, False: 197k]
  ------------------
  328|  3.81k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (328:21): [True: 3.58k, False: 231]
  ------------------
  329|  3.58k|				*buf_++ = signal[0][sample];
  330|  3.58k|				*buf_++ = signal[1][sample];
  331|  3.58k|				*buf_++ = signal[2][sample];
  332|  3.58k|				*buf_++ = signal[3][sample];
  333|  3.58k|				*buf_++ = signal[4][sample];
  334|  3.58k|				*buf_++ = signal[5][sample];
  335|  3.58k|				*buf_++ = signal[6][sample];
  336|  3.58k|				*buf_++ = signal[7][sample];
  337|  3.58k|			}
  338|    231|			return;
  339|       |
  340|       |		/* Two bytes per sample. */
  341|  2.32k|		case (BYTES_CHANNEL_SELECTOR (2, 1)):
  ------------------
  |  |  290|  2.32k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (341:3): [True: 2.32k, False: 194k]
  ------------------
  342|   108k|			for (sample = 0; sample < samples; sample++)
  ------------------
  |  Branch (342:21): [True: 105k, False: 2.32k]
  ------------------
  343|   105k|				*buf16++ = H2LE_16(signal[0][sample]);
  ------------------
  |  |   81|   108k|#define H2LE_16(x)		(x)
  ------------------
  344|  2.32k|			return;
  345|       |
  346|  3.60k|		case (BYTES_CHANNEL_SELECTOR (2, 2)):
  ------------------
  |  |  290|  3.60k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (346:3): [True: 3.60k, False: 193k]
  ------------------
  347|  72.1k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (347:21): [True: 68.5k, False: 3.60k]
  ------------------
  348|  68.5k|				*buf16++ = H2LE_16(signal[0][sample]);
  ------------------
  |  |   81|  68.5k|#define H2LE_16(x)		(x)
  ------------------
  349|  68.5k|				*buf16++ = H2LE_16(signal[1][sample]);
  ------------------
  |  |   81|  68.5k|#define H2LE_16(x)		(x)
  ------------------
  350|  68.5k|			}
  351|  3.60k|			return;
  352|       |
  353|    456|		case (BYTES_CHANNEL_SELECTOR (2, 4)):
  ------------------
  |  |  290|    456|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (353:3): [True: 456, False: 196k]
  ------------------
  354|  7.94k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (354:21): [True: 7.48k, False: 456]
  ------------------
  355|  7.48k|				*buf16++ = H2LE_16(signal[0][sample]);
  ------------------
  |  |   81|  7.48k|#define H2LE_16(x)		(x)
  ------------------
  356|  7.48k|				*buf16++ = H2LE_16(signal[1][sample]);
  ------------------
  |  |   81|  7.48k|#define H2LE_16(x)		(x)
  ------------------
  357|  7.48k|				*buf16++ = H2LE_16(signal[2][sample]);
  ------------------
  |  |   81|  7.48k|#define H2LE_16(x)		(x)
  ------------------
  358|  7.48k|				*buf16++ = H2LE_16(signal[3][sample]);
  ------------------
  |  |   81|  7.48k|#define H2LE_16(x)		(x)
  ------------------
  359|  7.48k|			}
  360|    456|			return;
  361|       |
  362|    543|		case (BYTES_CHANNEL_SELECTOR (2, 6)):
  ------------------
  |  |  290|    543|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (362:3): [True: 543, False: 196k]
  ------------------
  363|  23.5k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (363:21): [True: 23.0k, False: 543]
  ------------------
  364|  23.0k|				*buf16++ = H2LE_16(signal[0][sample]);
  ------------------
  |  |   81|  23.0k|#define H2LE_16(x)		(x)
  ------------------
  365|  23.0k|				*buf16++ = H2LE_16(signal[1][sample]);
  ------------------
  |  |   81|  23.0k|#define H2LE_16(x)		(x)
  ------------------
  366|  23.0k|				*buf16++ = H2LE_16(signal[2][sample]);
  ------------------
  |  |   81|  23.0k|#define H2LE_16(x)		(x)
  ------------------
  367|  23.0k|				*buf16++ = H2LE_16(signal[3][sample]);
  ------------------
  |  |   81|  23.0k|#define H2LE_16(x)		(x)
  ------------------
  368|  23.0k|				*buf16++ = H2LE_16(signal[4][sample]);
  ------------------
  |  |   81|  23.0k|#define H2LE_16(x)		(x)
  ------------------
  369|  23.0k|				*buf16++ = H2LE_16(signal[5][sample]);
  ------------------
  |  |   81|  23.0k|#define H2LE_16(x)		(x)
  ------------------
  370|  23.0k|			}
  371|    543|			return;
  372|       |
  373|    236|		case (BYTES_CHANNEL_SELECTOR (2, 8)):
  ------------------
  |  |  290|    236|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (373:3): [True: 236, False: 197k]
  ------------------
  374|  8.64k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (374:21): [True: 8.40k, False: 236]
  ------------------
  375|  8.40k|				*buf16++ = H2LE_16(signal[0][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  376|  8.40k|				*buf16++ = H2LE_16(signal[1][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  377|  8.40k|				*buf16++ = H2LE_16(signal[2][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  378|  8.40k|				*buf16++ = H2LE_16(signal[3][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  379|  8.40k|				*buf16++ = H2LE_16(signal[4][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  380|  8.40k|				*buf16++ = H2LE_16(signal[5][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  381|  8.40k|				*buf16++ = H2LE_16(signal[6][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  382|  8.40k|				*buf16++ = H2LE_16(signal[7][sample]);
  ------------------
  |  |   81|  8.40k|#define H2LE_16(x)		(x)
  ------------------
  383|  8.40k|			}
  384|    236|			return;
  385|       |
  386|       |		/* Three bytes per sample. */
  387|  1.41k|		case (BYTES_CHANNEL_SELECTOR (3, 1)):
  ------------------
  |  |  290|  1.41k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (387:3): [True: 1.41k, False: 195k]
  ------------------
  388|   787k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (388:21): [True: 786k, False: 1.41k]
  ------------------
  389|   786k|				a_word = signal[0][sample];
  390|   786k|				*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  391|   786k|				*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  392|   786k|				*buf_++ = (FLAC__byte)a_word;
  393|   786k|			}
  394|  1.41k|			return;
  395|       |
  396|  8.78k|		case (BYTES_CHANNEL_SELECTOR (3, 2)):
  ------------------
  |  |  290|  8.78k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (396:3): [True: 8.78k, False: 188k]
  ------------------
  397|   308k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (397:21): [True: 299k, False: 8.78k]
  ------------------
  398|   299k|				a_word = signal[0][sample];
  399|   299k|				*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  400|   299k|				*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  401|   299k|				*buf_++ = (FLAC__byte)a_word;
  402|   299k|				a_word = signal[1][sample];
  403|   299k|				*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  404|   299k|				*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  405|   299k|				*buf_++ = (FLAC__byte)a_word;
  406|   299k|			}
  407|  8.78k|			return;
  408|       |
  409|       |		/* Four bytes per sample. */
  410|   141k|		case (BYTES_CHANNEL_SELECTOR (4, 1)):
  ------------------
  |  |  290|   141k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (410:3): [True: 141k, False: 55.3k]
  ------------------
  411|  16.3M|			for (sample = 0; sample < samples; sample++)
  ------------------
  |  Branch (411:21): [True: 16.1M, False: 141k]
  ------------------
  412|  16.1M|				*buf32++ = H2LE_32(signal[0][sample]);
  ------------------
  |  |   82|  16.3M|#define H2LE_32(x)		(x)
  ------------------
  413|   141k|			return;
  414|       |
  415|  28.8k|		case (BYTES_CHANNEL_SELECTOR (4, 2)):
  ------------------
  |  |  290|  28.8k|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (415:3): [True: 28.8k, False: 168k]
  ------------------
  416|  4.32M|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (416:21): [True: 4.29M, False: 28.8k]
  ------------------
  417|  4.29M|				*buf32++ = H2LE_32(signal[0][sample]);
  ------------------
  |  |   82|  4.29M|#define H2LE_32(x)		(x)
  ------------------
  418|  4.29M|				*buf32++ = H2LE_32(signal[1][sample]);
  ------------------
  |  |   82|  4.29M|#define H2LE_32(x)		(x)
  ------------------
  419|  4.29M|			}
  420|  28.8k|			return;
  421|       |
  422|    903|		case (BYTES_CHANNEL_SELECTOR (4, 4)):
  ------------------
  |  |  290|    903|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (422:3): [True: 903, False: 196k]
  ------------------
  423|  74.7k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (423:21): [True: 73.8k, False: 903]
  ------------------
  424|  73.8k|				*buf32++ = H2LE_32(signal[0][sample]);
  ------------------
  |  |   82|  73.8k|#define H2LE_32(x)		(x)
  ------------------
  425|  73.8k|				*buf32++ = H2LE_32(signal[1][sample]);
  ------------------
  |  |   82|  73.8k|#define H2LE_32(x)		(x)
  ------------------
  426|  73.8k|				*buf32++ = H2LE_32(signal[2][sample]);
  ------------------
  |  |   82|  73.8k|#define H2LE_32(x)		(x)
  ------------------
  427|  73.8k|				*buf32++ = H2LE_32(signal[3][sample]);
  ------------------
  |  |   82|  73.8k|#define H2LE_32(x)		(x)
  ------------------
  428|  73.8k|			}
  429|    903|			return;
  430|       |
  431|    589|		case (BYTES_CHANNEL_SELECTOR (4, 6)):
  ------------------
  |  |  290|    589|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (431:3): [True: 589, False: 196k]
  ------------------
  432|  34.7k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (432:21): [True: 34.1k, False: 589]
  ------------------
  433|  34.1k|				*buf32++ = H2LE_32(signal[0][sample]);
  ------------------
  |  |   82|  34.1k|#define H2LE_32(x)		(x)
  ------------------
  434|  34.1k|				*buf32++ = H2LE_32(signal[1][sample]);
  ------------------
  |  |   82|  34.1k|#define H2LE_32(x)		(x)
  ------------------
  435|  34.1k|				*buf32++ = H2LE_32(signal[2][sample]);
  ------------------
  |  |   82|  34.1k|#define H2LE_32(x)		(x)
  ------------------
  436|  34.1k|				*buf32++ = H2LE_32(signal[3][sample]);
  ------------------
  |  |   82|  34.1k|#define H2LE_32(x)		(x)
  ------------------
  437|  34.1k|				*buf32++ = H2LE_32(signal[4][sample]);
  ------------------
  |  |   82|  34.1k|#define H2LE_32(x)		(x)
  ------------------
  438|  34.1k|				*buf32++ = H2LE_32(signal[5][sample]);
  ------------------
  |  |   82|  34.1k|#define H2LE_32(x)		(x)
  ------------------
  439|  34.1k|			}
  440|    589|			return;
  441|       |
  442|    652|		case (BYTES_CHANNEL_SELECTOR (4, 8)):
  ------------------
  |  |  290|    652|#define BYTES_CHANNEL_SELECTOR(bytes, channels)   (bytes * 100 + channels)
  ------------------
  |  Branch (442:3): [True: 652, False: 196k]
  ------------------
  443|  37.6k|			for (sample = 0; sample < samples; sample++) {
  ------------------
  |  Branch (443:21): [True: 36.9k, False: 652]
  ------------------
  444|  36.9k|				*buf32++ = H2LE_32(signal[0][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  445|  36.9k|				*buf32++ = H2LE_32(signal[1][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  446|  36.9k|				*buf32++ = H2LE_32(signal[2][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  447|  36.9k|				*buf32++ = H2LE_32(signal[3][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  448|  36.9k|				*buf32++ = H2LE_32(signal[4][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  449|  36.9k|				*buf32++ = H2LE_32(signal[5][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  450|  36.9k|				*buf32++ = H2LE_32(signal[6][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  451|  36.9k|				*buf32++ = H2LE_32(signal[7][sample]);
  ------------------
  |  |   82|  36.9k|#define H2LE_32(x)		(x)
  ------------------
  452|  36.9k|			}
  453|    652|			return;
  454|       |
  455|  1.38k|		default:
  ------------------
  |  Branch (455:3): [True: 1.38k, False: 195k]
  ------------------
  456|  1.38k|			break;
  457|   197k|	}
  458|       |
  459|       |	/* General version. */
  460|  1.38k|	switch (bytes_per_sample) {
  461|    248|		case 1:
  ------------------
  |  Branch (461:3): [True: 248, False: 1.13k]
  ------------------
  462|  4.04k|			for (sample = 0; sample < samples; sample++)
  ------------------
  |  Branch (462:21): [True: 3.79k, False: 248]
  ------------------
  463|  15.7k|				for (channel = 0; channel < channels; channel++)
  ------------------
  |  Branch (463:23): [True: 11.9k, False: 3.79k]
  ------------------
  464|  11.9k|					*buf_++ = signal[channel][sample];
  465|    248|			return;
  466|       |
  467|    224|		case 2:
  ------------------
  |  Branch (467:3): [True: 224, False: 1.15k]
  ------------------
  468|  3.83k|			for (sample = 0; sample < samples; sample++)
  ------------------
  |  Branch (468:21): [True: 3.61k, False: 224]
  ------------------
  469|  14.8k|				for (channel = 0; channel < channels; channel++)
  ------------------
  |  Branch (469:23): [True: 11.2k, False: 3.61k]
  ------------------
  470|  11.2k|					*buf16++ = H2LE_16(signal[channel][sample]);
  ------------------
  |  |   81|  11.4k|#define H2LE_16(x)		(x)
  ------------------
  471|    224|			return;
  472|       |
  473|    438|		case 3:
  ------------------
  |  Branch (473:3): [True: 438, False: 944]
  ------------------
  474|  10.2k|			for (sample = 0; sample < samples; sample++)
  ------------------
  |  Branch (474:21): [True: 9.78k, False: 438]
  ------------------
  475|  41.3k|				for (channel = 0; channel < channels; channel++) {
  ------------------
  |  Branch (475:23): [True: 31.5k, False: 9.78k]
  ------------------
  476|  31.5k|					a_word = signal[channel][sample];
  477|  31.5k|					*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  478|  31.5k|					*buf_++ = (FLAC__byte)a_word; a_word >>= 8;
  479|  31.5k|					*buf_++ = (FLAC__byte)a_word;
  480|  31.5k|				}
  481|    438|			return;
  482|       |
  483|    472|		case 4:
  ------------------
  |  Branch (483:3): [True: 472, False: 910]
  ------------------
  484|   101k|			for (sample = 0; sample < samples; sample++)
  ------------------
  |  Branch (484:21): [True: 100k, False: 472]
  ------------------
  485|   576k|				for (channel = 0; channel < channels; channel++)
  ------------------
  |  Branch (485:23): [True: 475k, False: 100k]
  ------------------
  486|   475k|					*buf32++ = H2LE_32(signal[channel][sample]);
  ------------------
  |  |   82|   476k|#define H2LE_32(x)		(x)
  ------------------
  487|    472|			return;
  488|       |
  489|      0|		default:
  ------------------
  |  Branch (489:3): [True: 0, False: 1.38k]
  ------------------
  490|      0|			break;
  491|  1.38k|	}
  492|  1.38k|}
md5.c:FLAC__MD5Update:
  185|   197k|{
  186|   197k|	FLAC__uint32 t;
  187|       |
  188|       |	/* Update byte count */
  189|       |
  190|   197k|	t = ctx->bytes[0];
  191|   197k|	if ((ctx->bytes[0] = t + len) < t)
  ------------------
  |  Branch (191:6): [True: 0, False: 197k]
  ------------------
  192|      0|		ctx->bytes[1]++;	/* Carry from low to high */
  193|       |
  194|   197k|	t = 64 - (t & 0x3f);	/* Space available in ctx->in (at least 1) */
  195|   197k|	if (t > len) {
  ------------------
  |  Branch (195:6): [True: 8.33k, False: 188k]
  ------------------
  196|  8.33k|		memcpy((FLAC__byte *)ctx->in + 64 - t, buf, len);
  197|  8.33k|		return;
  198|  8.33k|	}
  199|       |	/* First chunk is an odd size */
  200|   188k|	memcpy((FLAC__byte *)ctx->in + 64 - t, buf, t);
  201|   188k|	byteSwapX16(ctx->in);
  202|   188k|	FLAC__MD5Transform(ctx->buf, ctx->in);
  203|   188k|	buf += t;
  204|   188k|	len -= t;
  205|       |
  206|       |	/* Process data in 64-byte chunks */
  207|  1.72M|	while (len >= 64) {
  ------------------
  |  Branch (207:9): [True: 1.54M, False: 188k]
  ------------------
  208|  1.54M|		memcpy(ctx->in, buf, 64);
  209|  1.54M|		byteSwapX16(ctx->in);
  210|  1.54M|		FLAC__MD5Transform(ctx->buf, ctx->in);
  211|  1.54M|		buf += 64;
  212|  1.54M|		len -= 64;
  213|  1.54M|	}
  214|       |
  215|       |	/* Handle any remaining bytes of data. */
  216|   188k|	memcpy(ctx->in, buf, len);
  217|   188k|}

FLAC__memory_alloc_aligned:
   47|   352k|{
   48|   352k|	void *x;
   49|       |
   50|   352k|	FLAC__ASSERT(0 != aligned_address);
  ------------------
  |  |   38|   352k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 352k]
  |  |  ------------------
  ------------------
   51|       |
   52|   352k|#ifdef FLAC__ALIGN_MALLOC_DATA
   53|       |	/* align on 32-byte (256-bit) boundary */
   54|   352k|	x = safe_malloc_add_2op_(bytes, /*+*/31L);
   55|   352k|	*aligned_address = (void*)(((uintptr_t)x + 31L) & -32L);
   56|       |#else
   57|       |	x = safe_malloc_(bytes);
   58|       |	*aligned_address = x;
   59|       |#endif
   60|   352k|	return x;
   61|   352k|}
FLAC__memory_alloc_aligned_int32_array:
   64|   256k|{
   65|   256k|	FLAC__int32 *pu; /* unaligned pointer */
   66|   256k|	union { /* union needed to comply with C99 pointer aliasing rules */
   67|   256k|		FLAC__int32 *pa; /* aligned pointer */
   68|   256k|		void        *pv; /* aligned pointer alias */
   69|   256k|	} u;
   70|       |
   71|   256k|	FLAC__ASSERT(elements > 0);
  ------------------
  |  |   38|   256k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 256k]
  |  |  ------------------
  ------------------
   72|   256k|	FLAC__ASSERT(0 != unaligned_pointer);
  ------------------
  |  |   38|   256k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 256k]
  |  |  ------------------
  ------------------
   73|   256k|	FLAC__ASSERT(0 != aligned_pointer);
  ------------------
  |  |   38|   256k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 256k]
  |  |  ------------------
  ------------------
   74|   256k|	FLAC__ASSERT(unaligned_pointer != aligned_pointer);
  ------------------
  |  |   38|   256k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 256k]
  |  |  ------------------
  ------------------
   75|       |
   76|   256k|	if(elements > SIZE_MAX / sizeof(*pu)) /* overflow check */
  ------------------
  |  Branch (76:5): [True: 0, False: 256k]
  ------------------
   77|      0|		return false;
   78|       |
   79|   256k|	pu = FLAC__memory_alloc_aligned(sizeof(*pu) * elements, &u.pv);
   80|   256k|	if(0 == pu) {
  ------------------
  |  Branch (80:5): [True: 0, False: 256k]
  ------------------
   81|      0|		return false;
   82|      0|	}
   83|   256k|	else {
   84|   256k|		if(*unaligned_pointer != 0)
  ------------------
  |  Branch (84:6): [True: 0, False: 256k]
  ------------------
   85|      0|			free(*unaligned_pointer);
   86|   256k|		*unaligned_pointer = pu;
   87|   256k|		*aligned_pointer = u.pa;
   88|       |		return true;
   89|   256k|	}
   90|   256k|}
FLAC__memory_alloc_aligned_uint32_array:
   93|  15.3k|{
   94|  15.3k|	FLAC__uint32 *pu; /* unaligned pointer */
   95|  15.3k|	union { /* union needed to comply with C99 pointer aliasing rules */
   96|  15.3k|		FLAC__uint32 *pa; /* aligned pointer */
   97|  15.3k|		void         *pv; /* aligned pointer alias */
   98|  15.3k|	} u;
   99|       |
  100|  15.3k|	FLAC__ASSERT(elements > 0);
  ------------------
  |  |   38|  15.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 15.3k]
  |  |  ------------------
  ------------------
  101|  15.3k|	FLAC__ASSERT(0 != unaligned_pointer);
  ------------------
  |  |   38|  15.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 15.3k]
  |  |  ------------------
  ------------------
  102|  15.3k|	FLAC__ASSERT(0 != aligned_pointer);
  ------------------
  |  |   38|  15.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 15.3k]
  |  |  ------------------
  ------------------
  103|  15.3k|	FLAC__ASSERT(unaligned_pointer != aligned_pointer);
  ------------------
  |  |   38|  15.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 15.3k]
  |  |  ------------------
  ------------------
  104|       |
  105|  15.3k|	if(elements > SIZE_MAX / sizeof(*pu)) /* overflow check */
  ------------------
  |  Branch (105:5): [True: 0, False: 15.3k]
  ------------------
  106|      0|		return false;
  107|       |
  108|  15.3k|	pu = FLAC__memory_alloc_aligned(sizeof(*pu) * elements, &u.pv);
  109|  15.3k|	if(0 == pu) {
  ------------------
  |  Branch (109:5): [True: 0, False: 15.3k]
  ------------------
  110|      0|		return false;
  111|      0|	}
  112|  15.3k|	else {
  113|  15.3k|		if(*unaligned_pointer != 0)
  ------------------
  |  Branch (113:6): [True: 0, False: 15.3k]
  ------------------
  114|      0|			free(*unaligned_pointer);
  115|  15.3k|		*unaligned_pointer = pu;
  116|  15.3k|		*aligned_pointer = u.pa;
  117|       |		return true;
  118|  15.3k|	}
  119|  15.3k|}
FLAC__memory_alloc_aligned_int64_array:
  122|  22.5k|{
  123|  22.5k|	FLAC__int64 *pu; /* unaligned pointer */
  124|  22.5k|	union { /* union needed to comply with C99 pointer aliasing rules */
  125|  22.5k|		FLAC__int64 *pa; /* aligned pointer */
  126|  22.5k|		void         *pv; /* aligned pointer alias */
  127|  22.5k|	} u;
  128|       |
  129|  22.5k|	FLAC__ASSERT(elements > 0);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  130|  22.5k|	FLAC__ASSERT(0 != unaligned_pointer);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  131|  22.5k|	FLAC__ASSERT(0 != aligned_pointer);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  132|  22.5k|	FLAC__ASSERT(unaligned_pointer != aligned_pointer);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  133|       |
  134|  22.5k|	if(elements > SIZE_MAX / sizeof(*pu)) /* overflow check */
  ------------------
  |  Branch (134:5): [True: 0, False: 22.5k]
  ------------------
  135|      0|		return false;
  136|       |
  137|  22.5k|	pu = FLAC__memory_alloc_aligned(sizeof(*pu) * elements, &u.pv);
  138|  22.5k|	if(0 == pu) {
  ------------------
  |  Branch (138:5): [True: 0, False: 22.5k]
  ------------------
  139|      0|		return false;
  140|      0|	}
  141|  22.5k|	else {
  142|  22.5k|		if(*unaligned_pointer != 0)
  ------------------
  |  Branch (142:6): [True: 0, False: 22.5k]
  ------------------
  143|      0|			free(*unaligned_pointer);
  144|  22.5k|		*unaligned_pointer = pu;
  145|  22.5k|		*aligned_pointer = u.pa;
  146|       |		return true;
  147|  22.5k|	}
  148|  22.5k|}
FLAC__memory_alloc_aligned_uint64_array:
  151|  22.5k|{
  152|  22.5k|	FLAC__uint64 *pu; /* unaligned pointer */
  153|  22.5k|	union { /* union needed to comply with C99 pointer aliasing rules */
  154|  22.5k|		FLAC__uint64 *pa; /* aligned pointer */
  155|  22.5k|		void         *pv; /* aligned pointer alias */
  156|  22.5k|	} u;
  157|       |
  158|  22.5k|	FLAC__ASSERT(elements > 0);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  159|  22.5k|	FLAC__ASSERT(0 != unaligned_pointer);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  160|  22.5k|	FLAC__ASSERT(0 != aligned_pointer);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  161|  22.5k|	FLAC__ASSERT(unaligned_pointer != aligned_pointer);
  ------------------
  |  |   38|  22.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.5k]
  |  |  ------------------
  ------------------
  162|       |
  163|  22.5k|	if(elements > SIZE_MAX / sizeof(*pu)) /* overflow check */
  ------------------
  |  Branch (163:5): [True: 0, False: 22.5k]
  ------------------
  164|      0|		return false;
  165|       |
  166|  22.5k|	pu = FLAC__memory_alloc_aligned(sizeof(*pu) * elements, &u.pv);
  167|  22.5k|	if(0 == pu) {
  ------------------
  |  Branch (167:5): [True: 0, False: 22.5k]
  ------------------
  168|      0|		return false;
  169|      0|	}
  170|  22.5k|	else {
  171|  22.5k|		if(*unaligned_pointer != 0)
  ------------------
  |  Branch (171:6): [True: 0, False: 22.5k]
  ------------------
  172|      0|			free(*unaligned_pointer);
  173|  22.5k|		*unaligned_pointer = pu;
  174|  22.5k|		*aligned_pointer = u.pa;
  175|       |		return true;
  176|  22.5k|	}
  177|  22.5k|}
FLAC__memory_alloc_aligned_real_array:
  182|  35.7k|{
  183|  35.7k|	FLAC__real *pu; /* unaligned pointer */
  184|  35.7k|	union { /* union needed to comply with C99 pointer aliasing rules */
  185|  35.7k|		FLAC__real *pa; /* aligned pointer */
  186|  35.7k|		void       *pv; /* aligned pointer alias */
  187|  35.7k|	} u;
  188|       |
  189|  35.7k|	FLAC__ASSERT(elements > 0);
  ------------------
  |  |   38|  35.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 35.7k]
  |  |  ------------------
  ------------------
  190|  35.7k|	FLAC__ASSERT(0 != unaligned_pointer);
  ------------------
  |  |   38|  35.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 35.7k]
  |  |  ------------------
  ------------------
  191|  35.7k|	FLAC__ASSERT(0 != aligned_pointer);
  ------------------
  |  |   38|  35.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 35.7k]
  |  |  ------------------
  ------------------
  192|  35.7k|	FLAC__ASSERT(unaligned_pointer != aligned_pointer);
  ------------------
  |  |   38|  35.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 35.7k]
  |  |  ------------------
  ------------------
  193|       |
  194|  35.7k|	if(elements > SIZE_MAX / sizeof(*pu)) /* overflow check */
  ------------------
  |  Branch (194:5): [True: 0, False: 35.7k]
  ------------------
  195|      0|		return false;
  196|       |
  197|  35.7k|	pu = FLAC__memory_alloc_aligned(sizeof(*pu) * elements, &u.pv);
  198|  35.7k|	if(0 == pu) {
  ------------------
  |  Branch (198:5): [True: 0, False: 35.7k]
  ------------------
  199|      0|		return false;
  200|      0|	}
  201|  35.7k|	else {
  202|  35.7k|		if(*unaligned_pointer != 0)
  ------------------
  |  Branch (202:6): [True: 0, False: 35.7k]
  ------------------
  203|      0|			free(*unaligned_pointer);
  204|  35.7k|		*unaligned_pointer = pu;
  205|  35.7k|		*aligned_pointer = u.pa;
  206|       |		return true;
  207|  35.7k|	}
  208|  35.7k|}
safe_malloc_mul_2op_p:
  213|  20.8k|{
  214|  20.8k|	if(!size1 || !size2)
  ------------------
  |  Branch (214:5): [True: 0, False: 20.8k]
  |  Branch (214:15): [True: 0, False: 20.8k]
  ------------------
  215|      0|		return malloc(1); /* malloc(0) is undefined; FLAC src convention is to always allocate */
  216|  20.8k|	if(size1 > SIZE_MAX / size2)
  ------------------
  |  Branch (216:5): [True: 0, False: 20.8k]
  ------------------
  217|      0|		return 0;
  218|  20.8k|	return malloc(size1*size2);
  219|  20.8k|}

FLAC__ogg_decoder_aspect_set_defaults:
  215|  16.6k|{
  216|  16.6k|	aspect->use_first_serial_number = true;
  217|       |	aspect->decode_chained_stream = false;
  218|  16.6k|}

FLAC__ogg_encoder_aspect_init:
   52|  2.98k|{
   53|       |	/* we will determine the serial number later if necessary */
   54|  2.98k|	if(ogg_stream_init(&aspect->stream_state, aspect->serial_number) != 0)
  ------------------
  |  Branch (54:5): [True: 0, False: 2.98k]
  ------------------
   55|      0|		return false;
   56|       |
   57|  2.98k|	aspect->seen_magic = false;
   58|  2.98k|	aspect->is_first_packet = true;
   59|  2.98k|	aspect->samples_written = 0;
   60|  2.98k|	aspect->last_page_granule_pos = 0;
   61|       |
   62|       |	return true;
   63|  2.98k|}
FLAC__ogg_encoder_aspect_finish:
   66|  2.98k|{
   67|  2.98k|	(void)ogg_stream_clear(&aspect->stream_state);
   68|       |	/*@@@ what about the page? */
   69|  2.98k|}
FLAC__ogg_encoder_aspect_set_serial_number:
   72|  11.7k|{
   73|  11.7k|	aspect->serial_number = value;
   74|  11.7k|}
FLAC__ogg_encoder_aspect_set_defaults:
   87|  21.3k|{
   88|  21.3k|	aspect->serial_number = 0;
   89|  21.3k|	aspect->num_metadata = 0;
   90|  21.3k|}
FLAC__ogg_encoder_aspect_write_callback_wrapper:
  114|   146k|{
  115|       |	/* WATCHOUT:
  116|       |	 * This depends on the behavior of FLAC__StreamEncoder that 'samples'
  117|       |	 * will be 0 for metadata writes.
  118|       |	 */
  119|   146k|	const FLAC__bool is_metadata = (samples == 0);
  120|       |
  121|       |	/*
  122|       |	 * Treat fLaC magic packet specially.  We will note when we see it, then
  123|       |	 * wait until we get the STREAMINFO and prepend it in that packet
  124|       |	 */
  125|   146k|	if(aspect->seen_magic) {
  ------------------
  |  Branch (125:5): [True: 143k, False: 2.98k]
  ------------------
  126|   143k|		ogg_packet packet;
  127|   143k|		FLAC__byte synthetic_first_packet_body[
  128|   143k|			FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH +
  129|   143k|			FLAC__OGG_MAPPING_MAGIC_LENGTH +
  130|   143k|			FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH +
  131|   143k|			FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH +
  132|   143k|			FLAC__OGG_MAPPING_NUM_HEADERS_LENGTH +
  133|   143k|			FLAC__STREAM_SYNC_LENGTH +
  134|   143k|			FLAC__STREAM_METADATA_HEADER_LENGTH +
  135|   143k|			FLAC__STREAM_METADATA_STREAMINFO_LENGTH
  136|   143k|		];
  137|       |
  138|   143k|		memset(&packet, 0, sizeof(packet));
  139|   143k|		packet.granulepos = aspect->samples_written + samples;
  140|       |
  141|   143k|		if(aspect->is_first_packet) {
  ------------------
  |  Branch (141:6): [True: 2.98k, False: 140k]
  ------------------
  142|  2.98k|			FLAC__byte *b = synthetic_first_packet_body;
  143|  2.98k|			if(bytes != FLAC__STREAM_METADATA_HEADER_LENGTH + FLAC__STREAM_METADATA_STREAMINFO_LENGTH) {
  ------------------
  |  |  872|  2.98k|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
              			if(bytes != FLAC__STREAM_METADATA_HEADER_LENGTH + FLAC__STREAM_METADATA_STREAMINFO_LENGTH) {
  ------------------
  |  |  557|  2.98k|#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u)
  ------------------
  |  Branch (143:7): [True: 0, False: 2.98k]
  ------------------
  144|       |				/*
  145|       |				 * If we get here, our assumption about the way write callbacks happen
  146|       |				 * (explained above) is wrong
  147|       |				 */
  148|      0|				FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  149|      0|				return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
  150|      0|			}
  151|       |			/* add first header packet type */
  152|  2.98k|			*b = FLAC__OGG_MAPPING_FIRST_HEADER_PACKET_TYPE;
  153|  2.98k|			b += FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH;
  ------------------
  |  |   39|  2.98k|#define FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH (1u)
  ------------------
  154|       |			/* add 'FLAC' mapping magic */
  155|  2.98k|			memcpy(b, FLAC__OGG_MAPPING_MAGIC, FLAC__OGG_MAPPING_MAGIC_LENGTH);
  ------------------
  |  |   46|  2.98k|#define FLAC__OGG_MAPPING_MAGIC_LENGTH (4u)
  ------------------
  156|  2.98k|			b += FLAC__OGG_MAPPING_MAGIC_LENGTH;
  ------------------
  |  |   46|  2.98k|#define FLAC__OGG_MAPPING_MAGIC_LENGTH (4u)
  ------------------
  157|       |			/* add Ogg FLAC mapping major version number */
  158|  2.98k|			memcpy(b, &FLAC__OGG_MAPPING_VERSION_MAJOR, FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH);
  ------------------
  |  |   54|  2.98k|#define FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH (1u)
  ------------------
  159|  2.98k|			b += FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH;
  ------------------
  |  |   54|  2.98k|#define FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH (1u)
  ------------------
  160|       |			/* add Ogg FLAC mapping minor version number */
  161|  2.98k|			memcpy(b, &FLAC__OGG_MAPPING_VERSION_MINOR, FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH);
  ------------------
  |  |   57|  2.98k|#define FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH (1u)
  ------------------
  162|  2.98k|			b += FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH;
  ------------------
  |  |   57|  2.98k|#define FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH (1u)
  ------------------
  163|       |			/* add number of header packets */
  164|  2.98k|			*b = (FLAC__byte)(aspect->num_metadata >> 8);
  165|  2.98k|			b++;
  166|  2.98k|			*b = (FLAC__byte)(aspect->num_metadata);
  167|  2.98k|			b++;
  168|       |			/* add native FLAC 'fLaC' magic */
  169|  2.98k|			memcpy(b, FLAC__STREAM_SYNC_STRING, FLAC__STREAM_SYNC_LENGTH);
  ------------------
  |  |  179|  2.98k|#define FLAC__STREAM_SYNC_LENGTH (4u)
  ------------------
  170|  2.98k|			b += FLAC__STREAM_SYNC_LENGTH;
  ------------------
  |  |  179|  2.98k|#define FLAC__STREAM_SYNC_LENGTH (4u)
  ------------------
  171|       |			/* add STREAMINFO */
  172|  2.98k|			memcpy(b, buffer, bytes);
  173|  2.98k|			FLAC__ASSERT(b + bytes - synthetic_first_packet_body == sizeof(synthetic_first_packet_body));
  ------------------
  |  |   38|  2.98k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 2.98k]
  |  |  ------------------
  ------------------
  174|  2.98k|			packet.packet = (uint8_t *)synthetic_first_packet_body;
  175|  2.98k|			packet.bytes = sizeof(synthetic_first_packet_body);
  176|       |
  177|  2.98k|			packet.b_o_s = 1;
  178|  2.98k|			aspect->is_first_packet = false;
  179|  2.98k|		}
  180|   140k|		else {
  181|   140k|			packet.packet = (uint8_t *)buffer;
  182|   140k|			packet.bytes = bytes;
  183|   140k|		}
  184|       |
  185|   143k|		if(is_last_block) {
  ------------------
  |  Branch (185:6): [True: 2.59k, False: 140k]
  ------------------
  186|       |			/* we used to check:
  187|       |			 * FLAC__ASSERT(total_samples_estimate == 0 || total_samples_estimate == aspect->samples_written + samples);
  188|       |			 * but it's really not useful since total_samples_estimate is an estimate and can be inexact
  189|       |			 */
  190|  2.59k|			packet.e_o_s = 1;
  191|  2.59k|		}
  192|       |
  193|   143k|		if(ogg_stream_packetin(&aspect->stream_state, &packet) != 0)
  ------------------
  |  Branch (193:6): [True: 0, False: 143k]
  ------------------
  194|      0|			return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
  195|       |
  196|       |		/* For a batch of write_callback calls associated with the same current_frame, pass the number of samples in the
  197|       |		 * first non-metadata page body call, and then set to zero in case there are more iterations of the while loop (so
  198|       |		 * as not to give the impression of more samples being processed).
  199|       |		 */
  200|   143k|		if(is_metadata) {
  ------------------
  |  Branch (200:6): [True: 5.96k, False: 137k]
  ------------------
  201|  11.9k|			while(ogg_stream_flush(&aspect->stream_state, &aspect->page) != 0) {
  ------------------
  |  Branch (201:10): [True: 5.96k, False: 5.96k]
  ------------------
  202|  5.96k|				FLAC__int64 page_granule_pos = ogg_page_granulepos(&aspect->page);
  203|  5.96k|				uint32_t samples_on_this_page;
  204|  5.96k|				if(page_granule_pos == -1) {
  ------------------
  |  Branch (204:8): [True: 0, False: 5.96k]
  ------------------
  205|       |					/* a granule position of -1 means no packets finish on this page */
  206|      0|					samples_on_this_page = 0;
  207|      0|				}
  208|  5.96k|				else {
  209|  5.96k|					samples_on_this_page = (uint32_t)(page_granule_pos - aspect->last_page_granule_pos);
  210|  5.96k|					aspect->last_page_granule_pos = page_granule_pos;
  211|  5.96k|				}
  212|  5.96k|				if(write_callback(encoder, aspect->page.header, aspect->page.header_len, 0, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
  ------------------
  |  Branch (212:8): [True: 0, False: 5.96k]
  ------------------
  213|      0|					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
  214|  5.96k|				if(write_callback(encoder, aspect->page.body, aspect->page.body_len, samples_on_this_page, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
  ------------------
  |  Branch (214:8): [True: 0, False: 5.96k]
  ------------------
  215|      0|					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
  216|  5.96k|			}
  217|  5.96k|		}
  218|   137k|		else {
  219|   141k|			while(ogg_stream_pageout(&aspect->stream_state, &aspect->page) != 0) {
  ------------------
  |  Branch (219:10): [True: 4.36k, False: 137k]
  ------------------
  220|  4.36k|				FLAC__int64 page_granule_pos = ogg_page_granulepos(&aspect->page);
  221|  4.36k|				uint32_t samples_on_this_page;
  222|  4.36k|				if(page_granule_pos == -1) {
  ------------------
  |  Branch (222:8): [True: 306, False: 4.05k]
  ------------------
  223|       |					/* a granule position of -1 means no packets finish on this page */
  224|    306|					samples_on_this_page = 0;
  225|    306|				}
  226|  4.05k|				else {
  227|  4.05k|					samples_on_this_page = (uint32_t)(page_granule_pos - aspect->last_page_granule_pos);
  228|  4.05k|					aspect->last_page_granule_pos = page_granule_pos;
  229|  4.05k|				}
  230|  4.36k|				if(write_callback(encoder, aspect->page.header, aspect->page.header_len, 0, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
  ------------------
  |  Branch (230:8): [True: 0, False: 4.36k]
  ------------------
  231|      0|					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
  232|  4.36k|				if(write_callback(encoder, aspect->page.body, aspect->page.body_len, samples_on_this_page, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
  ------------------
  |  Branch (232:8): [True: 0, False: 4.36k]
  ------------------
  233|      0|					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
  234|  4.36k|			}
  235|   137k|		}
  236|   143k|	}
  237|  2.98k|	else if(is_metadata && current_frame == 0 && samples == 0 && bytes == 4 && 0 == memcmp(buffer, FLAC__STREAM_SYNC_STRING, sizeof(FLAC__STREAM_SYNC_STRING))) {
  ------------------
  |  Branch (237:10): [True: 2.98k, False: 0]
  |  Branch (237:25): [True: 2.98k, False: 0]
  |  Branch (237:47): [True: 2.98k, False: 0]
  |  Branch (237:63): [True: 2.98k, False: 0]
  |  Branch (237:77): [True: 2.98k, False: 0]
  ------------------
  238|  2.98k|		aspect->seen_magic = true;
  239|  2.98k|	}
  240|      0|	else {
  241|       |		/*
  242|       |		 * If we get here, our assumption about the way write callbacks happen
  243|       |		 * explained above is wrong
  244|       |		 */
  245|      0|		FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  246|      0|		return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
  247|      0|	}
  248|       |
  249|   146k|	aspect->samples_written += samples;
  250|       |
  251|   146k|	return FLAC__STREAM_ENCODER_WRITE_STATUS_OK;
  252|   146k|}

FLAC__stream_decoder_new:
  256|  8.32k|{
  257|  8.32k|	FLAC__StreamDecoder *decoder;
  258|  8.32k|	uint32_t i;
  259|       |
  260|  8.32k|	FLAC__ASSERT(sizeof(int) >= 4); /* we want to die right away if this is not true */
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 8.32k]
  |  |  ------------------
  ------------------
  261|       |
  262|  8.32k|	decoder = safe_calloc_(1, sizeof(FLAC__StreamDecoder));
  263|  8.32k|	if(decoder == 0) {
  ------------------
  |  Branch (263:5): [True: 0, False: 8.32k]
  ------------------
  264|      0|		return 0;
  265|      0|	}
  266|       |
  267|  8.32k|	decoder->protected_ = safe_calloc_(1, sizeof(FLAC__StreamDecoderProtected));
  268|  8.32k|	if(decoder->protected_ == 0) {
  ------------------
  |  Branch (268:5): [True: 0, False: 8.32k]
  ------------------
  269|      0|		free(decoder);
  270|      0|		return 0;
  271|      0|	}
  272|       |
  273|  8.32k|	decoder->private_ = safe_calloc_(1, sizeof(FLAC__StreamDecoderPrivate));
  274|  8.32k|	if(decoder->private_ == 0) {
  ------------------
  |  Branch (274:5): [True: 0, False: 8.32k]
  ------------------
  275|      0|		free(decoder->protected_);
  276|      0|		free(decoder);
  277|      0|		return 0;
  278|      0|	}
  279|       |
  280|  8.32k|	decoder->private_->input = FLAC__bitreader_new();
  281|  8.32k|	if(decoder->private_->input == 0) {
  ------------------
  |  Branch (281:5): [True: 0, False: 8.32k]
  ------------------
  282|      0|		free(decoder->private_);
  283|      0|		free(decoder->protected_);
  284|      0|		free(decoder);
  285|      0|		return 0;
  286|      0|	}
  287|       |
  288|  8.32k|	decoder->private_->metadata_filter_ids_capacity = 16;
  289|  8.32k|	if(0 == (decoder->private_->metadata_filter_ids = malloc((FLAC__STREAM_METADATA_APPLICATION_ID_LEN/8) * decoder->private_->metadata_filter_ids_capacity))) {
  ------------------
  |  Branch (289:5): [True: 0, False: 8.32k]
  ------------------
  290|      0|		FLAC__bitreader_delete(decoder->private_->input);
  291|      0|		free(decoder->private_);
  292|      0|		free(decoder->protected_);
  293|      0|		free(decoder);
  294|      0|		return 0;
  295|      0|	}
  296|       |
  297|  74.9k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|  74.9k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (297:13): [True: 66.5k, False: 8.32k]
  ------------------
  298|  66.5k|		decoder->private_->output[i] = 0;
  299|  66.5k|		decoder->private_->residual_unaligned[i] = decoder->private_->residual[i] = 0;
  300|  66.5k|	}
  301|       |
  302|  8.32k|	decoder->private_->side_subframe = 0;
  303|       |
  304|  8.32k|	decoder->private_->output_capacity = 0;
  305|  8.32k|	decoder->private_->output_channels = 0;
  306|  8.32k|	decoder->private_->has_seek_table = false;
  307|       |
  308|  74.9k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++)
  ------------------
  |  |  106|  74.9k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (308:13): [True: 66.5k, False: 8.32k]
  ------------------
  309|  66.5k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&decoder->private_->partitioned_rice_contents[i]);
  310|       |
  311|  8.32k|	decoder->private_->file = 0;
  312|       |
  313|  8.32k|	set_defaults_(decoder);
  314|       |
  315|  8.32k|	decoder->protected_->state = FLAC__STREAM_DECODER_UNINITIALIZED;
  316|       |
  317|  8.32k|	return decoder;
  318|  8.32k|}
FLAC__stream_decoder_delete:
  321|  8.32k|{
  322|  8.32k|	uint32_t i;
  323|       |
  324|  8.32k|	if (decoder == NULL)
  ------------------
  |  Branch (324:6): [True: 0, False: 8.32k]
  ------------------
  325|      0|		return ;
  326|       |
  327|  8.32k|	FLAC__ASSERT(0 != decoder->protected_);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  328|  8.32k|	FLAC__ASSERT(0 != decoder->private_);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  329|  8.32k|	FLAC__ASSERT(0 != decoder->private_->input);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  330|       |
  331|  8.32k|	(void)FLAC__stream_decoder_finish(decoder);
  332|       |
  333|  8.32k|	if(0 != decoder->private_->metadata_filter_ids)
  ------------------
  |  Branch (333:5): [True: 8.32k, False: 0]
  ------------------
  334|  8.32k|		free(decoder->private_->metadata_filter_ids);
  335|       |
  336|  8.32k|	FLAC__bitreader_delete(decoder->private_->input);
  337|       |
  338|  74.9k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++)
  ------------------
  |  |  106|  74.9k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (338:13): [True: 66.5k, False: 8.32k]
  ------------------
  339|  66.5k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&decoder->private_->partitioned_rice_contents[i]);
  340|       |
  341|  8.32k|	free(decoder->private_);
  342|  8.32k|	free(decoder->protected_);
  343|  8.32k|	free(decoder);
  344|  8.32k|}
FLAC__stream_decoder_init_stream:
  445|  8.32k|{
  446|  8.32k|	return init_stream_internal_(
  447|  8.32k|		decoder,
  448|  8.32k|		read_callback,
  449|  8.32k|		seek_callback,
  450|  8.32k|		tell_callback,
  451|  8.32k|		length_callback,
  452|  8.32k|		eof_callback,
  453|  8.32k|		write_callback,
  454|  8.32k|		metadata_callback,
  455|  8.32k|		error_callback,
  456|  8.32k|		client_data,
  457|       |		/*is_ogg=*/false
  458|  8.32k|	);
  459|  8.32k|}
FLAC__stream_decoder_finish:
  615|  16.6k|{
  616|  16.6k|	FLAC__bool md5_failed = false;
  617|  16.6k|	uint32_t i;
  618|       |
  619|  16.6k|	FLAC__ASSERT(0 != decoder);
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  620|  16.6k|	FLAC__ASSERT(0 != decoder->private_);
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  621|  16.6k|	FLAC__ASSERT(0 != decoder->protected_);
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  622|       |
  623|  16.6k|	if(decoder->protected_->state == FLAC__STREAM_DECODER_UNINITIALIZED)
  ------------------
  |  Branch (623:5): [True: 8.32k, False: 8.32k]
  ------------------
  624|  8.32k|		return true;
  625|       |
  626|       |	/* see the comment in FLAC__stream_decoder_reset() as to why we
  627|       |	 * always call FLAC__MD5Final()
  628|       |	 */
  629|  8.32k|	FLAC__MD5Final(decoder->private_->computed_md5sum, &decoder->private_->md5context);
  630|       |
  631|  8.32k|	free(decoder->private_->seek_table.data.seek_table.points);
  632|  8.32k|	decoder->private_->seek_table.data.seek_table.points = 0;
  633|  8.32k|	decoder->private_->has_seek_table = false;
  634|       |
  635|  8.32k|	FLAC__bitreader_free(decoder->private_->input);
  636|  74.9k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|  74.9k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (636:13): [True: 66.5k, False: 8.32k]
  ------------------
  637|       |		/* WATCHOUT:
  638|       |		 * FLAC__lpc_restore_signal_asm_ia32_mmx() and ..._intrin_sseN()
  639|       |		 * require that the output arrays have a buffer of up to 3 zeroes
  640|       |		 * in front (at negative indices) for alignment purposes;
  641|       |		 * we use 4 to keep the data well-aligned.
  642|       |		 */
  643|  66.5k|		if(0 != decoder->private_->output[i]) {
  ------------------
  |  Branch (643:6): [True: 13.6k, False: 52.9k]
  ------------------
  644|  13.6k|			free(decoder->private_->output[i]-4);
  645|  13.6k|			decoder->private_->output[i] = 0;
  646|  13.6k|		}
  647|  66.5k|		if(0 != decoder->private_->residual_unaligned[i]) {
  ------------------
  |  Branch (647:6): [True: 13.6k, False: 52.9k]
  ------------------
  648|  13.6k|			free(decoder->private_->residual_unaligned[i]);
  649|  13.6k|			decoder->private_->residual_unaligned[i] = decoder->private_->residual[i] = 0;
  650|  13.6k|		}
  651|  66.5k|	}
  652|  8.32k|	if(0 != decoder->private_->side_subframe) {
  ------------------
  |  Branch (652:5): [True: 5.12k, False: 3.20k]
  ------------------
  653|  5.12k|		free(decoder->private_->side_subframe);
  654|  5.12k|		decoder->private_->side_subframe = 0;
  655|  5.12k|	}
  656|  8.32k|	decoder->private_->output_capacity = 0;
  657|  8.32k|	decoder->private_->output_channels = 0;
  658|       |
  659|  8.32k|#if FLAC__HAS_OGG
  660|  8.32k|	if(decoder->private_->is_ogg)
  ------------------
  |  Branch (660:5): [True: 0, False: 8.32k]
  ------------------
  661|      0|		FLAC__ogg_decoder_aspect_finish(&decoder->protected_->ogg_decoder_aspect);
  662|  8.32k|#endif
  663|       |
  664|  8.32k|	if(0 != decoder->private_->file) {
  ------------------
  |  Branch (664:5): [True: 0, False: 8.32k]
  ------------------
  665|      0|		if(decoder->private_->file != stdin)
  ------------------
  |  Branch (665:6): [True: 0, False: 0]
  ------------------
  666|      0|			fclose(decoder->private_->file);
  667|      0|		decoder->private_->file = 0;
  668|      0|	}
  669|       |
  670|  8.32k|	if(decoder->private_->do_md5_checking) {
  ------------------
  |  Branch (670:5): [True: 0, False: 8.32k]
  ------------------
  671|      0|		if(memcmp(decoder->private_->stream_info.data.stream_info.md5sum, decoder->private_->computed_md5sum, 16))
  ------------------
  |  Branch (671:6): [True: 0, False: 0]
  ------------------
  672|      0|			md5_failed = true;
  673|      0|	}
  674|  8.32k|	decoder->private_->is_seeking = false;
  675|  8.32k|	decoder->private_->is_indexing = false;
  676|       |
  677|  8.32k|	set_defaults_(decoder);
  678|       |
  679|  8.32k|	decoder->protected_->state = FLAC__STREAM_DECODER_UNINITIALIZED;
  680|       |
  681|  8.32k|	return !md5_failed;
  682|  16.6k|}
FLAC__stream_decoder_get_state:
  831|   212k|{
  832|   212k|	FLAC__ASSERT(0 != decoder);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
  833|   212k|	FLAC__ASSERT(0 != decoder->protected_);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
  834|   212k|	return decoder->protected_->state;
  835|   212k|}
FLAC__stream_decoder_get_decode_position:
  904|   212k|{
  905|   212k|	FLAC__ASSERT(0 != decoder);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
  906|   212k|	FLAC__ASSERT(0 != decoder->private_);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
  907|   212k|	FLAC__ASSERT(0 != position);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
  908|       |
  909|   212k|	if(FLAC__HAS_OGG && decoder->private_->is_ogg)
  ------------------
  |  |   45|   424k|#define FLAC__HAS_OGG 1
  |  |  ------------------
  |  |  |  Branch (45:23): [True: 212k, Folded]
  |  |  ------------------
  ------------------
  |  Branch (909:22): [True: 0, False: 212k]
  ------------------
  910|      0|		return false;
  911|       |
  912|   212k|	if(0 == decoder->private_->tell_callback)
  ------------------
  |  Branch (912:5): [True: 212k, False: 0]
  ------------------
  913|   212k|		return false;
  914|      0|	if(decoder->private_->tell_callback(decoder, position, decoder->private_->client_data) != FLAC__STREAM_DECODER_TELL_STATUS_OK)
  ------------------
  |  Branch (914:5): [True: 0, False: 0]
  ------------------
  915|      0|		return false;
  916|       |	/* should never happen since all FLAC frames and metadata blocks are byte aligned, but check just in case */
  917|      0|	if(!FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input))
  ------------------
  |  Branch (917:5): [True: 0, False: 0]
  ------------------
  918|      0|		return false;
  919|      0|	FLAC__ASSERT(*position >= FLAC__stream_decoder_get_input_bytes_unconsumed(decoder));
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  920|      0|	*position -= FLAC__stream_decoder_get_input_bytes_unconsumed(decoder);
  921|       |	return true;
  922|      0|}
FLAC__stream_decoder_flush:
  930|  8.32k|{
  931|  8.32k|	FLAC__ASSERT(0 != decoder);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  932|  8.32k|	FLAC__ASSERT(0 != decoder->private_);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  933|  8.32k|	FLAC__ASSERT(0 != decoder->protected_);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  934|       |
  935|  8.32k|	if(!decoder->private_->internal_reset_hack && decoder->protected_->state == FLAC__STREAM_DECODER_UNINITIALIZED)
  ------------------
  |  Branch (935:5): [True: 0, False: 8.32k]
  |  Branch (935:48): [True: 0, False: 0]
  ------------------
  936|      0|		return false;
  937|  8.32k|	if(decoder->protected_->state == FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR)
  ------------------
  |  Branch (937:5): [True: 0, False: 8.32k]
  ------------------
  938|      0|		return false;
  939|       |
  940|  8.32k|	decoder->private_->samples_decoded = 0;
  941|  8.32k|	decoder->private_->do_md5_checking = false;
  942|  8.32k|	decoder->private_->last_seen_framesync = 0;
  943|  8.32k|	decoder->private_->last_frame_is_set = false;
  944|       |
  945|  8.32k|#if FLAC__HAS_OGG
  946|  8.32k|	if(decoder->private_->is_ogg)
  ------------------
  |  Branch (946:5): [True: 0, False: 8.32k]
  ------------------
  947|      0|		FLAC__ogg_decoder_aspect_flush(&decoder->protected_->ogg_decoder_aspect);
  948|  8.32k|#endif
  949|       |
  950|  8.32k|	if(!FLAC__bitreader_clear(decoder->private_->input)) {
  ------------------
  |  Branch (950:5): [True: 0, False: 8.32k]
  ------------------
  951|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
  952|      0|		return false;
  953|      0|	}
  954|  8.32k|	decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
  955|       |
  956|       |	return true;
  957|  8.32k|}
FLAC__stream_decoder_reset:
 1001|  8.32k|{
 1002|  8.32k|	FLAC__ASSERT(0 != decoder);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
 1003|  8.32k|	FLAC__ASSERT(0 != decoder->private_);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
 1004|  8.32k|	FLAC__ASSERT(0 != decoder->protected_);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
 1005|       |
 1006|  8.32k|	if(!FLAC__stream_decoder_flush(decoder)) {
  ------------------
  |  Branch (1006:5): [True: 0, False: 8.32k]
  ------------------
 1007|       |		/* above call sets the state for us */
 1008|      0|		return false;
 1009|      0|	}
 1010|       |
 1011|  8.32k|#if FLAC__HAS_OGG
 1012|       |	/*@@@ could go in !internal_reset_hack block below */
 1013|  8.32k|	if(decoder->private_->is_ogg)
  ------------------
  |  Branch (1013:5): [True: 0, False: 8.32k]
  ------------------
 1014|      0|		FLAC__ogg_decoder_aspect_reset(&decoder->protected_->ogg_decoder_aspect);
 1015|  8.32k|#endif
 1016|       |
 1017|       |	/* Rewind if necessary.  If FLAC__stream_decoder_init() is calling us,
 1018|       |	 * (internal_reset_hack) don't try to rewind since we are already at
 1019|       |	 * the beginning of the stream and don't want to fail if the input is
 1020|       |	 * not seekable.
 1021|       |	 */
 1022|  8.32k|	if(!decoder->private_->internal_reset_hack) {
  ------------------
  |  Branch (1022:5): [True: 0, False: 8.32k]
  ------------------
 1023|      0|		if(decoder->private_->file == stdin)
  ------------------
  |  Branch (1023:6): [True: 0, False: 0]
  ------------------
 1024|      0|			return false; /* can't rewind stdin, reset fails */
 1025|      0|		if(decoder->private_->seek_callback && decoder->private_->seek_callback(decoder, 0, decoder->private_->client_data) == FLAC__STREAM_DECODER_SEEK_STATUS_ERROR)
  ------------------
  |  Branch (1025:6): [True: 0, False: 0]
  |  Branch (1025:42): [True: 0, False: 0]
  ------------------
 1026|      0|			return false; /* seekable and seek fails, reset fails */
 1027|      0|	}
 1028|       |
 1029|  8.32k|	reset_decoder_internal_(decoder);
 1030|       |
 1031|       |	return true;
 1032|  8.32k|}
FLAC__stream_decoder_process_single:
 1035|   220k|{
 1036|   220k|	FLAC__bool got_a_frame;
 1037|   220k|	FLAC__ASSERT(0 != decoder);
  ------------------
  |  |   38|   220k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 220k]
  |  |  ------------------
  ------------------
 1038|   220k|	FLAC__ASSERT(0 != decoder->protected_);
  ------------------
  |  |   38|   220k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 220k]
  |  |  ------------------
  ------------------
 1039|       |
 1040|   432k|	while(1) {
  ------------------
  |  Branch (1040:8): [True: 432k, Folded]
  ------------------
 1041|   432k|		switch(decoder->protected_->state) {
 1042|  8.32k|			case FLAC__STREAM_DECODER_SEARCH_FOR_METADATA:
  ------------------
  |  Branch (1042:4): [True: 8.32k, False: 424k]
  ------------------
 1043|  8.32k|				if(!find_metadata_(decoder))
  ------------------
  |  Branch (1043:8): [True: 0, False: 8.32k]
  ------------------
 1044|      0|					return false; /* above function sets the status for us */
 1045|  8.32k|				break;
 1046|  16.6k|			case FLAC__STREAM_DECODER_READ_METADATA:
  ------------------
  |  Branch (1046:4): [True: 16.6k, False: 415k]
  ------------------
 1047|  16.6k|				if(!read_metadata_(decoder))
  ------------------
  |  Branch (1047:8): [True: 0, False: 16.6k]
  ------------------
 1048|      0|					return false; /* above function sets the status for us */
 1049|  16.6k|				else
 1050|  16.6k|					return true;
 1051|   203k|			case FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC:
  ------------------
  |  Branch (1051:4): [True: 203k, False: 228k]
  ------------------
 1052|   203k|				if(!frame_sync_(decoder)) {
  ------------------
  |  Branch (1052:8): [True: 0, False: 203k]
  ------------------
 1053|      0|					return true; /* above function sets the status for us */
 1054|      0|				}
 1055|   203k|				break;
 1056|   203k|			case FLAC__STREAM_DECODER_READ_FRAME:
  ------------------
  |  Branch (1056:4): [True: 203k, False: 228k]
  ------------------
 1057|   203k|				if(!read_frame_(decoder, &got_a_frame, /*do_full_decode=*/true))
  ------------------
  |  Branch (1057:8): [True: 0, False: 203k]
  ------------------
 1058|      0|					return false; /* above function sets the status for us */
 1059|   203k|				if(got_a_frame)
  ------------------
  |  Branch (1059:8): [True: 203k, False: 0]
  ------------------
 1060|   203k|					return true; /* above function sets the status for us */
 1061|      0|				break;
 1062|      0|			case FLAC__STREAM_DECODER_END_OF_STREAM:
  ------------------
  |  Branch (1062:4): [True: 0, False: 432k]
  ------------------
 1063|      0|			case FLAC__STREAM_DECODER_END_OF_LINK:
  ------------------
  |  Branch (1063:4): [True: 0, False: 432k]
  ------------------
 1064|      0|			case FLAC__STREAM_DECODER_ABORTED:
  ------------------
  |  Branch (1064:4): [True: 0, False: 432k]
  ------------------
 1065|      0|				return true;
 1066|      0|			default:
  ------------------
  |  Branch (1066:4): [True: 0, False: 432k]
  ------------------
 1067|       |				return false;
 1068|   432k|		}
 1069|   432k|	}
 1070|   220k|}
stream_decoder.c:init_stream_internal_:
  365|  8.32k|{
  366|  8.32k|	FLAC__ASSERT(0 != decoder);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
  367|       |
  368|  8.32k|	if(decoder->protected_->state != FLAC__STREAM_DECODER_UNINITIALIZED)
  ------------------
  |  Branch (368:5): [True: 0, False: 8.32k]
  ------------------
  369|      0|		return FLAC__STREAM_DECODER_INIT_STATUS_ALREADY_INITIALIZED;
  370|       |
  371|  8.32k|	if(FLAC__HAS_OGG == 0 && is_ogg)
  ------------------
  |  |   45|  8.32k|#define FLAC__HAS_OGG 1
  ------------------
  |  Branch (371:5): [Folded, False: 8.32k]
  |  Branch (371:27): [True: 0, False: 0]
  ------------------
  372|      0|		return FLAC__STREAM_DECODER_INIT_STATUS_UNSUPPORTED_CONTAINER;
  373|       |
  374|  8.32k|	if(
  375|  8.32k|		0 == read_callback ||
  ------------------
  |  Branch (375:3): [True: 0, False: 8.32k]
  ------------------
  376|  8.32k|		0 == write_callback ||
  ------------------
  |  Branch (376:3): [True: 0, False: 8.32k]
  ------------------
  377|  8.32k|		0 == error_callback ||
  ------------------
  |  Branch (377:3): [True: 0, False: 8.32k]
  ------------------
  378|  8.32k|		(seek_callback && (0 == tell_callback || 0 == length_callback || 0 == eof_callback))
  ------------------
  |  Branch (378:4): [True: 0, False: 8.32k]
  |  Branch (378:22): [True: 0, False: 0]
  |  Branch (378:44): [True: 0, False: 0]
  |  Branch (378:68): [True: 0, False: 0]
  ------------------
  379|  8.32k|	)
  380|      0|		return FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS;
  381|       |
  382|  8.32k|#if FLAC__HAS_OGG
  383|  8.32k|	decoder->private_->is_ogg = is_ogg;
  384|  8.32k|	if(is_ogg && !FLAC__ogg_decoder_aspect_init(&decoder->protected_->ogg_decoder_aspect)) {
  ------------------
  |  Branch (384:5): [True: 0, False: 8.32k]
  |  Branch (384:15): [True: 0, False: 0]
  ------------------
  385|      0|		FLAC__ogg_decoder_aspect_finish(&decoder->protected_->ogg_decoder_aspect);
  386|      0|		return decoder->protected_->initstate = FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE;
  387|      0|	}
  388|  8.32k|#endif
  389|       |
  390|  8.32k|	FLAC__cpu_info(&decoder->private_->cpuinfo);
  391|  8.32k|	decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block;
  392|       |
  393|  8.32k|#ifdef FLAC__BMI2_SUPPORTED
  394|  8.32k|	if (decoder->private_->cpuinfo.x86.bmi2) {
  ------------------
  |  Branch (394:6): [True: 8.32k, False: 0]
  ------------------
  395|  8.32k|		decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block_bmi2;
  396|  8.32k|	}
  397|  8.32k|#endif
  398|       |
  399|       |	/* from here on, errors are fatal */
  400|       |
  401|  8.32k|	if(!FLAC__bitreader_init(decoder->private_->input, read_callback_, decoder)) {
  ------------------
  |  Branch (401:5): [True: 0, False: 8.32k]
  ------------------
  402|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
  403|      0|		return FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR;
  404|      0|	}
  405|       |
  406|  8.32k|	decoder->private_->read_callback = read_callback;
  407|  8.32k|	decoder->private_->seek_callback = seek_callback;
  408|  8.32k|	decoder->private_->tell_callback = tell_callback;
  409|  8.32k|	decoder->private_->length_callback = length_callback;
  410|  8.32k|	decoder->private_->eof_callback = eof_callback;
  411|  8.32k|	decoder->private_->write_callback = write_callback;
  412|  8.32k|	decoder->private_->metadata_callback = metadata_callback;
  413|  8.32k|	decoder->private_->error_callback = error_callback;
  414|  8.32k|	decoder->private_->client_data = client_data;
  415|  8.32k|	decoder->private_->fixed_block_size = decoder->private_->next_fixed_block_size = 0;
  416|  8.32k|	decoder->private_->samples_decoded = 0;
  417|  8.32k|	decoder->private_->has_stream_info = false;
  418|  8.32k|	decoder->private_->cached = false;
  419|       |
  420|  8.32k|	decoder->private_->do_md5_checking = decoder->protected_->md5_checking;
  421|  8.32k|	decoder->private_->is_seeking = false;
  422|  8.32k|	decoder->private_->is_indexing = false;
  423|       |
  424|  8.32k|	decoder->private_->internal_reset_hack = true; /* so the following reset does not try to rewind the input */
  425|  8.32k|	if(!FLAC__stream_decoder_reset(decoder)) {
  ------------------
  |  Branch (425:5): [True: 0, False: 8.32k]
  ------------------
  426|       |		/* above call sets the state for us */
  427|      0|		return FLAC__STREAM_DECODER_INIT_STATUS_MEMORY_ALLOCATION_ERROR;
  428|      0|	}
  429|       |
  430|  8.32k|	return FLAC__STREAM_DECODER_INIT_STATUS_OK;
  431|  8.32k|}
stream_decoder.c:read_callback_:
 3376|   236k|{
 3377|   236k|	FLAC__StreamDecoder *decoder = (FLAC__StreamDecoder *)client_data;
 3378|       |
 3379|   236k|	if(
 3380|   236k|#if FLAC__HAS_OGG
 3381|       |		/* see [1] HACK NOTE below for why we don't call the eof_callback when decoding Ogg FLAC */
 3382|   236k|		!decoder->private_->is_ogg &&
  ------------------
  |  Branch (3382:3): [True: 236k, False: 0]
  ------------------
 3383|   236k|#endif
 3384|   236k|		decoder->private_->eof_callback && decoder->private_->eof_callback(decoder, decoder->private_->client_data)
  ------------------
  |  Branch (3384:3): [True: 0, False: 236k]
  |  Branch (3384:38): [True: 0, False: 0]
  ------------------
 3385|   236k|	) {
 3386|      0|		*bytes = 0;
 3387|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_END_OF_STREAM;
 3388|      0|		return false;
 3389|      0|	}
 3390|   236k|	else if(*bytes > 0) {
  ------------------
  |  Branch (3390:10): [True: 236k, False: 0]
  ------------------
 3391|       |		/* While seeking, it is possible for our seek to land in the
 3392|       |		 * middle of audio data that looks exactly like a frame header
 3393|       |		 * from a future version of an encoder.  When that happens, our
 3394|       |		 * error callback will get an
 3395|       |		 * FLAC__STREAM_DECODER_UNPARSEABLE_STREAM and increment its
 3396|       |		 * unparseable_frame_count.  But there is a remote possibility
 3397|       |		 * that it is properly synced at such a "future-codec frame",
 3398|       |		 * so to make sure, we wait to see many "unparseable" errors in
 3399|       |		 * a row before bailing out.
 3400|       |		 */
 3401|   236k|		if(decoder->private_->is_seeking && decoder->private_->unparseable_frame_count > 20) {
  ------------------
  |  Branch (3401:6): [True: 0, False: 236k]
  |  Branch (3401:39): [True: 0, False: 0]
  ------------------
 3402|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_ABORTED;
 3403|      0|			return false;
 3404|      0|		}
 3405|   236k|		else {
 3406|   236k|			const FLAC__StreamDecoderReadStatus status =
 3407|   236k|#if FLAC__HAS_OGG
 3408|   236k|				decoder->private_->is_ogg?
  ------------------
  |  Branch (3408:5): [True: 0, False: 236k]
  ------------------
 3409|      0|				read_callback_ogg_aspect_(decoder, buffer, bytes) :
 3410|   236k|#endif
 3411|   236k|				decoder->private_->read_callback(decoder, buffer, bytes, decoder->private_->client_data)
 3412|   236k|			;
 3413|   236k|			if(status == FLAC__STREAM_DECODER_READ_STATUS_ABORT) {
  ------------------
  |  Branch (3413:7): [True: 0, False: 236k]
  ------------------
 3414|      0|#if FLAC__HAS_OGG
 3415|      0|				if(decoder->private_->ogg_decoder_aspect_allocation_failure) {
  ------------------
  |  Branch (3415:8): [True: 0, False: 0]
  ------------------
 3416|      0|					decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 3417|      0|					return false;
 3418|      0|				}
 3419|      0|#endif
 3420|      0|				decoder->protected_->state = FLAC__STREAM_DECODER_ABORTED;
 3421|      0|				return false;
 3422|      0|			}
 3423|   236k|			else if(*bytes == 0) {
  ------------------
  |  Branch (3423:12): [True: 0, False: 236k]
  ------------------
 3424|      0|				if(status == FLAC__STREAM_DECODER_READ_STATUS_END_OF_LINK) {
  ------------------
  |  Branch (3424:8): [True: 0, False: 0]
  ------------------
 3425|      0|					if(FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input))
  ------------------
  |  Branch (3425:9): [True: 0, False: 0]
  ------------------
 3426|      0|						decoder->protected_->state = FLAC__STREAM_DECODER_END_OF_LINK;
 3427|      0|					else
 3428|      0|						decoder->protected_->state = FLAC__STREAM_DECODER_OGG_ERROR;
 3429|      0|					return false;
 3430|      0|				}
 3431|      0|				else if(
 3432|      0|					status == FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM ||
  ------------------
  |  Branch (3432:6): [True: 0, False: 0]
  ------------------
 3433|      0|					(
 3434|      0|#if FLAC__HAS_OGG
 3435|       |						/* see [1] HACK NOTE below for why we don't call the eof_callback when decoding Ogg FLAC */
 3436|      0|						!decoder->private_->is_ogg &&
  ------------------
  |  Branch (3436:7): [True: 0, False: 0]
  ------------------
 3437|      0|#endif
 3438|      0|						decoder->private_->eof_callback && decoder->private_->eof_callback(decoder, decoder->private_->client_data)
  ------------------
  |  Branch (3438:7): [True: 0, False: 0]
  |  Branch (3438:42): [True: 0, False: 0]
  ------------------
 3439|      0|					)
 3440|      0|				) {
 3441|      0|					decoder->protected_->state = FLAC__STREAM_DECODER_END_OF_STREAM;
 3442|      0|					return false;
 3443|      0|				}
 3444|      0|				else
 3445|      0|					return true;
 3446|      0|			}
 3447|   236k|			else
 3448|   236k|				return true;
 3449|   236k|		}
 3450|   236k|	}
 3451|      0|	else {
 3452|       |		/* abort to avoid a deadlock */
 3453|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_ABORTED;
 3454|      0|		return false;
 3455|      0|	}
 3456|       |	/* [1] @@@ HACK NOTE: The end-of-stream checking has to be hacked around
 3457|       |	 * for Ogg FLAC.  This is because the ogg decoder aspect can lose sync
 3458|       |	 * and at the same time hit the end of the stream (for example, seeking
 3459|       |	 * to a point that is after the beginning of the last Ogg page).  There
 3460|       |	 * is no way to report an Ogg sync loss through the callbacks (see note
 3461|       |	 * in read_callback_ogg_aspect_()) so it returns CONTINUE with *bytes==0.
 3462|       |	 * So to keep the decoder from stopping at this point we gate the call
 3463|       |	 * to the eof_callback and let the Ogg decoder aspect set the
 3464|       |	 * end-of-stream state when it is needed.
 3465|       |	 */
 3466|   236k|}
stream_decoder.c:reset_decoder_internal_:
  959|  8.32k|void reset_decoder_internal_(FLAC__StreamDecoder* decoder) {
  960|       |	/* This code resets only the FLAC parser and decoder, not the Ogg part,
  961|       |	 * nor the input buffering etc. This is used to prepare the FLAC
  962|       |	 * decoder to receive another Ogg chain link */
  963|  8.32k|	decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_METADATA;
  964|       |
  965|  8.32k|	decoder->private_->has_stream_info = false;
  966|       |
  967|  8.32k|	free(decoder->private_->seek_table.data.seek_table.points);
  968|  8.32k|	decoder->private_->seek_table.data.seek_table.points = 0;
  969|  8.32k|	decoder->private_->has_seek_table = false;
  970|       |
  971|  8.32k|	decoder->private_->do_md5_checking = decoder->protected_->md5_checking;
  972|       |	/*
  973|       |	 * This goes in reset() and not flush() because according to the spec, a
  974|       |	 * fixed-blocksize stream must stay that way through the whole stream.
  975|       |	 */
  976|  8.32k|	decoder->private_->fixed_block_size = decoder->private_->next_fixed_block_size = 0;
  977|       |
  978|       |	/* We initialize the FLAC__MD5Context even though we may never use it.  This
  979|       |	 * is because md5 checking may be turned on to start and then turned off if
  980|       |	 * a seek occurs.  So we init the context here and finalize it in
  981|       |	 * FLAC__stream_decoder_finish() to make sure things are always cleaned up
  982|       |	 * properly.
  983|       |	 */
  984|  8.32k|	if(!decoder->private_->internal_reset_hack) {
  ------------------
  |  Branch (984:5): [True: 0, False: 8.32k]
  ------------------
  985|       |		/* Only finish MD5 context when it has been initialized
  986|       |		 * (i.e. when internal_reset_hack is not set) */
  987|      0|		FLAC__MD5Final(decoder->private_->computed_md5sum, &decoder->private_->md5context);
  988|      0|	}
  989|  8.32k|	else
  990|  8.32k|		decoder->private_->internal_reset_hack = false;
  991|  8.32k|	FLAC__MD5Init(&decoder->private_->md5context);
  992|       |
  993|  8.32k|	decoder->private_->first_frame_offset = 0;
  994|  8.32k|	decoder->private_->unparseable_frame_count = 0;
  995|  8.32k|	decoder->private_->last_seen_framesync = 0;
  996|  8.32k|	decoder->private_->last_frame_is_set = false;
  997|       |	decoder->private_->error_has_been_sent = false;
  998|  8.32k|}
stream_decoder.c:set_defaults_:
 1532|  16.6k|{
 1533|  16.6k|	decoder->private_->is_ogg = false;
 1534|  16.6k|	decoder->private_->read_callback = 0;
 1535|  16.6k|	decoder->private_->seek_callback = 0;
 1536|  16.6k|	decoder->private_->tell_callback = 0;
 1537|  16.6k|	decoder->private_->length_callback = 0;
 1538|  16.6k|	decoder->private_->eof_callback = 0;
 1539|  16.6k|	decoder->private_->write_callback = 0;
 1540|  16.6k|	decoder->private_->metadata_callback = 0;
 1541|  16.6k|	decoder->private_->error_callback = 0;
 1542|  16.6k|	decoder->private_->client_data = 0;
 1543|       |
 1544|  16.6k|	memset(decoder->private_->metadata_filter, 0, sizeof(decoder->private_->metadata_filter));
 1545|  16.6k|	decoder->private_->metadata_filter[FLAC__METADATA_TYPE_STREAMINFO] = true;
 1546|  16.6k|	decoder->private_->metadata_filter_ids_count = 0;
 1547|       |
 1548|  16.6k|	decoder->protected_->md5_checking = false;
 1549|       |
 1550|  16.6k|#if FLAC__HAS_OGG
 1551|  16.6k|	FLAC__ogg_decoder_aspect_set_defaults(&decoder->protected_->ogg_decoder_aspect);
 1552|  16.6k|#endif
 1553|  16.6k|}
stream_decoder.c:find_metadata_:
 1655|  8.32k|{
 1656|  8.32k|	FLAC__uint32 x;
 1657|  8.32k|	uint32_t i, id;
 1658|  8.32k|	FLAC__bool first = true;
 1659|       |
 1660|  8.32k|	FLAC__ASSERT(FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input));
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
 1661|       |
 1662|  41.6k|	for(i = id = 0; i < 4; ) {
  ------------------
  |  Branch (1662:18): [True: 33.2k, False: 8.32k]
  ------------------
 1663|  33.2k|		if(decoder->private_->cached) {
  ------------------
  |  Branch (1663:6): [True: 0, False: 33.2k]
  ------------------
 1664|      0|			x = (FLAC__uint32)decoder->private_->lookahead;
 1665|      0|			decoder->private_->cached = false;
 1666|      0|		}
 1667|  33.2k|		else {
 1668|  33.2k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (1668:7): [True: 0, False: 33.2k]
  ------------------
 1669|      0|				return false; /* read_callback_ sets the state for us */
 1670|  33.2k|		}
 1671|  33.2k|		if(x == FLAC__STREAM_SYNC_STRING[i]) {
  ------------------
  |  Branch (1671:6): [True: 33.2k, False: 0]
  ------------------
 1672|  33.2k|			first = true;
 1673|  33.2k|			i++;
 1674|  33.2k|			id = 0;
 1675|  33.2k|			continue;
 1676|  33.2k|		}
 1677|       |
 1678|      0|		if(id >= 3)
  ------------------
  |  Branch (1678:6): [True: 0, False: 0]
  ------------------
 1679|      0|			return false;
 1680|       |
 1681|      0|		if(x == ID3V2_TAG_[id]) {
  ------------------
  |  Branch (1681:6): [True: 0, False: 0]
  ------------------
 1682|      0|			id++;
 1683|      0|			i = 0;
 1684|      0|			if(id == 3) {
  ------------------
  |  Branch (1684:7): [True: 0, False: 0]
  ------------------
 1685|      0|				if(!skip_id3v2_tag_(decoder))
  ------------------
  |  Branch (1685:8): [True: 0, False: 0]
  ------------------
 1686|      0|					return false; /* skip_id3v2_tag_ sets the state for us */
 1687|      0|			}
 1688|      0|			continue;
 1689|      0|		}
 1690|      0|		id = 0;
 1691|      0|		if(x == 0xff) { /* MAGIC NUMBER for the first 8 frame sync bits */
  ------------------
  |  Branch (1691:6): [True: 0, False: 0]
  ------------------
 1692|      0|			decoder->private_->header_warmup[0] = (FLAC__byte)x;
 1693|      0|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (1693:7): [True: 0, False: 0]
  ------------------
 1694|      0|				return false; /* read_callback_ sets the state for us */
 1695|       |
 1696|       |			/* we have to check if we just read two 0xff's in a row; the second may actually be the beginning of the sync code */
 1697|       |			/* else we have to check if the second byte is the end of a sync code */
 1698|      0|			if(x == 0xff) { /* MAGIC NUMBER for the first 8 frame sync bits */
  ------------------
  |  Branch (1698:7): [True: 0, False: 0]
  ------------------
 1699|      0|				decoder->private_->lookahead = (FLAC__byte)x;
 1700|      0|				decoder->private_->cached = true;
 1701|      0|			}
 1702|      0|			else if(x >> 1 == 0x7c) { /* MAGIC NUMBER for the last 6 sync bits and reserved 7th bit */
  ------------------
  |  Branch (1702:12): [True: 0, False: 0]
  ------------------
 1703|      0|				decoder->private_->header_warmup[1] = (FLAC__byte)x;
 1704|      0|				decoder->protected_->state = FLAC__STREAM_DECODER_READ_FRAME;
 1705|      0|				return true;
 1706|      0|			}
 1707|      0|		}
 1708|      0|		i = 0;
 1709|      0|		if(first) {
  ------------------
  |  Branch (1709:6): [True: 0, False: 0]
  ------------------
 1710|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 1711|      0|			first = false;
 1712|      0|		}
 1713|      0|	}
 1714|       |
 1715|  8.32k|	decoder->protected_->state = FLAC__STREAM_DECODER_READ_METADATA;
 1716|       |	return true;
 1717|  8.32k|}
stream_decoder.c:read_metadata_:
 1720|  16.6k|{
 1721|  16.6k|	FLAC__bool is_last;
 1722|  16.6k|	FLAC__uint32 i, x, type, length;
 1723|       |
 1724|  16.6k|	FLAC__ASSERT(FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input));
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
 1725|       |
 1726|  16.6k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__STREAM_METADATA_IS_LAST_LEN))
  ------------------
  |  Branch (1726:5): [True: 0, False: 16.6k]
  ------------------
 1727|      0|		return false; /* read_callback_ sets the state for us */
 1728|  16.6k|	is_last = x? true : false;
  ------------------
  |  Branch (1728:12): [True: 8.32k, False: 8.32k]
  ------------------
 1729|       |
 1730|  16.6k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &type, FLAC__STREAM_METADATA_TYPE_LEN))
  ------------------
  |  Branch (1730:5): [True: 0, False: 16.6k]
  ------------------
 1731|      0|		return false; /* read_callback_ sets the state for us */
 1732|       |
 1733|  16.6k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &length, FLAC__STREAM_METADATA_LENGTH_LEN))
  ------------------
  |  Branch (1733:5): [True: 0, False: 16.6k]
  ------------------
 1734|      0|		return false; /* read_callback_ sets the state for us */
 1735|       |
 1736|  16.6k|	if(type == FLAC__METADATA_TYPE_STREAMINFO) {
  ------------------
  |  Branch (1736:5): [True: 8.32k, False: 8.32k]
  ------------------
 1737|  8.32k|		if(!read_metadata_streaminfo_(decoder, is_last, length))
  ------------------
  |  Branch (1737:6): [True: 0, False: 8.32k]
  ------------------
 1738|      0|			return false;
 1739|       |
 1740|  8.32k|		decoder->private_->has_stream_info = true;
 1741|  8.32k|		if(0 == memcmp(decoder->private_->stream_info.data.stream_info.md5sum, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16))
  ------------------
  |  Branch (1741:6): [True: 8.32k, False: 0]
  ------------------
 1742|  8.32k|			decoder->private_->do_md5_checking = false;
 1743|  8.32k|		if(!decoder->private_->is_seeking && decoder->private_->metadata_filter[FLAC__METADATA_TYPE_STREAMINFO] && decoder->private_->metadata_callback)
  ------------------
  |  Branch (1743:6): [True: 8.32k, False: 0]
  |  Branch (1743:40): [True: 8.32k, False: 0]
  |  Branch (1743:110): [True: 8.32k, False: 0]
  ------------------
 1744|  8.32k|			decoder->private_->metadata_callback(decoder, &decoder->private_->stream_info, decoder->private_->client_data);
 1745|  8.32k|	}
 1746|  8.32k|	else if(type == FLAC__METADATA_TYPE_SEEKTABLE) {
  ------------------
  |  Branch (1746:10): [True: 0, False: 8.32k]
  ------------------
 1747|       |		/* just in case we already have a seek table, and reading the next one fails: */
 1748|      0|		decoder->private_->has_seek_table = false;
 1749|       |
 1750|      0|		if(length > 0) {
  ------------------
  |  Branch (1750:6): [True: 0, False: 0]
  ------------------
 1751|      0|			if(!read_metadata_seektable_(decoder, is_last, length))
  ------------------
  |  Branch (1751:7): [True: 0, False: 0]
  ------------------
 1752|      0|				return false;
 1753|       |
 1754|      0|			decoder->private_->has_seek_table = true;
 1755|      0|			if(!decoder->private_->is_seeking && decoder->private_->metadata_filter[FLAC__METADATA_TYPE_SEEKTABLE] && decoder->private_->metadata_callback)
  ------------------
  |  Branch (1755:7): [True: 0, False: 0]
  |  Branch (1755:41): [True: 0, False: 0]
  |  Branch (1755:110): [True: 0, False: 0]
  ------------------
 1756|      0|				decoder->private_->metadata_callback(decoder, &decoder->private_->seek_table, decoder->private_->client_data);
 1757|      0|		}
 1758|      0|	}
 1759|  8.32k|	else {
 1760|  8.32k|		FLAC__bool skip_it = !decoder->private_->metadata_filter[type];
 1761|  8.32k|		uint32_t real_length = length;
 1762|  8.32k|		FLAC__StreamMetadata block;
 1763|       |
 1764|  8.32k|		memset(&block, 0, sizeof(block));
 1765|  8.32k|		block.is_last = is_last;
 1766|  8.32k|		block.type = (FLAC__MetadataType)type;
 1767|  8.32k|		block.length = length;
 1768|       |
 1769|  8.32k|		if(type == FLAC__METADATA_TYPE_APPLICATION) {
  ------------------
  |  Branch (1769:6): [True: 0, False: 8.32k]
  ------------------
 1770|      0|			if(!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, block.data.application.id, FLAC__STREAM_METADATA_APPLICATION_ID_LEN/8))
  ------------------
  |  Branch (1770:7): [True: 0, False: 0]
  ------------------
 1771|      0|				return false; /* read_callback_ sets the state for us */
 1772|       |
 1773|      0|			if(real_length < FLAC__STREAM_METADATA_APPLICATION_ID_LEN/8) { /* underflow check */
  ------------------
  |  Branch (1773:7): [True: 0, False: 0]
  ------------------
 1774|      0|				decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;/*@@@@@@ maybe wrong error? need to resync?*/
 1775|      0|				return false;
 1776|      0|			}
 1777|       |
 1778|      0|			real_length -= FLAC__STREAM_METADATA_APPLICATION_ID_LEN/8;
 1779|       |
 1780|      0|			if(decoder->private_->metadata_filter_ids_count > 0 && has_id_filtered_(decoder, block.data.application.id))
  ------------------
  |  Branch (1780:7): [True: 0, False: 0]
  |  Branch (1780:59): [True: 0, False: 0]
  ------------------
 1781|      0|				skip_it = !skip_it;
 1782|      0|		}
 1783|       |
 1784|  8.32k|		if(skip_it) {
  ------------------
  |  Branch (1784:6): [True: 8.32k, False: 0]
  ------------------
 1785|  8.32k|			if(!FLAC__bitreader_skip_byte_block_aligned_no_crc(decoder->private_->input, real_length))
  ------------------
  |  Branch (1785:7): [True: 0, False: 8.32k]
  ------------------
 1786|      0|				return false; /* read_callback_ sets the state for us */
 1787|  8.32k|		}
 1788|      0|		else {
 1789|      0|			FLAC__bool ok = true;
 1790|      0|			FLAC__bitreader_set_limit(decoder->private_->input, real_length*8);
 1791|      0|			switch(type) {
 1792|      0|				case FLAC__METADATA_TYPE_PADDING:
  ------------------
  |  Branch (1792:5): [True: 0, False: 0]
  ------------------
 1793|       |					/* skip the padding bytes */
 1794|      0|					if(!FLAC__bitreader_skip_byte_block_aligned_no_crc(decoder->private_->input, real_length))
  ------------------
  |  Branch (1794:9): [True: 0, False: 0]
  ------------------
 1795|      0|						ok = false; /* read_callback_ sets the state for us */
 1796|      0|					break;
 1797|      0|				case FLAC__METADATA_TYPE_APPLICATION:
  ------------------
  |  Branch (1797:5): [True: 0, False: 0]
  ------------------
 1798|       |					/* remember, we read the ID already */
 1799|      0|					if(real_length > 0) {
  ------------------
  |  Branch (1799:9): [True: 0, False: 0]
  ------------------
 1800|      0|						if(0 == (block.data.application.data = malloc(real_length))) {
  ------------------
  |  Branch (1800:10): [True: 0, False: 0]
  ------------------
 1801|      0|							decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 1802|      0|							ok = false;
 1803|      0|						}
 1804|      0|						else if(!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, block.data.application.data, real_length))
  ------------------
  |  Branch (1804:15): [True: 0, False: 0]
  ------------------
 1805|      0|							ok = false; /* read_callback_ sets the state for us */
 1806|      0|					}
 1807|      0|					else
 1808|      0|						block.data.application.data = 0;
 1809|      0|					break;
 1810|      0|				case FLAC__METADATA_TYPE_VORBIS_COMMENT:
  ------------------
  |  Branch (1810:5): [True: 0, False: 0]
  ------------------
 1811|      0|					if(!read_metadata_vorbiscomment_(decoder, &block.data.vorbis_comment, real_length))
  ------------------
  |  Branch (1811:9): [True: 0, False: 0]
  ------------------
 1812|      0|						ok = false;
 1813|      0|					break;
 1814|      0|				case FLAC__METADATA_TYPE_CUESHEET:
  ------------------
  |  Branch (1814:5): [True: 0, False: 0]
  ------------------
 1815|      0|					if(!read_metadata_cuesheet_(decoder, &block.data.cue_sheet))
  ------------------
  |  Branch (1815:9): [True: 0, False: 0]
  ------------------
 1816|      0|						ok = false;
 1817|      0|					break;
 1818|      0|				case FLAC__METADATA_TYPE_PICTURE:
  ------------------
  |  Branch (1818:5): [True: 0, False: 0]
  ------------------
 1819|      0|					if(!read_metadata_picture_(decoder, &block.data.picture))
  ------------------
  |  Branch (1819:9): [True: 0, False: 0]
  ------------------
 1820|      0|						ok = false;
 1821|      0|					break;
 1822|      0|				case FLAC__METADATA_TYPE_STREAMINFO:
  ------------------
  |  Branch (1822:5): [True: 0, False: 0]
  ------------------
 1823|      0|				case FLAC__METADATA_TYPE_SEEKTABLE:
  ------------------
  |  Branch (1823:5): [True: 0, False: 0]
  ------------------
 1824|      0|					FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 1825|      0|					break;
 1826|      0|				default:
  ------------------
  |  Branch (1826:5): [True: 0, False: 0]
  ------------------
 1827|      0|					if(real_length > 0) {
  ------------------
  |  Branch (1827:9): [True: 0, False: 0]
  ------------------
 1828|      0|						if(0 == (block.data.unknown.data = malloc(real_length))) {
  ------------------
  |  Branch (1828:10): [True: 0, False: 0]
  ------------------
 1829|      0|							decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 1830|      0|							ok = false;
 1831|      0|						}
 1832|      0|						else if(!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, block.data.unknown.data, real_length))
  ------------------
  |  Branch (1832:15): [True: 0, False: 0]
  ------------------
 1833|      0|							ok = false; /* read_callback_ sets the state for us */
 1834|      0|					}
 1835|      0|					else
 1836|      0|						block.data.unknown.data = 0;
 1837|      0|					break;
 1838|      0|			}
 1839|      0|			if(FLAC__bitreader_limit_remaining(decoder->private_->input) > 0) {
  ------------------
  |  Branch (1839:7): [True: 0, False: 0]
  ------------------
 1840|       |				/* Content in metadata block didn't fit in block length
 1841|       |				 * We cannot know whether the length or the content was
 1842|       |				 * corrupt, so stop parsing metadata */
 1843|      0|				send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_METADATA);
 1844|      0|				if(decoder->protected_->state == FLAC__STREAM_DECODER_READ_METADATA)
  ------------------
  |  Branch (1844:8): [True: 0, False: 0]
  ------------------
 1845|      0|					decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 1846|      0|				ok = false;
 1847|      0|			}
 1848|      0|			FLAC__bitreader_remove_limit(decoder->private_->input);
 1849|      0|			if(ok && !decoder->private_->is_seeking && decoder->private_->metadata_callback)
  ------------------
  |  Branch (1849:7): [True: 0, False: 0]
  |  Branch (1849:13): [True: 0, False: 0]
  |  Branch (1849:47): [True: 0, False: 0]
  ------------------
 1850|      0|				decoder->private_->metadata_callback(decoder, &block, decoder->private_->client_data);
 1851|       |
 1852|       |			/* now we have to free any malloc()ed data in the block */
 1853|      0|			switch(type) {
 1854|      0|				case FLAC__METADATA_TYPE_PADDING:
  ------------------
  |  Branch (1854:5): [True: 0, False: 0]
  ------------------
 1855|      0|					break;
 1856|      0|				case FLAC__METADATA_TYPE_APPLICATION:
  ------------------
  |  Branch (1856:5): [True: 0, False: 0]
  ------------------
 1857|      0|					if(0 != block.data.application.data)
  ------------------
  |  Branch (1857:9): [True: 0, False: 0]
  ------------------
 1858|      0|						free(block.data.application.data);
 1859|      0|					break;
 1860|      0|				case FLAC__METADATA_TYPE_VORBIS_COMMENT:
  ------------------
  |  Branch (1860:5): [True: 0, False: 0]
  ------------------
 1861|      0|					if(0 != block.data.vorbis_comment.vendor_string.entry)
  ------------------
  |  Branch (1861:9): [True: 0, False: 0]
  ------------------
 1862|      0|						free(block.data.vorbis_comment.vendor_string.entry);
 1863|      0|					if(block.data.vorbis_comment.num_comments > 0)
  ------------------
  |  Branch (1863:9): [True: 0, False: 0]
  ------------------
 1864|      0|						for(i = 0; i < block.data.vorbis_comment.num_comments; i++)
  ------------------
  |  Branch (1864:18): [True: 0, False: 0]
  ------------------
 1865|      0|							if(0 != block.data.vorbis_comment.comments[i].entry)
  ------------------
  |  Branch (1865:11): [True: 0, False: 0]
  ------------------
 1866|      0|								free(block.data.vorbis_comment.comments[i].entry);
 1867|      0|					if(0 != block.data.vorbis_comment.comments)
  ------------------
  |  Branch (1867:9): [True: 0, False: 0]
  ------------------
 1868|      0|						free(block.data.vorbis_comment.comments);
 1869|      0|					break;
 1870|      0|				case FLAC__METADATA_TYPE_CUESHEET:
  ------------------
  |  Branch (1870:5): [True: 0, False: 0]
  ------------------
 1871|      0|					if(block.data.cue_sheet.num_tracks > 0 && 0 != block.data.cue_sheet.tracks)
  ------------------
  |  Branch (1871:9): [True: 0, False: 0]
  |  Branch (1871:48): [True: 0, False: 0]
  ------------------
 1872|      0|						for(i = 0; i < block.data.cue_sheet.num_tracks; i++)
  ------------------
  |  Branch (1872:18): [True: 0, False: 0]
  ------------------
 1873|      0|							if(0 != block.data.cue_sheet.tracks[i].indices)
  ------------------
  |  Branch (1873:11): [True: 0, False: 0]
  ------------------
 1874|      0|								free(block.data.cue_sheet.tracks[i].indices);
 1875|      0|					if(0 != block.data.cue_sheet.tracks)
  ------------------
  |  Branch (1875:9): [True: 0, False: 0]
  ------------------
 1876|      0|						free(block.data.cue_sheet.tracks);
 1877|      0|					break;
 1878|      0|				case FLAC__METADATA_TYPE_PICTURE:
  ------------------
  |  Branch (1878:5): [True: 0, False: 0]
  ------------------
 1879|      0|					if(0 != block.data.picture.mime_type)
  ------------------
  |  Branch (1879:9): [True: 0, False: 0]
  ------------------
 1880|      0|						free(block.data.picture.mime_type);
 1881|      0|					if(0 != block.data.picture.description)
  ------------------
  |  Branch (1881:9): [True: 0, False: 0]
  ------------------
 1882|      0|						free(block.data.picture.description);
 1883|      0|					if(0 != block.data.picture.data)
  ------------------
  |  Branch (1883:9): [True: 0, False: 0]
  ------------------
 1884|      0|						free(block.data.picture.data);
 1885|      0|					break;
 1886|      0|				case FLAC__METADATA_TYPE_STREAMINFO:
  ------------------
  |  Branch (1886:5): [True: 0, False: 0]
  ------------------
 1887|      0|				case FLAC__METADATA_TYPE_SEEKTABLE:
  ------------------
  |  Branch (1887:5): [True: 0, False: 0]
  ------------------
 1888|      0|					FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 1889|      0|				default:
  ------------------
  |  Branch (1889:5): [True: 0, False: 0]
  ------------------
 1890|      0|					if(0 != block.data.unknown.data)
  ------------------
  |  Branch (1890:9): [True: 0, False: 0]
  ------------------
 1891|      0|						free(block.data.unknown.data);
 1892|      0|					break;
 1893|      0|			}
 1894|       |
 1895|      0|			if(!ok) /* anything that unsets "ok" should also make sure decoder->protected_->state is updated */
  ------------------
  |  Branch (1895:7): [True: 0, False: 0]
  ------------------
 1896|      0|				return false;
 1897|      0|		}
 1898|  8.32k|	}
 1899|       |
 1900|  16.6k|	if(is_last) {
  ------------------
  |  Branch (1900:5): [True: 8.32k, False: 8.32k]
  ------------------
 1901|       |		/* if this fails, it's OK, it's just a hint for the seek routine */
 1902|  8.32k|		if(!FLAC__stream_decoder_get_decode_position(decoder, &decoder->private_->first_frame_offset))
  ------------------
  |  Branch (1902:6): [True: 8.32k, False: 0]
  ------------------
 1903|  8.32k|			decoder->private_->first_frame_offset = 0;
 1904|  8.32k|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 1905|  8.32k|	}
 1906|       |
 1907|       |	return true;
 1908|  16.6k|}
stream_decoder.c:read_metadata_streaminfo_:
 1911|  8.32k|{
 1912|  8.32k|	FLAC__uint32 x;
 1913|  8.32k|	uint32_t bits, used_bits = 0;
 1914|       |
 1915|  8.32k|	FLAC__ASSERT(FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input));
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
 1916|       |
 1917|  8.32k|	decoder->private_->stream_info.type = FLAC__METADATA_TYPE_STREAMINFO;
 1918|  8.32k|	decoder->private_->stream_info.is_last = is_last;
 1919|  8.32k|	decoder->private_->stream_info.length = length;
 1920|       |
 1921|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN;
 1922|  8.32k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, bits))
  ------------------
  |  Branch (1922:5): [True: 0, False: 8.32k]
  ------------------
 1923|      0|		return false; /* read_callback_ sets the state for us */
 1924|  8.32k|	decoder->private_->stream_info.data.stream_info.min_blocksize = x;
 1925|  8.32k|	used_bits += bits;
 1926|       |
 1927|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN;
 1928|  8.32k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN))
  ------------------
  |  Branch (1928:5): [True: 0, False: 8.32k]
  ------------------
 1929|      0|		return false; /* read_callback_ sets the state for us */
 1930|  8.32k|	decoder->private_->stream_info.data.stream_info.max_blocksize = x;
 1931|  8.32k|	used_bits += bits;
 1932|       |
 1933|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN;
 1934|  8.32k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN))
  ------------------
  |  Branch (1934:5): [True: 0, False: 8.32k]
  ------------------
 1935|      0|		return false; /* read_callback_ sets the state for us */
 1936|  8.32k|	decoder->private_->stream_info.data.stream_info.min_framesize = x;
 1937|  8.32k|	used_bits += bits;
 1938|       |
 1939|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN;
 1940|  8.32k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN))
  ------------------
  |  Branch (1940:5): [True: 0, False: 8.32k]
  ------------------
 1941|      0|		return false; /* read_callback_ sets the state for us */
 1942|  8.32k|	decoder->private_->stream_info.data.stream_info.max_framesize = x;
 1943|  8.32k|	used_bits += bits;
 1944|       |
 1945|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN;
 1946|  8.32k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN))
  ------------------
  |  Branch (1946:5): [True: 0, False: 8.32k]
  ------------------
 1947|      0|		return false; /* read_callback_ sets the state for us */
 1948|  8.32k|	decoder->private_->stream_info.data.stream_info.sample_rate = x;
 1949|  8.32k|	used_bits += bits;
 1950|       |
 1951|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN;
 1952|  8.32k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN))
  ------------------
  |  Branch (1952:5): [True: 0, False: 8.32k]
  ------------------
 1953|      0|		return false; /* read_callback_ sets the state for us */
 1954|  8.32k|	decoder->private_->stream_info.data.stream_info.channels = x+1;
 1955|  8.32k|	used_bits += bits;
 1956|       |
 1957|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN;
 1958|  8.32k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN))
  ------------------
  |  Branch (1958:5): [True: 0, False: 8.32k]
  ------------------
 1959|      0|		return false; /* read_callback_ sets the state for us */
 1960|  8.32k|	decoder->private_->stream_info.data.stream_info.bits_per_sample = x+1;
 1961|  8.32k|	used_bits += bits;
 1962|       |
 1963|  8.32k|	bits = FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN;
 1964|  8.32k|	if(!FLAC__bitreader_read_raw_uint64(decoder->private_->input, &decoder->private_->stream_info.data.stream_info.total_samples, FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN))
  ------------------
  |  Branch (1964:5): [True: 0, False: 8.32k]
  ------------------
 1965|      0|		return false; /* read_callback_ sets the state for us */
 1966|  8.32k|	used_bits += bits;
 1967|       |
 1968|  8.32k|	if(!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, decoder->private_->stream_info.data.stream_info.md5sum, 16))
  ------------------
  |  Branch (1968:5): [True: 0, False: 8.32k]
  ------------------
 1969|      0|		return false; /* read_callback_ sets the state for us */
 1970|  8.32k|	used_bits += 16*8;
 1971|       |
 1972|       |	/* skip the rest of the block */
 1973|  8.32k|	FLAC__ASSERT(used_bits % 8 == 0);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
 1974|  8.32k|	if (length < (used_bits / 8))
  ------------------
  |  Branch (1974:6): [True: 0, False: 8.32k]
  ------------------
 1975|      0|		return false; /* read_callback_ sets the state for us */
 1976|  8.32k|	length -= (used_bits / 8);
 1977|  8.32k|	if(!FLAC__bitreader_skip_byte_block_aligned_no_crc(decoder->private_->input, length))
  ------------------
  |  Branch (1977:5): [True: 0, False: 8.32k]
  ------------------
 1978|      0|		return false; /* read_callback_ sets the state for us */
 1979|       |
 1980|  8.32k|	return true;
 1981|  8.32k|}
stream_decoder.c:frame_sync_:
 2322|   203k|{
 2323|   203k|	FLAC__uint32 x;
 2324|   203k|	FLAC__bool first = true;
 2325|       |
 2326|       |	/* make sure we're byte aligned */
 2327|   203k|	if(!FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input)) {
  ------------------
  |  Branch (2327:5): [True: 0, False: 203k]
  ------------------
 2328|      0|		if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__bitreader_bits_left_for_byte_alignment(decoder->private_->input)))
  ------------------
  |  Branch (2328:6): [True: 0, False: 0]
  ------------------
 2329|      0|			return false; /* read_callback_ sets the state for us */
 2330|      0|	}
 2331|       |
 2332|   203k|	while(1) {
  ------------------
  |  Branch (2332:8): [True: 203k, Folded]
  ------------------
 2333|   203k|		if(decoder->private_->cached) {
  ------------------
  |  Branch (2333:6): [True: 0, False: 203k]
  ------------------
 2334|      0|			x = (FLAC__uint32)decoder->private_->lookahead;
 2335|      0|			decoder->private_->cached = false;
 2336|      0|		}
 2337|   203k|		else {
 2338|   203k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (2338:7): [True: 0, False: 203k]
  ------------------
 2339|      0|				return false; /* read_callback_ sets the state for us */
 2340|   203k|		}
 2341|   203k|		if(x == 0xff) { /* MAGIC NUMBER for the first 8 frame sync bits */
  ------------------
  |  Branch (2341:6): [True: 203k, False: 0]
  ------------------
 2342|   203k|			decoder->private_->header_warmup[0] = (FLAC__byte)x;
 2343|   203k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (2343:7): [True: 0, False: 203k]
  ------------------
 2344|      0|				return false; /* read_callback_ sets the state for us */
 2345|       |
 2346|       |			/* we have to check if we just read two 0xff's in a row; the second may actually be the beginning of the sync code */
 2347|       |			/* else we have to check if the second byte is the end of a sync code */
 2348|   203k|			if(x == 0xff) { /* MAGIC NUMBER for the first 8 frame sync bits */
  ------------------
  |  Branch (2348:7): [True: 0, False: 203k]
  ------------------
 2349|      0|				decoder->private_->lookahead = (FLAC__byte)x;
 2350|      0|				decoder->private_->cached = true;
 2351|      0|			}
 2352|   203k|			else if(x >> 1 == 0x7c) { /* MAGIC NUMBER for the last 6 sync bits and reserved 7th bit */
  ------------------
  |  Branch (2352:12): [True: 203k, False: 0]
  ------------------
 2353|   203k|				decoder->private_->header_warmup[1] = (FLAC__byte)x;
 2354|   203k|				decoder->protected_->state = FLAC__STREAM_DECODER_READ_FRAME;
 2355|       |
 2356|       |				/* Save location so we can rewind in case the frame turns
 2357|       |				 * out to be invalid after the header */
 2358|   203k|				FLAC__bitreader_set_framesync_location(decoder->private_->input);
 2359|   203k|				if(!FLAC__stream_decoder_get_decode_position(decoder, &decoder->private_->last_seen_framesync))
  ------------------
  |  Branch (2359:8): [True: 203k, False: 0]
  ------------------
 2360|   203k|					decoder->private_->last_seen_framesync = 0;
 2361|   203k|				return true;
 2362|   203k|			}
 2363|   203k|		}
 2364|      0|		if(first) {
  ------------------
  |  Branch (2364:6): [True: 0, False: 0]
  ------------------
 2365|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 2366|      0|			first = false;
 2367|      0|		}
 2368|      0|	}
 2369|       |
 2370|      0|	return true;
 2371|   203k|}
stream_decoder.c:read_frame_:
 2374|   203k|{
 2375|   203k|	uint32_t channel;
 2376|   203k|	uint32_t i;
 2377|   203k|	uint32_t frame_crc; /* the one we calculate from the input stream */
 2378|   203k|	FLAC__uint32 x;
 2379|       |
 2380|   203k|	*got_a_frame = false;
 2381|   203k|	decoder->private_->side_subframe_in_use = false;
 2382|       |
 2383|       |	/* init the CRC */
 2384|   203k|	frame_crc = 0;
 2385|   203k|	frame_crc = FLAC__CRC16_UPDATE(decoder->private_->header_warmup[0], frame_crc);
  ------------------
  |  |   50|   203k|#define FLAC__CRC16_UPDATE(data, crc) ((((crc)<<8) & 0xffff) ^ FLAC__crc16_table[0][((crc)>>8) ^ (data)])
  ------------------
 2386|   203k|	frame_crc = FLAC__CRC16_UPDATE(decoder->private_->header_warmup[1], frame_crc);
  ------------------
  |  |   50|   203k|#define FLAC__CRC16_UPDATE(data, crc) ((((crc)<<8) & 0xffff) ^ FLAC__crc16_table[0][((crc)>>8) ^ (data)])
  ------------------
 2387|   203k|	FLAC__bitreader_reset_read_crc16(decoder->private_->input, (FLAC__uint16)frame_crc);
 2388|       |
 2389|   203k|	if(!read_frame_header_(decoder))
  ------------------
  |  Branch (2389:5): [True: 0, False: 203k]
  ------------------
 2390|      0|		return false;
 2391|   203k|	if(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC) /* means we didn't sync on a valid header */
  ------------------
  |  Branch (2391:5): [True: 0, False: 203k]
  ------------------
 2392|      0|		return true;
 2393|   203k|	if(!allocate_output_(decoder, decoder->private_->frame.header.blocksize, decoder->private_->frame.header.channels, decoder->private_->frame.header.bits_per_sample))
  ------------------
  |  Branch (2393:5): [True: 0, False: 203k]
  ------------------
 2394|      0|		return false;
 2395|   475k|	for(channel = 0; channel < decoder->private_->frame.header.channels; channel++) {
  ------------------
  |  Branch (2395:19): [True: 271k, False: 203k]
  ------------------
 2396|       |		/*
 2397|       |		 * first figure the correct bits-per-sample of the subframe
 2398|       |		 */
 2399|   271k|		uint32_t bps = decoder->private_->frame.header.bits_per_sample;
 2400|   271k|		switch(decoder->private_->frame.header.channel_assignment) {
 2401|   201k|			case FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT:
  ------------------
  |  Branch (2401:4): [True: 201k, False: 69.6k]
  ------------------
 2402|       |				/* no adjustment needed */
 2403|   201k|				break;
 2404|  33.1k|			case FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE:
  ------------------
  |  Branch (2404:4): [True: 33.1k, False: 238k]
  ------------------
 2405|  33.1k|				FLAC__ASSERT(decoder->private_->frame.header.channels == 2);
  ------------------
  |  |   38|  33.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 33.1k]
  |  |  ------------------
  ------------------
 2406|  33.1k|				if(channel == 1)
  ------------------
  |  Branch (2406:8): [True: 16.5k, False: 16.5k]
  ------------------
 2407|  16.5k|					bps++;
 2408|  33.1k|				break;
 2409|  14.2k|			case FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE:
  ------------------
  |  Branch (2409:4): [True: 14.2k, False: 257k]
  ------------------
 2410|  14.2k|				FLAC__ASSERT(decoder->private_->frame.header.channels == 2);
  ------------------
  |  |   38|  14.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 14.2k]
  |  |  ------------------
  ------------------
 2411|  14.2k|				if(channel == 0)
  ------------------
  |  Branch (2411:8): [True: 7.14k, False: 7.14k]
  ------------------
 2412|  7.14k|					bps++;
 2413|  14.2k|				break;
 2414|  22.2k|			case FLAC__CHANNEL_ASSIGNMENT_MID_SIDE:
  ------------------
  |  Branch (2414:4): [True: 22.2k, False: 249k]
  ------------------
 2415|  22.2k|				FLAC__ASSERT(decoder->private_->frame.header.channels == 2);
  ------------------
  |  |   38|  22.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 22.2k]
  |  |  ------------------
  ------------------
 2416|  22.2k|				if(channel == 1)
  ------------------
  |  Branch (2416:8): [True: 11.1k, False: 11.1k]
  ------------------
 2417|  11.1k|					bps++;
 2418|  22.2k|				break;
 2419|      0|			default:
  ------------------
  |  Branch (2419:4): [True: 0, False: 271k]
  ------------------
 2420|      0|				FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2421|   271k|		}
 2422|       |		/*
 2423|       |		 * now read it
 2424|       |		 */
 2425|   271k|		if(!read_subframe_(decoder, channel, bps, do_full_decode)){
  ------------------
  |  Branch (2425:6): [True: 0, False: 271k]
  ------------------
 2426|       |			/* read_callback_ sets the state for us */
 2427|      0|			if(decoder->protected_->state == FLAC__STREAM_DECODER_END_OF_STREAM)
  ------------------
  |  Branch (2427:7): [True: 0, False: 0]
  ------------------
 2428|      0|				break;
 2429|      0|			else
 2430|      0|				return false;
 2431|      0|		}
 2432|   271k|		if(decoder->protected_->state != FLAC__STREAM_DECODER_READ_FRAME)
  ------------------
  |  Branch (2432:6): [True: 0, False: 271k]
  ------------------
 2433|      0|			break;
 2434|   271k|	}
 2435|       |
 2436|   203k|	if(decoder->protected_->state != FLAC__STREAM_DECODER_END_OF_STREAM)
  ------------------
  |  Branch (2436:5): [True: 203k, False: 0]
  ------------------
 2437|   203k|		if(!read_zero_padding_(decoder))
  ------------------
  |  Branch (2437:6): [True: 0, False: 203k]
  ------------------
 2438|      0|			return false;
 2439|       |
 2440|       |	/*
 2441|       |	 * Read the frame CRC-16 from the footer and check
 2442|       |	 */
 2443|   203k|	if(decoder->protected_->state == FLAC__STREAM_DECODER_READ_FRAME) {
  ------------------
  |  Branch (2443:5): [True: 203k, False: 0]
  ------------------
 2444|   203k|		frame_crc = FLAC__bitreader_get_read_crc16(decoder->private_->input);
 2445|   203k|		if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, FLAC__FRAME_FOOTER_CRC_LEN)) {
  ------------------
  |  Branch (2445:6): [True: 0, False: 203k]
  ------------------
 2446|       |			/* read_callback_ sets the state for us */
 2447|      0|			if(decoder->protected_->state != FLAC__STREAM_DECODER_END_OF_STREAM)
  ------------------
  |  Branch (2447:7): [True: 0, False: 0]
  ------------------
 2448|      0|				return false;
 2449|      0|		}
 2450|       |#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 2451|       |	}
 2452|       |	if(decoder->protected_->state == FLAC__STREAM_DECODER_READ_FRAME && frame_crc == x) {
 2453|       |#endif
 2454|   203k|		if(do_full_decode) {
  ------------------
  |  Branch (2454:6): [True: 203k, False: 0]
  ------------------
 2455|       |			/* Undo any special channel coding */
 2456|   203k|			undo_channel_coding(decoder);
 2457|       |			/* Check whether decoded data actually fits bps */
 2458|   475k|			for(channel = 0; channel < decoder->private_->frame.header.channels; channel++) {
  ------------------
  |  Branch (2458:21): [True: 271k, False: 203k]
  ------------------
 2459|   271k|				int shift_bits = 32 - decoder->private_->frame.header.bits_per_sample;
 2460|   271k|				int lower_limit = INT32_MIN >> shift_bits;
 2461|   271k|				int upper_limit = INT32_MAX >> shift_bits;
 2462|  28.7M|				for(i = 0; i < decoder->private_->frame.header.blocksize; i++) {
  ------------------
  |  Branch (2462:16): [True: 28.4M, False: 271k]
  ------------------
 2463|       |					/* Check whether shift_bits MSBs are 'empty' by shifting up and down */
 2464|  28.4M|					if((decoder->private_->output[channel][i] < lower_limit) ||
  ------------------
  |  Branch (2464:9): [True: 0, False: 28.4M]
  ------------------
 2465|  28.4M|					   (decoder->private_->output[channel][i] > upper_limit)) {
  ------------------
  |  Branch (2465:9): [True: 0, False: 28.4M]
  ------------------
 2466|       |						/* Bad frame, emit error */
 2467|      0|						send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_OUT_OF_BOUNDS);
 2468|      0|						decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2469|      0|						break;
 2470|      0|					}
 2471|  28.4M|				}
 2472|   271k|			}
 2473|   203k|		}
 2474|   203k|	}
 2475|       |#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 2476|       |	else if (decoder->protected_->state == FLAC__STREAM_DECODER_READ_FRAME) {
 2477|       |		/* Bad frame, emit error */
 2478|       |		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH);
 2479|       |		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2480|       |	}
 2481|       |#endif
 2482|       |
 2483|       |	/* Check whether frames are missing, if so, add silence to compensate */
 2484|   203k|	if(decoder->private_->last_frame_is_set && decoder->protected_->state == FLAC__STREAM_DECODER_READ_FRAME && !decoder->private_->is_seeking && do_full_decode) {
  ------------------
  |  Branch (2484:5): [True: 195k, False: 7.84k]
  |  Branch (2484:45): [True: 195k, False: 0]
  |  Branch (2484:110): [True: 195k, False: 0]
  |  Branch (2484:144): [True: 195k, False: 0]
  ------------------
 2485|   195k|		FLAC__ASSERT(decoder->private_->frame.header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
  ------------------
  |  |   38|   195k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 195k]
  |  |  ------------------
  ------------------
 2486|   195k|		FLAC__ASSERT(decoder->private_->last_frame.header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
  ------------------
  |  |   38|   195k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 195k]
  |  |  ------------------
  ------------------
 2487|   195k|		if(decoder->private_->last_frame.header.number.sample_number + decoder->private_->last_frame.header.blocksize < decoder->private_->frame.header.number.sample_number) {
  ------------------
  |  Branch (2487:6): [True: 0, False: 195k]
  ------------------
 2488|      0|			uint32_t padding_samples_needed = decoder->private_->frame.header.number.sample_number - (decoder->private_->last_frame.header.number.sample_number + decoder->private_->last_frame.header.blocksize);
 2489|       |			/* Send an error that we lost sync, but only in case no error
 2490|       |			 * has been sent yet. This is the case if exactly one or more
 2491|       |			 * frames are missing, and the frames before and after it
 2492|       |			 * are complete */
 2493|      0|			if(!decoder->private_->error_has_been_sent)
  ------------------
  |  Branch (2493:7): [True: 0, False: 0]
  ------------------
 2494|      0|				send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_MISSING_FRAME);
 2495|       |			/* Do some extra validation to assure last frame an current frame
 2496|       |			 * header are both valid before adding silence inbetween
 2497|       |			 * Technically both frames could be valid with differing sample_rates,
 2498|       |			 * channels and bits_per_sample, but it is quite rare */
 2499|      0|			if(decoder->private_->last_frame.header.sample_rate == decoder->private_->frame.header.sample_rate &&
  ------------------
  |  Branch (2499:7): [True: 0, False: 0]
  ------------------
 2500|      0|			   decoder->private_->last_frame.header.channels == decoder->private_->frame.header.channels &&
  ------------------
  |  Branch (2500:7): [True: 0, False: 0]
  ------------------
 2501|      0|			   decoder->private_->last_frame.header.bits_per_sample == decoder->private_->frame.header.bits_per_sample &&
  ------------------
  |  Branch (2501:7): [True: 0, False: 0]
  ------------------
 2502|      0|			   decoder->private_->last_frame.header.blocksize >= 16) {
  ------------------
  |  Branch (2502:7): [True: 0, False: 0]
  ------------------
 2503|      0|				FLAC__Frame empty_frame;
 2504|      0|				FLAC__int32 * empty_buffer[FLAC__MAX_CHANNELS] = {NULL};
 2505|      0|				empty_frame.header = decoder->private_->last_frame.header;
 2506|      0|				empty_frame.footer.crc = 0;
 2507|      0|				for(i = 0; i < empty_frame.header.channels; i++) {
  ------------------
  |  Branch (2507:16): [True: 0, False: 0]
  ------------------
 2508|      0|					empty_buffer[i] = safe_calloc_(empty_frame.header.blocksize, sizeof(FLAC__int32));
 2509|      0|					if(empty_buffer[i] == NULL) {
  ------------------
  |  Branch (2509:9): [True: 0, False: 0]
  ------------------
 2510|      0|						for(i = 0; i < empty_frame.header.channels; i++)
  ------------------
  |  Branch (2510:18): [True: 0, False: 0]
  ------------------
 2511|      0|							if(empty_buffer[i] != NULL)
  ------------------
  |  Branch (2511:11): [True: 0, False: 0]
  ------------------
 2512|      0|								free(empty_buffer[i]);
 2513|      0|						decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 2514|      0|						return false;
 2515|      0|					}
 2516|      0|				}
 2517|       |				/* No repairs larger than 5 seconds or 50 frames are made, to not
 2518|       |				 * unexpectedly create enormous files when one of the headers was
 2519|       |				 * corrupt after all */
 2520|      0|				if(padding_samples_needed > (5*empty_frame.header.sample_rate))
  ------------------
  |  Branch (2520:8): [True: 0, False: 0]
  ------------------
 2521|      0|					padding_samples_needed = 5*empty_frame.header.sample_rate;
 2522|      0|				if(padding_samples_needed > (50*empty_frame.header.blocksize))
  ------------------
  |  Branch (2522:8): [True: 0, False: 0]
  ------------------
 2523|      0|					padding_samples_needed = 50*empty_frame.header.blocksize;
 2524|      0|				while(padding_samples_needed){
  ------------------
  |  Branch (2524:11): [True: 0, False: 0]
  ------------------
 2525|      0|					empty_frame.header.number.sample_number += empty_frame.header.blocksize;
 2526|      0|					if(padding_samples_needed < empty_frame.header.blocksize)
  ------------------
  |  Branch (2526:9): [True: 0, False: 0]
  ------------------
 2527|      0|						empty_frame.header.blocksize = padding_samples_needed;
 2528|      0|					padding_samples_needed -= empty_frame.header.blocksize;
 2529|      0|					decoder->protected_->blocksize = empty_frame.header.blocksize;
 2530|       |
 2531|      0|					FLAC__ASSERT(empty_frame.header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2532|      0|					decoder->private_->samples_decoded = empty_frame.header.number.sample_number + empty_frame.header.blocksize;
 2533|       |
 2534|      0|					for(channel = 0; channel < empty_frame.header.channels; channel++) {
  ------------------
  |  Branch (2534:23): [True: 0, False: 0]
  ------------------
 2535|      0|						empty_frame.subframes[channel].type = FLAC__SUBFRAME_TYPE_CONSTANT;
 2536|      0|						empty_frame.subframes[channel].data.constant.value = 0;
 2537|      0|						empty_frame.subframes[channel].wasted_bits = 0;
 2538|      0|					}
 2539|       |
 2540|      0|					if(write_audio_frame_to_client_(decoder, &empty_frame, (const FLAC__int32 * const *)empty_buffer) != FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE) {
  ------------------
  |  Branch (2540:9): [True: 0, False: 0]
  ------------------
 2541|      0|						decoder->protected_->state = FLAC__STREAM_DECODER_ABORTED;
 2542|      0|						for(i = 0; i < empty_frame.header.channels; i++)
  ------------------
  |  Branch (2542:18): [True: 0, False: 0]
  ------------------
 2543|      0|							if(empty_buffer[i] != NULL)
  ------------------
  |  Branch (2543:11): [True: 0, False: 0]
  ------------------
 2544|      0|								free(empty_buffer[i]);
 2545|      0|						return false;
 2546|      0|					}
 2547|      0|				}
 2548|      0|				for(i = 0; i < empty_frame.header.channels; i++)
  ------------------
  |  Branch (2548:16): [True: 0, False: 0]
  ------------------
 2549|      0|					if(empty_buffer[i] != NULL)
  ------------------
  |  Branch (2549:9): [True: 0, False: 0]
  ------------------
 2550|      0|						free(empty_buffer[i]);
 2551|       |
 2552|      0|			}
 2553|      0|		}
 2554|   195k|	}
 2555|       |
 2556|   203k|	decoder->private_->error_has_been_sent = false;
 2557|       |
 2558|   203k|	if(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC || decoder->protected_->state == FLAC__STREAM_DECODER_END_OF_STREAM) {
  ------------------
  |  Branch (2558:5): [True: 0, False: 203k]
  |  Branch (2558:81): [True: 0, False: 203k]
  ------------------
 2559|      0|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 2560|      0|		decoder->private_->fuzzing_rewind_count++; /* To stop excessive rewinding, as it causes timeouts */
 2561|      0|#endif
 2562|       |		/* Got corruption, rewind if possible. Return value of seek
 2563|       |		* isn't checked, if the seek fails the decoder will continue anyway */
 2564|      0|		if(!FLAC__bitreader_rewind_to_after_last_seen_framesync(decoder->private_->input)){
  ------------------
  |  Branch (2564:6): [True: 0, False: 0]
  ------------------
 2565|       |#ifndef NDEBUG
 2566|       |			flac_fprintf(stderr, "Rewinding, seeking necessary\n");
 2567|       |#endif
 2568|      0|			if(decoder->private_->seek_callback && decoder->private_->last_seen_framesync){
  ------------------
  |  Branch (2568:7): [True: 0, False: 0]
  |  Branch (2568:43): [True: 0, False: 0]
  ------------------
 2569|       |				/* Last framesync isn't in bitreader anymore, rewind with seek if possible */
 2570|       |#ifndef NDEBUG
 2571|       |				FLAC__uint64 current_decode_position;
 2572|       |				if(FLAC__stream_decoder_get_decode_position(decoder, &current_decode_position))
 2573|       |					flac_fprintf(stderr, "Bitreader was %" PRIu64 " bytes short\n", current_decode_position-decoder->private_->last_seen_framesync);
 2574|       |#endif
 2575|      0|				if(decoder->private_->seek_callback(decoder, decoder->private_->last_seen_framesync, decoder->private_->client_data) == FLAC__STREAM_DECODER_SEEK_STATUS_ERROR) {
  ------------------
  |  Branch (2575:8): [True: 0, False: 0]
  ------------------
 2576|      0|					decoder->protected_->state = FLAC__STREAM_DECODER_SEEK_ERROR;
 2577|      0|					return false;
 2578|      0|				}
 2579|      0|				if(!FLAC__bitreader_clear(decoder->private_->input)) {
  ------------------
  |  Branch (2579:8): [True: 0, False: 0]
  ------------------
 2580|      0|					decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 2581|      0|					return false;
 2582|      0|				}
 2583|      0|			}
 2584|      0|		}
 2585|       |#ifndef NDEBUG
 2586|       |		else{
 2587|       |			flac_fprintf(stderr, "Rewinding, seeking not necessary\n");
 2588|       |		}
 2589|       |#endif
 2590|      0|	}
 2591|   203k|	else {
 2592|   203k|		*got_a_frame = true;
 2593|   203k|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 2594|   203k|		decoder->private_->fuzzing_rewind_count = 0;
 2595|   203k|#endif
 2596|       |
 2597|       |		/* we wait to update fixed_block_size until here, when we're sure we've got a proper frame and hence a correct blocksize */
 2598|   203k|		if(decoder->private_->next_fixed_block_size)
  ------------------
  |  Branch (2598:6): [True: 7.84k, False: 195k]
  ------------------
 2599|  7.84k|			decoder->private_->fixed_block_size = decoder->private_->next_fixed_block_size;
 2600|       |
 2601|       |		/* put the latest values into the public section of the decoder instance */
 2602|   203k|		decoder->protected_->channels = decoder->private_->frame.header.channels;
 2603|   203k|		decoder->protected_->channel_assignment = decoder->private_->frame.header.channel_assignment;
 2604|   203k|		decoder->protected_->bits_per_sample = decoder->private_->frame.header.bits_per_sample;
 2605|   203k|		decoder->protected_->sample_rate = decoder->private_->frame.header.sample_rate;
 2606|   203k|		decoder->protected_->blocksize = decoder->private_->frame.header.blocksize;
 2607|       |
 2608|   203k|		FLAC__ASSERT(decoder->private_->frame.header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
 2609|   203k|		decoder->private_->samples_decoded = decoder->private_->frame.header.number.sample_number + decoder->private_->frame.header.blocksize;
 2610|       |
 2611|       |		/* write it */
 2612|   203k|		if(do_full_decode) {
  ------------------
  |  Branch (2612:6): [True: 203k, False: 0]
  ------------------
 2613|   203k|			if(write_audio_frame_to_client_(decoder, &decoder->private_->frame, (const FLAC__int32 * const *)decoder->private_->output) != FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE) {
  ------------------
  |  Branch (2613:7): [True: 0, False: 203k]
  ------------------
 2614|      0|				decoder->protected_->state = FLAC__STREAM_DECODER_ABORTED;
 2615|      0|				return false;
 2616|      0|			}
 2617|   203k|		}
 2618|   203k|	}
 2619|       |
 2620|   203k|	decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2621|       |	return true;
 2622|   203k|}
stream_decoder.c:read_frame_header_:
 2625|   203k|{
 2626|   203k|	FLAC__uint32 x;
 2627|   203k|	FLAC__uint64 xx;
 2628|   203k|	uint32_t i, blocksize_hint = 0, sample_rate_hint = 0;
 2629|   203k|	FLAC__byte crc8, raw_header[16]; /* MAGIC NUMBER based on the maximum frame header size, including CRC */
 2630|   203k|	uint32_t raw_header_len;
 2631|   203k|	FLAC__bool is_unparseable = false;
 2632|       |
 2633|   203k|	FLAC__ASSERT(FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input));
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
 2634|       |
 2635|       |	/* init the raw header with the saved bits from synchronization */
 2636|   203k|	raw_header[0] = decoder->private_->header_warmup[0];
 2637|   203k|	raw_header[1] = decoder->private_->header_warmup[1];
 2638|   203k|	raw_header_len = 2;
 2639|       |
 2640|       |	/* check to make sure that reserved bit is 0 */
 2641|   203k|	if(raw_header[1] & 0x02) /* MAGIC NUMBER */
  ------------------
  |  Branch (2641:5): [True: 0, False: 203k]
  ------------------
 2642|      0|		is_unparseable = true;
 2643|       |
 2644|       |	/*
 2645|       |	 * Note that along the way as we read the header, we look for a sync
 2646|       |	 * code inside.  If we find one it would indicate that our original
 2647|       |	 * sync was bad since there cannot be a sync code in a valid header.
 2648|       |	 *
 2649|       |	 * Three kinds of things can go wrong when reading the frame header:
 2650|       |	 *  1) We may have sync'ed incorrectly and not landed on a frame header.
 2651|       |	 *     If we don't find a sync code, it can end up looking like we read
 2652|       |	 *     a valid but unparseable header, until getting to the frame header
 2653|       |	 *     CRC.  Even then we could get a false positive on the CRC.
 2654|       |	 *  2) We may have sync'ed correctly but on an unparseable frame (from a
 2655|       |	 *     future encoder).
 2656|       |	 *  3) We may be on a damaged frame which appears valid but unparseable.
 2657|       |	 *
 2658|       |	 * For all these reasons, we try and read a complete frame header as
 2659|       |	 * long as it seems valid, even if unparseable, up until the frame
 2660|       |	 * header CRC.
 2661|       |	 */
 2662|       |
 2663|       |	/*
 2664|       |	 * read in the raw header as bytes so we can CRC it, and parse it on the way
 2665|       |	 */
 2666|   611k|	for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (2666:13): [True: 407k, False: 203k]
  ------------------
 2667|   407k|		if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (2667:6): [True: 0, False: 407k]
  ------------------
 2668|      0|			return false; /* read_callback_ sets the state for us */
 2669|   407k|		if(x == 0xff) { /* MAGIC NUMBER for the first 8 frame sync bits */
  ------------------
  |  Branch (2669:6): [True: 0, False: 407k]
  ------------------
 2670|       |			/* if we get here it means our original sync was erroneous since the sync code cannot appear in the header */
 2671|      0|			decoder->private_->lookahead = (FLAC__byte)x;
 2672|      0|			decoder->private_->cached = true;
 2673|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER);
 2674|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2675|      0|			return true;
 2676|      0|		}
 2677|   407k|		raw_header[raw_header_len++] = (FLAC__byte)x;
 2678|   407k|	}
 2679|       |
 2680|   203k|	switch(x = raw_header[2] >> 4) {
 2681|      0|		case 0:
  ------------------
  |  Branch (2681:3): [True: 0, False: 203k]
  ------------------
 2682|      0|			is_unparseable = true;
 2683|      0|			break;
 2684|    195|		case 1:
  ------------------
  |  Branch (2684:3): [True: 195, False: 203k]
  ------------------
 2685|    195|			decoder->private_->frame.header.blocksize = 192;
 2686|    195|			break;
 2687|    195|		case 2:
  ------------------
  |  Branch (2687:3): [True: 195, False: 203k]
  ------------------
 2688|    334|		case 3:
  ------------------
  |  Branch (2688:3): [True: 139, False: 203k]
  ------------------
 2689|    402|		case 4:
  ------------------
  |  Branch (2689:3): [True: 68, False: 203k]
  ------------------
 2690|    452|		case 5:
  ------------------
  |  Branch (2690:3): [True: 50, False: 203k]
  ------------------
 2691|    452|			decoder->private_->frame.header.blocksize = 576 << (x-2);
 2692|    452|			break;
 2693|   200k|		case 6:
  ------------------
  |  Branch (2693:3): [True: 200k, False: 3.47k]
  ------------------
 2694|   202k|		case 7:
  ------------------
  |  Branch (2694:3): [True: 1.87k, False: 201k]
  ------------------
 2695|   202k|			blocksize_hint = x;
 2696|   202k|			break;
 2697|    228|		case 8:
  ------------------
  |  Branch (2697:3): [True: 228, False: 203k]
  ------------------
 2698|    476|		case 9:
  ------------------
  |  Branch (2698:3): [True: 248, False: 203k]
  ------------------
 2699|    608|		case 10:
  ------------------
  |  Branch (2699:3): [True: 132, False: 203k]
  ------------------
 2700|    707|		case 11:
  ------------------
  |  Branch (2700:3): [True: 99, False: 203k]
  ------------------
 2701|    875|		case 12:
  ------------------
  |  Branch (2701:3): [True: 168, False: 203k]
  ------------------
 2702|    902|		case 13:
  ------------------
  |  Branch (2702:3): [True: 27, False: 203k]
  ------------------
 2703|    931|		case 14:
  ------------------
  |  Branch (2703:3): [True: 29, False: 203k]
  ------------------
 2704|    953|		case 15:
  ------------------
  |  Branch (2704:3): [True: 22, False: 203k]
  ------------------
 2705|    953|			decoder->private_->frame.header.blocksize = 256 << (x-8);
 2706|    953|			break;
 2707|      0|		default:
  ------------------
  |  Branch (2707:3): [True: 0, False: 203k]
  ------------------
 2708|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2709|      0|			break;
 2710|   203k|	}
 2711|       |
 2712|   203k|	switch(x = raw_header[2] & 0x0f) {
 2713|  21.9k|		case 0:
  ------------------
  |  Branch (2713:3): [True: 21.9k, False: 181k]
  ------------------
 2714|  21.9k|			if(decoder->private_->has_stream_info)
  ------------------
  |  Branch (2714:7): [True: 21.9k, False: 0]
  ------------------
 2715|  21.9k|				decoder->private_->frame.header.sample_rate = decoder->private_->stream_info.data.stream_info.sample_rate;
 2716|      0|			else
 2717|      0|				is_unparseable = true;
 2718|  21.9k|			break;
 2719|    426|		case 1:
  ------------------
  |  Branch (2719:3): [True: 426, False: 203k]
  ------------------
 2720|    426|			decoder->private_->frame.header.sample_rate = 88200;
 2721|    426|			break;
 2722|    477|		case 2:
  ------------------
  |  Branch (2722:3): [True: 477, False: 203k]
  ------------------
 2723|    477|			decoder->private_->frame.header.sample_rate = 176400;
 2724|    477|			break;
 2725|  1.43k|		case 3:
  ------------------
  |  Branch (2725:3): [True: 1.43k, False: 202k]
  ------------------
 2726|  1.43k|			decoder->private_->frame.header.sample_rate = 192000;
 2727|  1.43k|			break;
 2728|  1.34k|		case 4:
  ------------------
  |  Branch (2728:3): [True: 1.34k, False: 202k]
  ------------------
 2729|  1.34k|			decoder->private_->frame.header.sample_rate = 8000;
 2730|  1.34k|			break;
 2731|    219|		case 5:
  ------------------
  |  Branch (2731:3): [True: 219, False: 203k]
  ------------------
 2732|    219|			decoder->private_->frame.header.sample_rate = 16000;
 2733|    219|			break;
 2734|  2.31k|		case 6:
  ------------------
  |  Branch (2734:3): [True: 2.31k, False: 201k]
  ------------------
 2735|  2.31k|			decoder->private_->frame.header.sample_rate = 22050;
 2736|  2.31k|			break;
 2737|    226|		case 7:
  ------------------
  |  Branch (2737:3): [True: 226, False: 203k]
  ------------------
 2738|    226|			decoder->private_->frame.header.sample_rate = 24000;
 2739|    226|			break;
 2740|    484|		case 8:
  ------------------
  |  Branch (2740:3): [True: 484, False: 203k]
  ------------------
 2741|    484|			decoder->private_->frame.header.sample_rate = 32000;
 2742|    484|			break;
 2743|  48.9k|		case 9:
  ------------------
  |  Branch (2743:3): [True: 48.9k, False: 154k]
  ------------------
 2744|  48.9k|			decoder->private_->frame.header.sample_rate = 44100;
 2745|  48.9k|			break;
 2746|    297|		case 10:
  ------------------
  |  Branch (2746:3): [True: 297, False: 203k]
  ------------------
 2747|    297|			decoder->private_->frame.header.sample_rate = 48000;
 2748|    297|			break;
 2749|  3.23k|		case 11:
  ------------------
  |  Branch (2749:3): [True: 3.23k, False: 200k]
  ------------------
 2750|  3.23k|			decoder->private_->frame.header.sample_rate = 96000;
 2751|  3.23k|			break;
 2752|  15.8k|		case 12:
  ------------------
  |  Branch (2752:3): [True: 15.8k, False: 187k]
  ------------------
 2753|  80.3k|		case 13:
  ------------------
  |  Branch (2753:3): [True: 64.4k, False: 139k]
  ------------------
 2754|   122k|		case 14:
  ------------------
  |  Branch (2754:3): [True: 41.9k, False: 161k]
  ------------------
 2755|   122k|			sample_rate_hint = x;
 2756|   122k|			break;
 2757|      0|		case 15:
  ------------------
  |  Branch (2757:3): [True: 0, False: 203k]
  ------------------
 2758|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER);
 2759|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2760|      0|			return true;
 2761|      0|		default:
  ------------------
  |  Branch (2761:3): [True: 0, False: 203k]
  ------------------
 2762|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2763|   203k|	}
 2764|       |
 2765|   203k|	x = (uint32_t)(raw_header[3] >> 4);
 2766|   203k|	if(x & 8) {
  ------------------
  |  Branch (2766:5): [True: 34.8k, False: 168k]
  ------------------
 2767|  34.8k|		decoder->private_->frame.header.channels = 2;
 2768|  34.8k|		switch(x & 7) {
 2769|  16.5k|			case 0:
  ------------------
  |  Branch (2769:4): [True: 16.5k, False: 18.2k]
  ------------------
 2770|  16.5k|				decoder->private_->frame.header.channel_assignment = FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE;
 2771|  16.5k|				break;
 2772|  7.14k|			case 1:
  ------------------
  |  Branch (2772:4): [True: 7.14k, False: 27.6k]
  ------------------
 2773|  7.14k|				decoder->private_->frame.header.channel_assignment = FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE;
 2774|  7.14k|				break;
 2775|  11.1k|			case 2:
  ------------------
  |  Branch (2775:4): [True: 11.1k, False: 23.7k]
  ------------------
 2776|  11.1k|				decoder->private_->frame.header.channel_assignment = FLAC__CHANNEL_ASSIGNMENT_MID_SIDE;
 2777|  11.1k|				break;
 2778|      0|			default:
  ------------------
  |  Branch (2778:4): [True: 0, False: 34.8k]
  ------------------
 2779|      0|				is_unparseable = true;
 2780|      0|				break;
 2781|  34.8k|		}
 2782|  34.8k|	}
 2783|   168k|	else {
 2784|   168k|		decoder->private_->frame.header.channels = (uint32_t)x + 1;
 2785|   168k|		decoder->private_->frame.header.channel_assignment = FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT;
 2786|   168k|	}
 2787|       |
 2788|   203k|	switch(x = (uint32_t)(raw_header[3] & 0x0e) >> 1) {
 2789|  4.64k|		case 0:
  ------------------
  |  Branch (2789:3): [True: 4.64k, False: 199k]
  ------------------
 2790|  4.64k|			if(decoder->private_->has_stream_info)
  ------------------
  |  Branch (2790:7): [True: 4.64k, False: 0]
  ------------------
 2791|  4.64k|				decoder->private_->frame.header.bits_per_sample = decoder->private_->stream_info.data.stream_info.bits_per_sample;
 2792|      0|			else
 2793|      0|				is_unparseable = true;
 2794|  4.64k|			break;
 2795|  3.12k|		case 1:
  ------------------
  |  Branch (2795:3): [True: 3.12k, False: 200k]
  ------------------
 2796|  3.12k|			decoder->private_->frame.header.bits_per_sample = 8;
 2797|  3.12k|			break;
 2798|    254|		case 2:
  ------------------
  |  Branch (2798:3): [True: 254, False: 203k]
  ------------------
 2799|    254|			decoder->private_->frame.header.bits_per_sample = 12;
 2800|    254|			break;
 2801|      0|		case 3:
  ------------------
  |  Branch (2801:3): [True: 0, False: 203k]
  ------------------
 2802|      0|			is_unparseable = true;
 2803|      0|			break;
 2804|  6.84k|		case 4:
  ------------------
  |  Branch (2804:3): [True: 6.84k, False: 196k]
  ------------------
 2805|  6.84k|			decoder->private_->frame.header.bits_per_sample = 16;
 2806|  6.84k|			break;
 2807|    469|		case 5:
  ------------------
  |  Branch (2807:3): [True: 469, False: 203k]
  ------------------
 2808|    469|			decoder->private_->frame.header.bits_per_sample = 20;
 2809|    469|			break;
 2810|  11.3k|		case 6:
  ------------------
  |  Branch (2810:3): [True: 11.3k, False: 192k]
  ------------------
 2811|  11.3k|			decoder->private_->frame.header.bits_per_sample = 24;
 2812|  11.3k|			break;
 2813|   176k|		case 7:
  ------------------
  |  Branch (2813:3): [True: 176k, False: 26.7k]
  ------------------
 2814|   176k|			decoder->private_->frame.header.bits_per_sample = 32;
 2815|   176k|			break;
 2816|      0|		default:
  ------------------
  |  Branch (2816:3): [True: 0, False: 203k]
  ------------------
 2817|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2818|      0|			break;
 2819|   203k|	}
 2820|       |
 2821|       |#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 2822|       |	/* check to make sure that reserved bit is 0 */
 2823|       |	if(raw_header[3] & 0x01) /* MAGIC NUMBER */
 2824|       |		is_unparseable = true;
 2825|       |#endif
 2826|       |
 2827|       |	/* read the frame's starting sample number (or frame number as the case may be) */
 2828|   203k|	if(
 2829|   203k|		raw_header[1] & 0x01 ||
  ------------------
  |  Branch (2829:3): [True: 0, False: 203k]
  ------------------
 2830|       |		/*@@@ this clause is a concession to the old way of doing variable blocksize; the only known implementation is flake and can probably be removed without inconveniencing anyone */
 2831|   203k|		(decoder->private_->has_stream_info && decoder->private_->stream_info.data.stream_info.min_blocksize != decoder->private_->stream_info.data.stream_info.max_blocksize)
  ------------------
  |  Branch (2831:4): [True: 203k, False: 0]
  |  Branch (2831:42): [True: 0, False: 203k]
  ------------------
 2832|   203k|	) { /* variable blocksize */
 2833|      0|		if(!FLAC__bitreader_read_utf8_uint64(decoder->private_->input, &xx, raw_header, &raw_header_len))
  ------------------
  |  Branch (2833:6): [True: 0, False: 0]
  ------------------
 2834|      0|			return false; /* read_callback_ sets the state for us */
 2835|      0|		if(xx == FLAC__U64L(0xffffffffffffffff)) { /* i.e. non-UTF8 code... */
  ------------------
  |  |  102|      0|#define FLAC__U64L(x) x##ULL
  ------------------
  |  Branch (2835:6): [True: 0, False: 0]
  ------------------
 2836|      0|			decoder->private_->lookahead = raw_header[raw_header_len-1]; /* back up as much as we can */
 2837|      0|			decoder->private_->cached = true;
 2838|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER);
 2839|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2840|      0|			return true;
 2841|      0|		}
 2842|      0|		decoder->private_->frame.header.number_type = FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER;
 2843|      0|		decoder->private_->frame.header.number.sample_number = xx;
 2844|      0|	}
 2845|   203k|	else { /* fixed blocksize */
 2846|   203k|		if(!FLAC__bitreader_read_utf8_uint32(decoder->private_->input, &x, raw_header, &raw_header_len))
  ------------------
  |  Branch (2846:6): [True: 0, False: 203k]
  ------------------
 2847|      0|			return false; /* read_callback_ sets the state for us */
 2848|   203k|		if(x == 0xffffffff) { /* i.e. non-UTF8 code... */
  ------------------
  |  Branch (2848:6): [True: 0, False: 203k]
  ------------------
 2849|      0|			decoder->private_->lookahead = raw_header[raw_header_len-1]; /* back up as much as we can */
 2850|      0|			decoder->private_->cached = true;
 2851|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER);
 2852|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2853|      0|			return true;
 2854|      0|		}
 2855|   203k|		decoder->private_->frame.header.number_type = FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER;
 2856|   203k|		decoder->private_->frame.header.number.frame_number = x;
 2857|   203k|	}
 2858|       |
 2859|   203k|	if(blocksize_hint) {
  ------------------
  |  Branch (2859:5): [True: 202k, False: 1.60k]
  ------------------
 2860|   202k|		if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (2860:6): [True: 0, False: 202k]
  ------------------
 2861|      0|			return false; /* read_callback_ sets the state for us */
 2862|   202k|		raw_header[raw_header_len++] = (FLAC__byte)x;
 2863|   202k|		if(blocksize_hint == 7) {
  ------------------
  |  Branch (2863:6): [True: 1.87k, False: 200k]
  ------------------
 2864|  1.87k|			FLAC__uint32 _x;
 2865|  1.87k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &_x, 8))
  ------------------
  |  Branch (2865:7): [True: 0, False: 1.87k]
  ------------------
 2866|      0|				return false; /* read_callback_ sets the state for us */
 2867|  1.87k|			raw_header[raw_header_len++] = (FLAC__byte)_x;
 2868|  1.87k|			x = (x << 8) | _x;
 2869|  1.87k|		}
 2870|   202k|		decoder->private_->frame.header.blocksize = x+1;
 2871|   202k|		if(decoder->private_->frame.header.blocksize > 65535) { /* invalid blocksize (65536) specified */
  ------------------
  |  Branch (2871:6): [True: 0, False: 202k]
  ------------------
 2872|      0|			decoder->private_->lookahead = raw_header[raw_header_len-1]; /* back up as much as we can */
 2873|      0|			decoder->private_->cached = true;
 2874|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER);
 2875|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2876|      0|			return true;
 2877|      0|		}
 2878|       |
 2879|   202k|	}
 2880|       |
 2881|   203k|	if(sample_rate_hint) {
  ------------------
  |  Branch (2881:5): [True: 122k, False: 81.4k]
  ------------------
 2882|   122k|		if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (2882:6): [True: 0, False: 122k]
  ------------------
 2883|      0|			return false; /* read_callback_ sets the state for us */
 2884|   122k|		raw_header[raw_header_len++] = (FLAC__byte)x;
 2885|   122k|		if(sample_rate_hint != 12) {
  ------------------
  |  Branch (2885:6): [True: 106k, False: 15.8k]
  ------------------
 2886|   106k|			FLAC__uint32 _x;
 2887|   106k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &_x, 8))
  ------------------
  |  Branch (2887:7): [True: 0, False: 106k]
  ------------------
 2888|      0|				return false; /* read_callback_ sets the state for us */
 2889|   106k|			raw_header[raw_header_len++] = (FLAC__byte)_x;
 2890|   106k|			x = (x << 8) | _x;
 2891|   106k|		}
 2892|   122k|		if(sample_rate_hint == 12)
  ------------------
  |  Branch (2892:6): [True: 15.8k, False: 106k]
  ------------------
 2893|  15.8k|			decoder->private_->frame.header.sample_rate = x*1000;
 2894|   106k|		else if(sample_rate_hint == 13)
  ------------------
  |  Branch (2894:11): [True: 64.4k, False: 41.9k]
  ------------------
 2895|  64.4k|			decoder->private_->frame.header.sample_rate = x;
 2896|  41.9k|		else
 2897|  41.9k|			decoder->private_->frame.header.sample_rate = x*10;
 2898|   122k|	}
 2899|       |
 2900|       |	/* read the CRC-8 byte */
 2901|   203k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8))
  ------------------
  |  Branch (2901:5): [True: 0, False: 203k]
  ------------------
 2902|      0|		return false; /* read_callback_ sets the state for us */
 2903|   203k|	crc8 = (FLAC__byte)x;
 2904|       |
 2905|       |#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 2906|       |	if(FLAC__crc8(raw_header, raw_header_len) != crc8) {
 2907|       |#else
 2908|   203k|	if(decoder->private_->fuzzing_rewind_count > 8 && (FLAC__crc8(raw_header, raw_header_len) << 4) != (crc8 << 4)) {
  ------------------
  |  Branch (2908:5): [True: 0, False: 203k]
  |  Branch (2908:52): [True: 0, False: 0]
  ------------------
 2909|      0|#endif
 2910|      0|		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER);
 2911|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2912|      0|		return true;
 2913|      0|	}
 2914|       |
 2915|       |	/* calculate the sample number from the frame number if needed */
 2916|   203k|	decoder->private_->next_fixed_block_size = 0;
 2917|   203k|	if(decoder->private_->frame.header.number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER) {
  ------------------
  |  Branch (2917:5): [True: 203k, False: 0]
  ------------------
 2918|   203k|		x = decoder->private_->frame.header.number.frame_number;
 2919|   203k|		decoder->private_->frame.header.number_type = FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER;
 2920|   203k|		if(decoder->private_->fixed_block_size)
  ------------------
  |  Branch (2920:6): [True: 195k, False: 7.84k]
  ------------------
 2921|   195k|			decoder->private_->frame.header.number.sample_number = (FLAC__uint64)decoder->private_->fixed_block_size * (FLAC__uint64)x;
 2922|  7.84k|		else if(decoder->private_->has_stream_info) {
  ------------------
  |  Branch (2922:11): [True: 7.84k, False: 0]
  ------------------
 2923|  7.84k|			if(decoder->private_->stream_info.data.stream_info.min_blocksize == decoder->private_->stream_info.data.stream_info.max_blocksize) {
  ------------------
  |  Branch (2923:7): [True: 7.84k, False: 0]
  ------------------
 2924|  7.84k|				decoder->private_->frame.header.number.sample_number = (FLAC__uint64)decoder->private_->stream_info.data.stream_info.min_blocksize * (FLAC__uint64)x;
 2925|  7.84k|				decoder->private_->next_fixed_block_size = decoder->private_->stream_info.data.stream_info.max_blocksize;
 2926|  7.84k|			}
 2927|      0|			else
 2928|      0|				is_unparseable = true;
 2929|  7.84k|		}
 2930|      0|		else if(x == 0) {
  ------------------
  |  Branch (2930:11): [True: 0, False: 0]
  ------------------
 2931|      0|			decoder->private_->frame.header.number.sample_number = 0;
 2932|      0|			decoder->private_->next_fixed_block_size = decoder->private_->frame.header.blocksize;
 2933|      0|		}
 2934|      0|		else {
 2935|       |			/* can only get here if the stream has invalid frame numbering and no STREAMINFO, so assume it's not the last (possibly short) frame */
 2936|      0|			decoder->private_->frame.header.number.sample_number = (FLAC__uint64)decoder->private_->frame.header.blocksize * (FLAC__uint64)x;
 2937|      0|		}
 2938|   203k|	}
 2939|       |
 2940|   203k|	if(is_unparseable) {
  ------------------
  |  Branch (2940:5): [True: 0, False: 203k]
  ------------------
 2941|      0|		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM);
 2942|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2943|      0|		return true;
 2944|      0|	}
 2945|       |
 2946|   203k|	return true;
 2947|   203k|}
stream_decoder.c:allocate_output_:
 1574|   203k|{
 1575|   203k|	uint32_t i;
 1576|   203k|	FLAC__int32 *tmp;
 1577|       |
 1578|   203k|	if(size <= decoder->private_->output_capacity && channels <= decoder->private_->output_channels &&
  ------------------
  |  Branch (1578:5): [True: 195k, False: 7.84k]
  |  Branch (1578:51): [True: 195k, False: 0]
  ------------------
 1579|   195k|	   (bps < 32 || decoder->private_->side_subframe != 0))
  ------------------
  |  Branch (1579:6): [True: 23.9k, False: 171k]
  |  Branch (1579:18): [True: 171k, False: 0]
  ------------------
 1580|   195k|		return true;
 1581|       |
 1582|       |	/* simply using realloc() is not practical because the number of channels may change mid-stream */
 1583|       |
 1584|  70.6k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|  70.6k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (1584:13): [True: 62.7k, False: 7.84k]
  ------------------
 1585|  62.7k|		if(0 != decoder->private_->output[i]) {
  ------------------
  |  Branch (1585:6): [True: 0, False: 62.7k]
  ------------------
 1586|      0|			free(decoder->private_->output[i]-4);
 1587|      0|			decoder->private_->output[i] = 0;
 1588|      0|		}
 1589|  62.7k|		if(0 != decoder->private_->residual_unaligned[i]) {
  ------------------
  |  Branch (1589:6): [True: 0, False: 62.7k]
  ------------------
 1590|      0|			free(decoder->private_->residual_unaligned[i]);
 1591|      0|			decoder->private_->residual_unaligned[i] = decoder->private_->residual[i] = 0;
 1592|      0|		}
 1593|  62.7k|	}
 1594|       |
 1595|  7.84k|	if(0 != decoder->private_->side_subframe) {
  ------------------
  |  Branch (1595:5): [True: 0, False: 7.84k]
  ------------------
 1596|      0|		free(decoder->private_->side_subframe);
 1597|      0|		decoder->private_->side_subframe = 0;
 1598|      0|	}
 1599|       |
 1600|       |	/* Only grow per-channel buffers, even if number of channels increases */
 1601|  7.84k|	if(decoder->private_->output_capacity > size) {
  ------------------
  |  Branch (1601:5): [True: 0, False: 7.84k]
  ------------------
 1602|      0|		size = decoder->private_->output_capacity;
 1603|      0|	}
 1604|       |
 1605|  21.4k|	for(i = 0; i < channels; i++) {
  ------------------
  |  Branch (1605:13): [True: 13.6k, False: 7.84k]
  ------------------
 1606|       |		/* WATCHOUT:
 1607|       |		 * FLAC__lpc_restore_signal_asm_ia32_mmx() and ..._intrin_sseN()
 1608|       |		 * require that the output arrays have a buffer of up to 3 zeroes
 1609|       |		 * in front (at negative indices) for alignment purposes;
 1610|       |		 * we use 4 to keep the data well-aligned.
 1611|       |		 */
 1612|  13.6k|		tmp = safe_malloc_muladd2_(sizeof(FLAC__int32), /*times (*/size, /*+*/4/*)*/);
 1613|  13.6k|		if(tmp == 0) {
  ------------------
  |  Branch (1613:6): [True: 0, False: 13.6k]
  ------------------
 1614|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 1615|      0|			return false;
 1616|      0|		}
 1617|  13.6k|		memset(tmp, 0, sizeof(FLAC__int32)*4);
 1618|  13.6k|		decoder->private_->output[i] = tmp + 4;
 1619|       |
 1620|  13.6k|		if(!FLAC__memory_alloc_aligned_int32_array(size, &decoder->private_->residual_unaligned[i], &decoder->private_->residual[i])) {
  ------------------
  |  Branch (1620:6): [True: 0, False: 13.6k]
  ------------------
 1621|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 1622|      0|			return false;
 1623|      0|		}
 1624|  13.6k|	}
 1625|       |
 1626|  7.84k|	if(bps == 32) {
  ------------------
  |  Branch (1626:5): [True: 5.12k, False: 2.72k]
  ------------------
 1627|  5.12k|		decoder->private_->side_subframe = safe_malloc_mul_2op_p(sizeof(FLAC__int64), /*times (*/size);
 1628|  5.12k|		if(decoder->private_->side_subframe == NULL) {
  ------------------
  |  Branch (1628:6): [True: 0, False: 5.12k]
  ------------------
 1629|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 1630|      0|			return false;
 1631|      0|		}
 1632|  5.12k|	}
 1633|       |
 1634|  7.84k|	decoder->private_->output_capacity = size;
 1635|  7.84k|	decoder->private_->output_channels = channels;
 1636|       |
 1637|       |	return true;
 1638|  7.84k|}
stream_decoder.c:read_subframe_:
 2950|   271k|{
 2951|   271k|	FLAC__uint32 x;
 2952|   271k|	FLAC__bool wasted_bits;
 2953|   271k|	uint32_t i;
 2954|       |
 2955|   271k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &x, 8)) /* MAGIC NUMBER */
  ------------------
  |  Branch (2955:5): [True: 0, False: 271k]
  ------------------
 2956|      0|		return false; /* read_callback_ sets the state for us */
 2957|       |
 2958|   271k|	wasted_bits = (x & 1);
 2959|   271k|	x &= 0xfe;
 2960|       |
 2961|   271k|	if(wasted_bits) {
  ------------------
  |  Branch (2961:5): [True: 30.4k, False: 241k]
  ------------------
 2962|  30.4k|		uint32_t u;
 2963|  30.4k|		if(!FLAC__bitreader_read_unary_unsigned(decoder->private_->input, &u))
  ------------------
  |  Branch (2963:6): [True: 0, False: 30.4k]
  ------------------
 2964|      0|			return false; /* read_callback_ sets the state for us */
 2965|  30.4k|		decoder->private_->frame.subframes[channel].wasted_bits = u+1;
 2966|  30.4k|		if (decoder->private_->frame.subframes[channel].wasted_bits >= bps) {
  ------------------
  |  Branch (2966:7): [True: 0, False: 30.4k]
  ------------------
 2967|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 2968|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2969|      0|			return true;
 2970|      0|		}
 2971|  30.4k|		bps -= decoder->private_->frame.subframes[channel].wasted_bits;
 2972|  30.4k|	}
 2973|   241k|	else
 2974|   241k|		decoder->private_->frame.subframes[channel].wasted_bits = 0;
 2975|       |
 2976|       |	/*
 2977|       |	 * Lots of magic numbers here
 2978|       |	 */
 2979|   271k|	if(x & 0x80) {
  ------------------
  |  Branch (2979:5): [True: 0, False: 271k]
  ------------------
 2980|      0|		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 2981|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2982|      0|		return true;
 2983|      0|	}
 2984|   271k|	else if(x == 0) {
  ------------------
  |  Branch (2984:10): [True: 98.8k, False: 172k]
  ------------------
 2985|  98.8k|		if(!read_subframe_constant_(decoder, channel, bps, do_full_decode))
  ------------------
  |  Branch (2985:6): [True: 0, False: 98.8k]
  ------------------
 2986|      0|			return false;
 2987|  98.8k|	}
 2988|   172k|	else if(x == 2) {
  ------------------
  |  Branch (2988:10): [True: 37.7k, False: 134k]
  ------------------
 2989|  37.7k|		if(!read_subframe_verbatim_(decoder, channel, bps, do_full_decode))
  ------------------
  |  Branch (2989:6): [True: 0, False: 37.7k]
  ------------------
 2990|      0|			return false;
 2991|  37.7k|	}
 2992|   134k|	else if(x < 16) {
  ------------------
  |  Branch (2992:10): [True: 0, False: 134k]
  ------------------
 2993|      0|		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM);
 2994|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 2995|      0|		return true;
 2996|      0|	}
 2997|   134k|	else if(x <= 24) {
  ------------------
  |  Branch (2997:10): [True: 116k, False: 18.5k]
  ------------------
 2998|   116k|		uint32_t predictor_order = (x>>1)&7;
 2999|   116k|		if(decoder->private_->frame.header.blocksize <= predictor_order){
  ------------------
  |  Branch (2999:6): [True: 0, False: 116k]
  ------------------
 3000|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3001|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3002|      0|			return true;
 3003|      0|		}
 3004|   116k|		if(!read_subframe_fixed_(decoder, channel, bps, predictor_order, do_full_decode))
  ------------------
  |  Branch (3004:6): [True: 0, False: 116k]
  ------------------
 3005|      0|			return false;
 3006|   116k|		if(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC) /* means bad sync or got corruption */
  ------------------
  |  Branch (3006:6): [True: 0, False: 116k]
  ------------------
 3007|      0|			return true;
 3008|   116k|	}
 3009|  18.5k|	else if(x < 64) {
  ------------------
  |  Branch (3009:10): [True: 0, False: 18.5k]
  ------------------
 3010|      0|		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM);
 3011|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3012|      0|		return true;
 3013|      0|	}
 3014|  18.5k|	else {
 3015|  18.5k|		uint32_t predictor_order = ((x>>1)&31)+1;
 3016|  18.5k|		if(decoder->private_->frame.header.blocksize <= predictor_order){
  ------------------
  |  Branch (3016:6): [True: 0, False: 18.5k]
  ------------------
 3017|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3018|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3019|      0|			return true;
 3020|      0|		}
 3021|  18.5k|		if(!read_subframe_lpc_(decoder, channel, bps, predictor_order, do_full_decode))
  ------------------
  |  Branch (3021:6): [True: 0, False: 18.5k]
  ------------------
 3022|      0|			return false;
 3023|  18.5k|		if(decoder->protected_->state == FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC) /* means bad sync or got corruption */
  ------------------
  |  Branch (3023:6): [True: 0, False: 18.5k]
  ------------------
 3024|      0|			return true;
 3025|  18.5k|	}
 3026|       |
 3027|   271k|	if(wasted_bits && do_full_decode) {
  ------------------
  |  Branch (3027:5): [True: 30.4k, False: 241k]
  |  Branch (3027:20): [True: 30.4k, False: 0]
  ------------------
 3028|  30.4k|		x = decoder->private_->frame.subframes[channel].wasted_bits;
 3029|  30.4k|		if((bps + x) < 33) {
  ------------------
  |  Branch (3029:6): [True: 16.6k, False: 13.8k]
  ------------------
 3030|   361k|			for(i = 0; i < decoder->private_->frame.header.blocksize; i++) {
  ------------------
  |  Branch (3030:15): [True: 345k, False: 16.6k]
  ------------------
 3031|   345k|				uint32_t val = decoder->private_->output[channel][i];
 3032|   345k|				decoder->private_->output[channel][i] = (val << x);
 3033|   345k|			}
 3034|  16.6k|		}
 3035|  13.8k|		else {
 3036|       |			/* When there are wasted bits, bps is never 33 and so
 3037|       |			 * side_subframe is never already in use */
 3038|  13.8k|			FLAC__ASSERT(!decoder->private_->side_subframe_in_use);
  ------------------
  |  |   38|  13.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 13.8k]
  |  |  ------------------
  ------------------
 3039|  13.8k|			decoder->private_->side_subframe_in_use = true;
 3040|   370k|			for(i = 0; i < decoder->private_->frame.header.blocksize; i++) {
  ------------------
  |  Branch (3040:15): [True: 356k, False: 13.8k]
  ------------------
 3041|   356k|				uint64_t val = decoder->private_->output[channel][i];
 3042|   356k|				decoder->private_->side_subframe[i] = (val << x);
 3043|   356k|			}
 3044|  13.8k|		}
 3045|  30.4k|	}
 3046|       |
 3047|   271k|	return true;
 3048|   271k|}
stream_decoder.c:read_subframe_constant_:
 3051|  98.8k|{
 3052|  98.8k|	FLAC__Subframe_Constant *subframe = &decoder->private_->frame.subframes[channel].data.constant;
 3053|  98.8k|	FLAC__int64 x;
 3054|  98.8k|	uint32_t i;
 3055|       |
 3056|  98.8k|	decoder->private_->frame.subframes[channel].type = FLAC__SUBFRAME_TYPE_CONSTANT;
 3057|       |
 3058|  98.8k|	if(!FLAC__bitreader_read_raw_int64(decoder->private_->input, &x, bps))
  ------------------
  |  Branch (3058:5): [True: 0, False: 98.8k]
  ------------------
 3059|      0|		return false; /* read_callback_ sets the state for us */
 3060|       |
 3061|  98.8k|	subframe->value = x;
 3062|       |
 3063|       |	/* decode the subframe */
 3064|  98.8k|	if(do_full_decode) {
  ------------------
  |  Branch (3064:5): [True: 98.8k, False: 0]
  ------------------
 3065|  98.8k|		if(bps <= 32) {
  ------------------
  |  Branch (3065:6): [True: 97.9k, False: 860]
  ------------------
 3066|  97.9k|			FLAC__int32 *output = decoder->private_->output[channel];
 3067|  1.83M|			for(i = 0; i < decoder->private_->frame.header.blocksize; i++)
  ------------------
  |  Branch (3067:15): [True: 1.73M, False: 97.9k]
  ------------------
 3068|  1.73M|				output[i] = x;
 3069|  97.9k|		} else {
 3070|    860|			FLAC__int64 *output = decoder->private_->side_subframe;
 3071|    860|			decoder->private_->side_subframe_in_use = true;
 3072|  15.5k|			for(i = 0; i < decoder->private_->frame.header.blocksize; i++)
  ------------------
  |  Branch (3072:15): [True: 14.6k, False: 860]
  ------------------
 3073|  14.6k|				output[i] = x;
 3074|    860|		}
 3075|  98.8k|	}
 3076|       |
 3077|       |	return true;
 3078|  98.8k|}
stream_decoder.c:read_subframe_verbatim_:
 3260|  37.7k|{
 3261|  37.7k|	FLAC__Subframe_Verbatim *subframe = &decoder->private_->frame.subframes[channel].data.verbatim;
 3262|  37.7k|	uint32_t i;
 3263|       |
 3264|  37.7k|	decoder->private_->frame.subframes[channel].type = FLAC__SUBFRAME_TYPE_VERBATIM;
 3265|       |
 3266|  37.7k|	if(bps < 33) {
  ------------------
  |  Branch (3266:5): [True: 37.1k, False: 584]
  ------------------
 3267|  37.1k|		FLAC__int32 x, *residual = decoder->private_->residual[channel];
 3268|       |
 3269|  37.1k|		subframe->data_type = FLAC__VERBATIM_SUBFRAME_DATA_TYPE_INT32;
 3270|  37.1k|		subframe->data.int32 = residual;
 3271|       |
 3272|  2.89M|		for(i = 0; i < decoder->private_->frame.header.blocksize; i++) {
  ------------------
  |  Branch (3272:14): [True: 2.85M, False: 37.1k]
  ------------------
 3273|  2.85M|			if(!FLAC__bitreader_read_raw_int32(decoder->private_->input, &x, bps))
  ------------------
  |  Branch (3273:7): [True: 0, False: 2.85M]
  ------------------
 3274|      0|				return false; /* read_callback_ sets the state for us */
 3275|  2.85M|			residual[i] = x;
 3276|  2.85M|		}
 3277|       |
 3278|       |		/* decode the subframe */
 3279|  37.1k|		if(do_full_decode)
  ------------------
  |  Branch (3279:6): [True: 37.1k, False: 0]
  ------------------
 3280|  37.1k|			memcpy(decoder->private_->output[channel], subframe->data.int32, sizeof(FLAC__int32) * decoder->private_->frame.header.blocksize);
 3281|  37.1k|	}
 3282|    584|	else {
 3283|    584|		FLAC__int64 x, *side = decoder->private_->side_subframe;
 3284|       |
 3285|    584|		subframe->data_type = FLAC__VERBATIM_SUBFRAME_DATA_TYPE_INT64;
 3286|    584|		subframe->data.int64 = side;
 3287|    584|		decoder->private_->side_subframe_in_use = true;
 3288|       |
 3289|  1.46M|		for(i = 0; i < decoder->private_->frame.header.blocksize; i++) {
  ------------------
  |  Branch (3289:14): [True: 1.46M, False: 584]
  ------------------
 3290|  1.46M|			if(!FLAC__bitreader_read_raw_int64(decoder->private_->input, &x, bps))
  ------------------
  |  Branch (3290:7): [True: 0, False: 1.46M]
  ------------------
 3291|      0|				return false; /* read_callback_ sets the state for us */
 3292|  1.46M|			side[i] = x;
 3293|  1.46M|		}
 3294|    584|	}
 3295|       |
 3296|  37.7k|	return true;
 3297|  37.7k|}
stream_decoder.c:read_subframe_fixed_:
 3081|   116k|{
 3082|   116k|	FLAC__Subframe_Fixed *subframe = &decoder->private_->frame.subframes[channel].data.fixed;
 3083|   116k|	FLAC__int64 i64;
 3084|   116k|	FLAC__uint32 u32;
 3085|   116k|	uint32_t u;
 3086|       |
 3087|   116k|	decoder->private_->frame.subframes[channel].type = FLAC__SUBFRAME_TYPE_FIXED;
 3088|       |
 3089|   116k|	subframe->residual = decoder->private_->residual[channel];
 3090|   116k|	subframe->order = order;
 3091|       |
 3092|       |	/* read warm-up samples */
 3093|   194k|	for(u = 0; u < order; u++) {
  ------------------
  |  Branch (3093:13): [True: 78.0k, False: 116k]
  ------------------
 3094|  78.0k|		if(!FLAC__bitreader_read_raw_int64(decoder->private_->input, &i64, bps))
  ------------------
  |  Branch (3094:6): [True: 0, False: 78.0k]
  ------------------
 3095|      0|			return false; /* read_callback_ sets the state for us */
 3096|  78.0k|		subframe->warmup[u] = i64;
 3097|  78.0k|	}
 3098|       |
 3099|       |	/* read entropy coding method info */
 3100|   116k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &u32, FLAC__ENTROPY_CODING_METHOD_TYPE_LEN))
  ------------------
  |  Branch (3100:5): [True: 0, False: 116k]
  ------------------
 3101|      0|		return false; /* read_callback_ sets the state for us */
 3102|   116k|	subframe->entropy_coding_method.type = (FLAC__EntropyCodingMethodType)u32;
 3103|   116k|	switch(subframe->entropy_coding_method.type) {
 3104|  41.0k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE:
  ------------------
  |  Branch (3104:3): [True: 41.0k, False: 75.3k]
  ------------------
 3105|   116k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2:
  ------------------
  |  Branch (3105:3): [True: 75.3k, False: 41.0k]
  ------------------
 3106|   116k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &u32, FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN))
  ------------------
  |  Branch (3106:7): [True: 0, False: 116k]
  ------------------
 3107|      0|				return false; /* read_callback_ sets the state for us */
 3108|   116k|			if((decoder->private_->frame.header.blocksize >> u32 < order) ||
  ------------------
  |  Branch (3108:7): [True: 0, False: 116k]
  ------------------
 3109|   116k|			   (decoder->private_->frame.header.blocksize % (1 << u32) > 0)) {
  ------------------
  |  Branch (3109:7): [True: 0, False: 116k]
  ------------------
 3110|      0|				send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3111|      0|				decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3112|      0|				return true;
 3113|      0|			}
 3114|   116k|			subframe->entropy_coding_method.data.partitioned_rice.order = u32;
 3115|   116k|			subframe->entropy_coding_method.data.partitioned_rice.contents = &decoder->private_->partitioned_rice_contents[channel];
 3116|   116k|			break;
 3117|      0|		default:
  ------------------
  |  Branch (3117:3): [True: 0, False: 116k]
  ------------------
 3118|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM);
 3119|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3120|      0|			return true;
 3121|   116k|	}
 3122|       |
 3123|       |	/* read residual */
 3124|   116k|	switch(subframe->entropy_coding_method.type) {
 3125|  41.0k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE:
  ------------------
  |  Branch (3125:3): [True: 41.0k, False: 75.3k]
  ------------------
 3126|   116k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2:
  ------------------
  |  Branch (3126:3): [True: 75.3k, False: 41.0k]
  ------------------
 3127|   116k|			if(!read_residual_partitioned_rice_(decoder, order, subframe->entropy_coding_method.data.partitioned_rice.order, &decoder->private_->partitioned_rice_contents[channel], decoder->private_->residual[channel], /*is_extended=*/subframe->entropy_coding_method.type == FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2))
  ------------------
  |  Branch (3127:7): [True: 0, False: 116k]
  ------------------
 3128|      0|				return false;
 3129|   116k|			break;
 3130|   116k|		default:
  ------------------
  |  Branch (3130:3): [True: 0, False: 116k]
  ------------------
 3131|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 3132|   116k|	}
 3133|       |
 3134|       |	/* decode the subframe */
 3135|   116k|	if(do_full_decode) {
  ------------------
  |  Branch (3135:5): [True: 116k, False: 0]
  ------------------
 3136|   116k|		if(bps < 33){
  ------------------
  |  Branch (3136:6): [True: 110k, False: 5.38k]
  ------------------
 3137|   110k|			uint32_t i;
 3138|   185k|			for(i = 0; i < order; i++)
  ------------------
  |  Branch (3138:15): [True: 74.7k, False: 110k]
  ------------------
 3139|  74.7k|				decoder->private_->output[channel][i] = subframe->warmup[i];
 3140|   110k|			if(bps+order <= 32)
  ------------------
  |  Branch (3140:7): [True: 74.1k, False: 36.8k]
  ------------------
 3141|  74.1k|				FLAC__fixed_restore_signal(decoder->private_->residual[channel], decoder->private_->frame.header.blocksize-order, order, decoder->private_->output[channel]+order);
 3142|  36.8k|			else
 3143|  36.8k|				FLAC__fixed_restore_signal_wide(decoder->private_->residual[channel], decoder->private_->frame.header.blocksize-order, order, decoder->private_->output[channel]+order);
 3144|   110k|		}
 3145|  5.38k|		else {
 3146|  5.38k|			decoder->private_->side_subframe_in_use = true;
 3147|  5.38k|			memcpy(decoder->private_->side_subframe, subframe->warmup, sizeof(FLAC__int64) * order);
 3148|  5.38k|			FLAC__fixed_restore_signal_wide_33bit(decoder->private_->residual[channel], decoder->private_->frame.header.blocksize-order, order, decoder->private_->side_subframe+order);
 3149|  5.38k|		}
 3150|   116k|	}
 3151|       |
 3152|       |	return true;
 3153|   116k|}
stream_decoder.c:read_residual_partitioned_rice_:
 3300|   134k|{
 3301|   134k|	FLAC__uint32 rice_parameter;
 3302|   134k|	int i;
 3303|   134k|	uint32_t partition, sample, u;
 3304|   134k|	const uint32_t partitions = 1u << partition_order;
 3305|   134k|	const uint32_t partition_samples = decoder->private_->frame.header.blocksize >> partition_order;
 3306|   134k|	const uint32_t plen = is_extended? FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN : FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN;
  ------------------
  |  Branch (3306:24): [True: 80.8k, False: 54.0k]
  ------------------
 3307|   134k|	const uint32_t pesc = is_extended? FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER : FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER;
  ------------------
  |  Branch (3307:24): [True: 80.8k, False: 54.0k]
  ------------------
 3308|       |
 3309|       |	/* invalid predictor and partition orders mush be handled in the callers */
 3310|   134k|	FLAC__ASSERT(partition_order > 0? partition_samples >= predictor_order : decoder->private_->frame.header.blocksize >= predictor_order);
  ------------------
  |  |   38|   269k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 134k]
  |  |  |  Branch (38:30): [True: 48.2k, False: 86.6k]
  |  |  ------------------
  ------------------
 3311|       |
 3312|   134k|	if(!FLAC__format_entropy_coding_method_partitioned_rice_contents_ensure_size(partitioned_rice_contents, flac_max(6u, partition_order))) {
  ------------------
  |  |   55|   134k|#define flac_max(a,b) MAX(a,b)
  ------------------
  |  Branch (3312:5): [True: 0, False: 134k]
  |  Branch (3312:106): [True: 133k, False: 1.16k]
  ------------------
 3313|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 3314|      0|		return false;
 3315|      0|	}
 3316|       |
 3317|   134k|	sample = 0;
 3318|  1.45M|	for(partition = 0; partition < partitions; partition++) {
  ------------------
  |  Branch (3318:21): [True: 1.32M, False: 134k]
  ------------------
 3319|  1.32M|		if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &rice_parameter, plen))
  ------------------
  |  Branch (3319:6): [True: 0, False: 1.32M]
  ------------------
 3320|      0|			return false; /* read_callback_ sets the state for us */
 3321|  1.32M|		partitioned_rice_contents->parameters[partition] = rice_parameter;
 3322|  1.32M|		if(rice_parameter < pesc) {
  ------------------
  |  Branch (3322:6): [True: 1.29M, False: 25.3k]
  ------------------
 3323|  1.29M|			partitioned_rice_contents->raw_bits[partition] = 0;
 3324|  1.29M|			u = (partition == 0) ? partition_samples - predictor_order : partition_samples;
  ------------------
  |  Branch (3324:8): [True: 126k, False: 1.17M]
  ------------------
 3325|  1.29M|			if(!decoder->private_->local_bitreader_read_rice_signed_block(decoder->private_->input, residual + sample, u, rice_parameter)){
  ------------------
  |  Branch (3325:7): [True: 0, False: 1.29M]
  ------------------
 3326|      0|				if(decoder->protected_->state == FLAC__STREAM_DECODER_READ_FRAME) {
  ------------------
  |  Branch (3326:8): [True: 0, False: 0]
  ------------------
 3327|       |					/* no error was set, read_callback_ didn't set it, so
 3328|       |					 * invalid rice symbol was found */
 3329|      0|					send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3330|      0|					decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3331|      0|					return true;
 3332|      0|				}
 3333|      0|				else
 3334|      0|					return false; /* read_callback_ sets the state for us */
 3335|      0|			}
 3336|  1.29M|			sample += u;
 3337|  1.29M|		}
 3338|  25.3k|		else {
 3339|  25.3k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &rice_parameter, FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN))
  ------------------
  |  Branch (3339:7): [True: 0, False: 25.3k]
  ------------------
 3340|      0|				return false; /* read_callback_ sets the state for us */
 3341|  25.3k|			partitioned_rice_contents->raw_bits[partition] = rice_parameter;
 3342|  25.3k|			if(rice_parameter == 0) {
  ------------------
  |  Branch (3342:7): [True: 0, False: 25.3k]
  ------------------
 3343|      0|				for(u = (partition == 0)? predictor_order : 0; u < partition_samples; u++, sample++)
  ------------------
  |  Branch (3343:13): [True: 0, False: 0]
  |  Branch (3343:52): [True: 0, False: 0]
  ------------------
 3344|      0|					residual[sample] = 0;
 3345|      0|			}
 3346|  25.3k|			else{
 3347|   733k|				for(u = (partition == 0)? predictor_order : 0; u < partition_samples; u++, sample++) {
  ------------------
  |  Branch (3347:13): [True: 8.85k, False: 16.4k]
  |  Branch (3347:52): [True: 708k, False: 25.3k]
  ------------------
 3348|   708k|					if(!FLAC__bitreader_read_raw_int32(decoder->private_->input, &i, rice_parameter))
  ------------------
  |  Branch (3348:9): [True: 0, False: 708k]
  ------------------
 3349|      0|						return false; /* read_callback_ sets the state for us */
 3350|   708k|					residual[sample] = i;
 3351|   708k|				}
 3352|  25.3k|			}
 3353|  25.3k|		}
 3354|  1.32M|	}
 3355|       |
 3356|   134k|	return true;
 3357|   134k|}
stream_decoder.c:read_subframe_lpc_:
 3156|  18.5k|{
 3157|  18.5k|	FLAC__Subframe_LPC *subframe = &decoder->private_->frame.subframes[channel].data.lpc;
 3158|  18.5k|	FLAC__int32 i32;
 3159|  18.5k|	FLAC__int64 i64;
 3160|  18.5k|	FLAC__uint32 u32;
 3161|  18.5k|	uint32_t u;
 3162|       |
 3163|  18.5k|	decoder->private_->frame.subframes[channel].type = FLAC__SUBFRAME_TYPE_LPC;
 3164|       |
 3165|  18.5k|	subframe->residual = decoder->private_->residual[channel];
 3166|  18.5k|	subframe->order = order;
 3167|       |
 3168|       |	/* read warm-up samples */
 3169|   123k|	for(u = 0; u < order; u++) {
  ------------------
  |  Branch (3169:13): [True: 104k, False: 18.5k]
  ------------------
 3170|   104k|		if(!FLAC__bitreader_read_raw_int64(decoder->private_->input, &i64, bps))
  ------------------
  |  Branch (3170:6): [True: 0, False: 104k]
  ------------------
 3171|      0|			return false; /* read_callback_ sets the state for us */
 3172|   104k|		subframe->warmup[u] = i64;
 3173|   104k|	}
 3174|       |
 3175|       |	/* read qlp coeff precision */
 3176|  18.5k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &u32, FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN))
  ------------------
  |  Branch (3176:5): [True: 0, False: 18.5k]
  ------------------
 3177|      0|		return false; /* read_callback_ sets the state for us */
 3178|  18.5k|	if(u32 == (1u << FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN) - 1) {
  ------------------
  |  Branch (3178:5): [True: 0, False: 18.5k]
  ------------------
 3179|      0|		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3180|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3181|      0|		return true;
 3182|      0|	}
 3183|  18.5k|	subframe->qlp_coeff_precision = u32+1;
 3184|       |
 3185|       |	/* read qlp shift */
 3186|  18.5k|	if(!FLAC__bitreader_read_raw_int32(decoder->private_->input, &i32, FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN))
  ------------------
  |  Branch (3186:5): [True: 0, False: 18.5k]
  ------------------
 3187|      0|		return false; /* read_callback_ sets the state for us */
 3188|  18.5k|	if(i32 < 0) {
  ------------------
  |  Branch (3188:5): [True: 0, False: 18.5k]
  ------------------
 3189|      0|		send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3190|      0|		decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3191|      0|		return true;
 3192|      0|	}
 3193|  18.5k|	subframe->quantization_level = i32;
 3194|       |
 3195|       |	/* read quantized lp coefficiencts */
 3196|   123k|	for(u = 0; u < order; u++) {
  ------------------
  |  Branch (3196:13): [True: 104k, False: 18.5k]
  ------------------
 3197|   104k|		if(!FLAC__bitreader_read_raw_int32(decoder->private_->input, &i32, subframe->qlp_coeff_precision))
  ------------------
  |  Branch (3197:6): [True: 0, False: 104k]
  ------------------
 3198|      0|			return false; /* read_callback_ sets the state for us */
 3199|   104k|		subframe->qlp_coeff[u] = i32;
 3200|   104k|	}
 3201|       |
 3202|       |	/* read entropy coding method info */
 3203|  18.5k|	if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &u32, FLAC__ENTROPY_CODING_METHOD_TYPE_LEN))
  ------------------
  |  Branch (3203:5): [True: 0, False: 18.5k]
  ------------------
 3204|      0|		return false; /* read_callback_ sets the state for us */
 3205|  18.5k|	subframe->entropy_coding_method.type = (FLAC__EntropyCodingMethodType)u32;
 3206|  18.5k|	switch(subframe->entropy_coding_method.type) {
 3207|  13.0k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE:
  ------------------
  |  Branch (3207:3): [True: 13.0k, False: 5.47k]
  ------------------
 3208|  18.5k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2:
  ------------------
  |  Branch (3208:3): [True: 5.47k, False: 13.0k]
  ------------------
 3209|  18.5k|			if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &u32, FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN))
  ------------------
  |  Branch (3209:7): [True: 0, False: 18.5k]
  ------------------
 3210|      0|				return false; /* read_callback_ sets the state for us */
 3211|  18.5k|			if((decoder->private_->frame.header.blocksize >> u32 < order) ||
  ------------------
  |  Branch (3211:7): [True: 0, False: 18.5k]
  ------------------
 3212|  18.5k|			   (decoder->private_->frame.header.blocksize % (1 << u32) > 0)) {
  ------------------
  |  Branch (3212:7): [True: 0, False: 18.5k]
  ------------------
 3213|      0|				send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3214|      0|				decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3215|      0|				return true;
 3216|      0|			}
 3217|  18.5k|			subframe->entropy_coding_method.data.partitioned_rice.order = u32;
 3218|  18.5k|			subframe->entropy_coding_method.data.partitioned_rice.contents = &decoder->private_->partitioned_rice_contents[channel];
 3219|  18.5k|			break;
 3220|      0|		default:
  ------------------
  |  Branch (3220:3): [True: 0, False: 18.5k]
  ------------------
 3221|      0|			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM);
 3222|      0|			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3223|      0|			return true;
 3224|  18.5k|	}
 3225|       |
 3226|       |	/* read residual */
 3227|  18.5k|	switch(subframe->entropy_coding_method.type) {
 3228|  13.0k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE:
  ------------------
  |  Branch (3228:3): [True: 13.0k, False: 5.47k]
  ------------------
 3229|  18.5k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2:
  ------------------
  |  Branch (3229:3): [True: 5.47k, False: 13.0k]
  ------------------
 3230|  18.5k|			if(!read_residual_partitioned_rice_(decoder, order, subframe->entropy_coding_method.data.partitioned_rice.order, &decoder->private_->partitioned_rice_contents[channel], decoder->private_->residual[channel], /*is_extended=*/subframe->entropy_coding_method.type == FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2))
  ------------------
  |  Branch (3230:7): [True: 0, False: 18.5k]
  ------------------
 3231|      0|				return false;
 3232|  18.5k|			break;
 3233|  18.5k|		default:
  ------------------
  |  Branch (3233:3): [True: 0, False: 18.5k]
  ------------------
 3234|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 3235|  18.5k|	}
 3236|       |
 3237|       |	/* decode the subframe */
 3238|  18.5k|	if(do_full_decode) {
  ------------------
  |  Branch (3238:5): [True: 18.5k, False: 0]
  ------------------
 3239|  18.5k|		if(bps <= 32) {
  ------------------
  |  Branch (3239:6): [True: 17.0k, False: 1.52k]
  ------------------
 3240|  17.0k|			uint32_t i;
 3241|   111k|			for(i = 0; i < order; i++)
  ------------------
  |  Branch (3241:15): [True: 94.7k, False: 17.0k]
  ------------------
 3242|  94.7k|				decoder->private_->output[channel][i] = subframe->warmup[i];
 3243|  17.0k|			if(FLAC__lpc_max_residual_bps(bps, subframe->qlp_coeff, order, subframe->quantization_level) <= 32 &&
  ------------------
  |  Branch (3243:7): [True: 7.60k, False: 9.43k]
  ------------------
 3244|  7.60k|			   FLAC__lpc_max_prediction_before_shift_bps(bps, subframe->qlp_coeff, order) <= 32)
  ------------------
  |  Branch (3244:7): [True: 6.81k, False: 784]
  ------------------
 3245|  6.81k|				FLAC__lpc_restore_signal(decoder->private_->residual[channel], decoder->private_->frame.header.blocksize-order, subframe->qlp_coeff, order, subframe->quantization_level, decoder->private_->output[channel]+order);
 3246|  10.2k|			else
 3247|  10.2k|				FLAC__lpc_restore_signal_wide(decoder->private_->residual[channel], decoder->private_->frame.header.blocksize-order, subframe->qlp_coeff, order, subframe->quantization_level, decoder->private_->output[channel]+order);
 3248|  17.0k|		}
 3249|  1.52k|		else {
 3250|  1.52k|			decoder->private_->side_subframe_in_use = true;
 3251|  1.52k|			memcpy(decoder->private_->side_subframe, subframe->warmup, sizeof(FLAC__int64) * order);
 3252|  1.52k|			FLAC__lpc_restore_signal_wide_33bit(decoder->private_->residual[channel], decoder->private_->frame.header.blocksize-order, subframe->qlp_coeff, order, subframe->quantization_level, decoder->private_->side_subframe+order);
 3253|  1.52k|		}
 3254|  18.5k|	}
 3255|       |
 3256|       |	return true;
 3257|  18.5k|}
stream_decoder.c:read_zero_padding_:
 3360|   203k|{
 3361|   203k|	if(!FLAC__bitreader_is_consumed_byte_aligned(decoder->private_->input)) {
  ------------------
  |  Branch (3361:5): [True: 90.4k, False: 113k]
  ------------------
 3362|  90.4k|		FLAC__uint32 zero = 0;
 3363|  90.4k|		if(!FLAC__bitreader_read_raw_uint32(decoder->private_->input, &zero, FLAC__bitreader_bits_left_for_byte_alignment(decoder->private_->input)))
  ------------------
  |  Branch (3363:6): [True: 0, False: 90.4k]
  ------------------
 3364|      0|			return false; /* read_callback_ sets the state for us */
 3365|       |#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 3366|       |		if(zero != 0) {
 3367|       |			send_error_to_client_(decoder, FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC);
 3368|       |			decoder->protected_->state = FLAC__STREAM_DECODER_SEARCH_FOR_FRAME_SYNC;
 3369|       |		}
 3370|       |#endif
 3371|  90.4k|	}
 3372|   203k|	return true;
 3373|   203k|}
stream_decoder.c:undo_channel_coding:
 3476|   203k|void undo_channel_coding(FLAC__StreamDecoder *decoder) {
 3477|   203k|	uint32_t i;
 3478|   203k|	switch(decoder->private_->frame.header.channel_assignment) {
 3479|   168k|	case FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT:
  ------------------
  |  Branch (3479:2): [True: 168k, False: 34.8k]
  ------------------
 3480|       |		/* do nothing */
 3481|   168k|		break;
 3482|  16.5k|	case FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE:
  ------------------
  |  Branch (3482:2): [True: 16.5k, False: 187k]
  ------------------
 3483|  16.5k|		FLAC__ASSERT(decoder->private_->frame.header.channels == 2);
  ------------------
  |  |   38|  16.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.5k]
  |  |  ------------------
  ------------------
 3484|  16.5k|		FLAC__ASSERT(decoder->private_->side_subframe_in_use != /* logical XOR */ (decoder->private_->frame.header.bits_per_sample < 32));
  ------------------
  |  |   38|  16.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.5k]
  |  |  ------------------
  ------------------
 3485|   510k|		for(i = 0; i < decoder->private_->frame.header.blocksize; i++)
  ------------------
  |  Branch (3485:14): [True: 493k, False: 16.5k]
  ------------------
 3486|   493k|			if(decoder->private_->side_subframe_in_use)
  ------------------
  |  Branch (3486:7): [True: 289k, False: 204k]
  ------------------
 3487|   289k|				decoder->private_->output[1][i] = decoder->private_->output[0][i] - decoder->private_->side_subframe[i];
 3488|   204k|			else
 3489|   204k|				decoder->private_->output[1][i] = decoder->private_->output[0][i] - decoder->private_->output[1][i];
 3490|  16.5k|		break;
 3491|  7.14k|	case FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE:
  ------------------
  |  Branch (3491:2): [True: 7.14k, False: 196k]
  ------------------
 3492|  7.14k|		FLAC__ASSERT(decoder->private_->frame.header.channels == 2);
  ------------------
  |  |   38|  7.14k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 7.14k]
  |  |  ------------------
  ------------------
 3493|  7.14k|		FLAC__ASSERT(decoder->private_->side_subframe_in_use != /* logical XOR */ (decoder->private_->frame.header.bits_per_sample < 32));
  ------------------
  |  |   38|  7.14k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 7.14k]
  |  |  ------------------
  ------------------
 3494|   321k|		for(i = 0; i < decoder->private_->frame.header.blocksize; i++)
  ------------------
  |  Branch (3494:14): [True: 314k, False: 7.14k]
  ------------------
 3495|   314k|			if(decoder->private_->side_subframe_in_use)
  ------------------
  |  Branch (3495:7): [True: 231k, False: 83.5k]
  ------------------
 3496|   231k|				decoder->private_->output[0][i] = decoder->private_->output[1][i] + decoder->private_->side_subframe[i];
 3497|  83.5k|			else
 3498|  83.5k|				decoder->private_->output[0][i] += decoder->private_->output[1][i];
 3499|  7.14k|		break;
 3500|  11.1k|	case FLAC__CHANNEL_ASSIGNMENT_MID_SIDE:
  ------------------
  |  Branch (3500:2): [True: 11.1k, False: 192k]
  ------------------
 3501|  11.1k|		FLAC__ASSERT(decoder->private_->frame.header.channels == 2);
  ------------------
  |  |   38|  11.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.1k]
  |  |  ------------------
  ------------------
 3502|  11.1k|		FLAC__ASSERT(decoder->private_->side_subframe_in_use != /* logical XOR */ (decoder->private_->frame.header.bits_per_sample < 32));
  ------------------
  |  |   38|  11.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.1k]
  |  |  ------------------
  ------------------
 3503|  1.89M|		for(i = 0; i < decoder->private_->frame.header.blocksize; i++) {
  ------------------
  |  Branch (3503:14): [True: 1.88M, False: 11.1k]
  ------------------
 3504|  1.88M|			if(!decoder->private_->side_subframe_in_use){
  ------------------
  |  Branch (3504:7): [True: 73.6k, False: 1.81M]
  ------------------
 3505|  73.6k|				FLAC__int32 mid, side;
 3506|  73.6k|				mid = decoder->private_->output[0][i];
 3507|  73.6k|				side = decoder->private_->output[1][i];
 3508|  73.6k|				mid = ((uint32_t) mid) << 1;
 3509|  73.6k|				mid |= (side & 1); /* i.e. if 'side' is odd... */
 3510|  73.6k|				decoder->private_->output[0][i] = (mid + side) >> 1;
 3511|  73.6k|				decoder->private_->output[1][i] = (mid - side) >> 1;
 3512|  73.6k|			}
 3513|  1.81M|			else { /* bps == 32 */
 3514|  1.81M|				FLAC__int64 mid;
 3515|  1.81M|				mid = ((uint64_t)decoder->private_->output[0][i]) << 1;
 3516|  1.81M|				mid |= (decoder->private_->side_subframe[i] & 1); /* i.e. if 'side' is odd... */
 3517|  1.81M|				decoder->private_->output[0][i] = (mid + decoder->private_->side_subframe[i]) >> 1;
 3518|  1.81M|				decoder->private_->output[1][i] = (mid - decoder->private_->side_subframe[i]) >> 1;
 3519|  1.81M|			}
 3520|  1.88M|		}
 3521|  11.1k|		break;
 3522|      0|	default:
  ------------------
  |  Branch (3522:2): [True: 0, False: 203k]
  ------------------
 3523|      0|		FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 3524|      0|		break;
 3525|   203k|	}
 3526|   203k|}
stream_decoder.c:write_audio_frame_to_client_:
 3579|   203k|{
 3580|   203k|	decoder->private_->last_frame = *frame; /* save the frame */
 3581|   203k|	decoder->private_->last_frame_is_set = true;
 3582|   203k|	if(decoder->private_->is_seeking && !decoder->private_->is_indexing) {
  ------------------
  |  Branch (3582:5): [True: 0, False: 203k]
  |  Branch (3582:38): [True: 0, False: 0]
  ------------------
 3583|      0|		FLAC__uint64 this_frame_sample = frame->header.number.sample_number;
 3584|      0|		FLAC__uint64 next_frame_sample = this_frame_sample + (FLAC__uint64)frame->header.blocksize;
 3585|      0|		FLAC__uint64 target_sample = decoder->private_->target_sample;
 3586|       |
 3587|      0|		FLAC__ASSERT(frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3588|       |
 3589|      0|		decoder->private_->got_a_frame = true;
 3590|       |
 3591|      0|		if(this_frame_sample <= target_sample && target_sample < next_frame_sample) { /* we hit our target frame */
  ------------------
  |  Branch (3591:6): [True: 0, False: 0]
  |  Branch (3591:44): [True: 0, False: 0]
  ------------------
 3592|      0|			uint32_t delta = (uint32_t)(target_sample - this_frame_sample);
 3593|       |			/* kick out of seek mode */
 3594|      0|			decoder->private_->is_seeking = false;
 3595|       |			/* shift out the samples before target_sample */
 3596|      0|			if(delta > 0) {
  ------------------
  |  Branch (3596:7): [True: 0, False: 0]
  ------------------
 3597|      0|				uint32_t channel;
 3598|      0|				const FLAC__int32 *newbuffer[FLAC__MAX_CHANNELS];
 3599|      0|				for(channel = 0; channel < frame->header.channels; channel++) {
  ------------------
  |  Branch (3599:22): [True: 0, False: 0]
  ------------------
 3600|      0|					newbuffer[channel] = buffer[channel] + delta;
 3601|      0|					decoder->private_->last_frame.subframes[channel].type = FLAC__SUBFRAME_TYPE_VERBATIM;
 3602|      0|					decoder->private_->last_frame.subframes[channel].data.verbatim.data_type = FLAC__VERBATIM_SUBFRAME_DATA_TYPE_INT32;
 3603|      0|					decoder->private_->last_frame.subframes[channel].data.verbatim.data.int32 = newbuffer[channel];
 3604|      0|				}
 3605|      0|				decoder->private_->last_frame.header.blocksize -= delta;
 3606|      0|				decoder->private_->last_frame.header.number.sample_number += (FLAC__uint64)delta;
 3607|       |				/* write the relevant samples */
 3608|      0|				return decoder->private_->write_callback(decoder, &decoder->private_->last_frame, newbuffer, decoder->private_->client_data);
 3609|      0|			}
 3610|      0|			else {
 3611|       |				/* write the relevant samples */
 3612|      0|				return decoder->private_->write_callback(decoder, frame, buffer, decoder->private_->client_data);
 3613|      0|			}
 3614|      0|		}
 3615|      0|		else {
 3616|      0|			return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
 3617|      0|		}
 3618|      0|	}
 3619|   203k|	else if(!decoder->private_->is_indexing) {
  ------------------
  |  Branch (3619:10): [True: 203k, False: 0]
  ------------------
 3620|       |		/*
 3621|       |		 * If we never got STREAMINFO, turn off MD5 checking to save
 3622|       |		 * cycles since we don't have a sum to compare to anyway
 3623|       |		 */
 3624|   203k|		if(!decoder->private_->has_stream_info)
  ------------------
  |  Branch (3624:6): [True: 0, False: 203k]
  ------------------
 3625|      0|			decoder->private_->do_md5_checking = false;
 3626|   203k|		if(decoder->private_->do_md5_checking) {
  ------------------
  |  Branch (3626:6): [True: 0, False: 203k]
  ------------------
 3627|      0|			if(!FLAC__MD5Accumulate(&decoder->private_->md5context, buffer, frame->header.channels, frame->header.blocksize, (frame->header.bits_per_sample+7) / 8))
  ------------------
  |  Branch (3627:7): [True: 0, False: 0]
  ------------------
 3628|      0|				return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
 3629|      0|		}
 3630|   203k|		return decoder->private_->write_callback(decoder, frame, buffer, decoder->private_->client_data);
 3631|   203k|	}
 3632|      0|	else { /* decoder->private_->is_indexing == true */
 3633|      0|		return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
 3634|      0|	}
 3635|   203k|}

FLAC__stream_encoder_new:
  584|  11.8k|{
  585|  11.8k|	FLAC__StreamEncoder *encoder;
  586|  11.8k|	uint32_t i;
  587|       |
  588|  11.8k|	FLAC__ASSERT(sizeof(int) >= 4); /* we want to die right away if this is not true */
  ------------------
  |  |   38|  11.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 11.8k]
  |  |  ------------------
  ------------------
  589|       |
  590|  11.8k|	encoder = safe_calloc_(1, sizeof(FLAC__StreamEncoder));
  591|  11.8k|	if(encoder == 0) {
  ------------------
  |  Branch (591:5): [True: 0, False: 11.8k]
  ------------------
  592|      0|		return 0;
  593|      0|	}
  594|       |
  595|  11.8k|	encoder->protected_ = safe_calloc_(1, sizeof(FLAC__StreamEncoderProtected));
  596|  11.8k|	if(encoder->protected_ == 0) {
  ------------------
  |  Branch (596:5): [True: 0, False: 11.8k]
  ------------------
  597|      0|		free(encoder);
  598|      0|		return 0;
  599|      0|	}
  600|       |
  601|  11.8k|	encoder->private_ = safe_calloc_(1, sizeof(FLAC__StreamEncoderPrivate));
  602|  11.8k|	if(encoder->private_ == 0) {
  ------------------
  |  Branch (602:5): [True: 0, False: 11.8k]
  ------------------
  603|      0|		free(encoder->protected_);
  604|      0|		free(encoder);
  605|      0|		return 0;
  606|      0|	}
  607|       |
  608|  11.8k|	encoder->private_->threadtask[0] = safe_calloc_(1, sizeof(FLAC__StreamEncoderThreadTask));
  609|  11.8k|	if(encoder->private_->threadtask[0] == 0) {
  ------------------
  |  Branch (609:5): [True: 0, False: 11.8k]
  ------------------
  610|      0|		free(encoder->private_);
  611|      0|		free(encoder->protected_);
  612|      0|		free(encoder);
  613|      0|		return 0;
  614|      0|	}
  615|       |
  616|  11.8k|	encoder->private_->threadtask[0]->frame = FLAC__bitwriter_new();
  617|  11.8k|	if(encoder->private_->threadtask[0]->frame == 0) {
  ------------------
  |  Branch (617:5): [True: 0, False: 11.8k]
  ------------------
  618|      0|		free(encoder->private_->threadtask[0]);
  619|      0|		free(encoder->private_);
  620|      0|		free(encoder->protected_);
  621|      0|		free(encoder);
  622|      0|		return 0;
  623|      0|	}
  624|       |
  625|  11.8k|	encoder->private_->file = 0;
  626|       |
  627|  11.8k|	encoder->protected_->state = FLAC__STREAM_ENCODER_UNINITIALIZED;
  628|       |
  629|  11.8k|	set_defaults_(encoder);
  630|       |
  631|  11.8k|	encoder->private_->is_being_deleted = false;
  632|       |
  633|   106k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   106k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (633:13): [True: 94.6k, False: 11.8k]
  ------------------
  634|  94.6k|		encoder->private_->threadtask[0]->subframe_workspace_ptr[i][0] = &encoder->private_->threadtask[0]->subframe_workspace[i][0];
  635|  94.6k|		encoder->private_->threadtask[0]->subframe_workspace_ptr[i][1] = &encoder->private_->threadtask[0]->subframe_workspace[i][1];
  636|  94.6k|	}
  637|  35.5k|	for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (637:13): [True: 23.6k, False: 11.8k]
  ------------------
  638|  23.6k|		encoder->private_->threadtask[0]->subframe_workspace_ptr_mid_side[i][0] = &encoder->private_->threadtask[0]->subframe_workspace_mid_side[i][0];
  639|  23.6k|		encoder->private_->threadtask[0]->subframe_workspace_ptr_mid_side[i][1] = &encoder->private_->threadtask[0]->subframe_workspace_mid_side[i][1];
  640|  23.6k|	}
  641|   106k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   106k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (641:13): [True: 94.6k, False: 11.8k]
  ------------------
  642|  94.6k|		encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_ptr[i][0] = &encoder->private_->threadtask[0]->partitioned_rice_contents_workspace[i][0];
  643|  94.6k|		encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_ptr[i][1] = &encoder->private_->threadtask[0]->partitioned_rice_contents_workspace[i][1];
  644|  94.6k|	}
  645|  35.5k|	for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (645:13): [True: 23.6k, False: 11.8k]
  ------------------
  646|  23.6k|		encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_ptr_mid_side[i][0] = &encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_mid_side[i][0];
  647|  23.6k|		encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_ptr_mid_side[i][1] = &encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_mid_side[i][1];
  648|  23.6k|	}
  649|       |
  650|   106k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   106k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (650:13): [True: 94.6k, False: 11.8k]
  ------------------
  651|  94.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace[i][0]);
  652|  94.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace[i][1]);
  653|  94.6k|	}
  654|  35.5k|	for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (654:13): [True: 23.6k, False: 11.8k]
  ------------------
  655|  23.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_mid_side[i][0]);
  656|  23.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_mid_side[i][1]);
  657|  23.6k|	}
  658|  35.5k|	for(i = 0; i < 2; i++)
  ------------------
  |  Branch (658:13): [True: 23.6k, False: 11.8k]
  ------------------
  659|  23.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[0]->partitioned_rice_contents_extra[i]);
  660|       |
  661|  11.8k|	return encoder;
  662|  11.8k|}
FLAC__stream_encoder_delete:
  665|  11.8k|{
  666|  11.8k|	uint32_t i;
  667|       |
  668|  11.8k|	if (encoder == NULL)
  ------------------
  |  Branch (668:6): [True: 0, False: 11.8k]
  ------------------
  669|      0|		return ;
  670|       |
  671|  11.8k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  11.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  672|  11.8k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  11.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  673|  11.8k|	FLAC__ASSERT(0 != encoder->private_->threadtask[0]);
  ------------------
  |  |   38|  11.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  674|  11.8k|	FLAC__ASSERT(0 != encoder->private_->threadtask[0]->frame);
  ------------------
  |  |   38|  11.8k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.8k]
  |  |  ------------------
  ------------------
  675|       |
  676|  11.8k|	encoder->private_->is_being_deleted = true;
  677|       |
  678|  11.8k|	(void)FLAC__stream_encoder_finish(encoder);
  679|       |
  680|  11.8k|	if(0 != encoder->private_->verify.decoder)
  ------------------
  |  Branch (680:5): [True: 8.32k, False: 3.51k]
  ------------------
  681|  8.32k|		FLAC__stream_decoder_delete(encoder->private_->verify.decoder);
  682|       |
  683|   106k|	for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   106k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (683:13): [True: 94.6k, False: 11.8k]
  ------------------
  684|  94.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace[i][0]);
  685|  94.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace[i][1]);
  686|  94.6k|	}
  687|  35.5k|	for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (687:13): [True: 23.6k, False: 11.8k]
  ------------------
  688|  23.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_mid_side[i][0]);
  689|  23.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[0]->partitioned_rice_contents_workspace_mid_side[i][1]);
  690|  23.6k|	}
  691|  35.5k|	for(i = 0; i < 2; i++)
  ------------------
  |  Branch (691:13): [True: 23.6k, False: 11.8k]
  ------------------
  692|  23.6k|		FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[0]->partitioned_rice_contents_extra[i]);
  693|       |
  694|  11.8k|	FLAC__bitwriter_delete(encoder->private_->threadtask[0]->frame);
  695|  11.8k|	free(encoder->private_->threadtask[0]);
  696|  11.8k|	free(encoder->private_);
  697|  11.8k|	free(encoder->protected_);
  698|  11.8k|	free(encoder);
  699|  11.8k|}
FLAC__stream_encoder_init_stream:
 1450|  6.72k|{
 1451|  6.72k|	return init_stream_internal_(
 1452|  6.72k|		encoder,
 1453|  6.72k|		/*read_callback=*/0,
 1454|  6.72k|		write_callback,
 1455|  6.72k|		seek_callback,
 1456|  6.72k|		tell_callback,
 1457|  6.72k|		metadata_callback,
 1458|  6.72k|		client_data,
 1459|       |		/*is_ogg=*/false
 1460|  6.72k|	);
 1461|  6.72k|}
FLAC__stream_encoder_init_ogg_stream:
 1472|  3.08k|{
 1473|  3.08k|	return init_stream_internal_(
 1474|  3.08k|		encoder,
 1475|  3.08k|		read_callback,
 1476|  3.08k|		write_callback,
 1477|  3.08k|		seek_callback,
 1478|  3.08k|		tell_callback,
 1479|  3.08k|		metadata_callback,
 1480|  3.08k|		client_data,
 1481|       |		/*is_ogg=*/true
 1482|  3.08k|	);
 1483|  3.08k|}
FLAC__stream_encoder_finish:
 1626|  35.5k|{
 1627|  35.5k|	FLAC__bool error = false;
 1628|       |
 1629|  35.5k|	if (encoder == NULL)
  ------------------
  |  Branch (1629:6): [True: 0, False: 35.5k]
  ------------------
 1630|      0|		return false;
 1631|       |
 1632|  35.5k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  35.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 35.5k]
  |  |  ------------------
  ------------------
 1633|  35.5k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  35.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 35.5k]
  |  |  ------------------
  ------------------
 1634|       |
 1635|  35.5k|	if(encoder->protected_->state == FLAC__STREAM_ENCODER_UNINITIALIZED){
  ------------------
  |  Branch (1635:5): [True: 25.9k, False: 9.55k]
  ------------------
 1636|  25.9k|		if(encoder->protected_->metadata){ // True in case FLAC__stream_encoder_set_metadata was used but init failed
  ------------------
  |  Branch (1636:6): [True: 0, False: 25.9k]
  ------------------
 1637|      0|			free(encoder->protected_->metadata);
 1638|      0|			encoder->protected_->metadata = 0;
 1639|      0|			encoder->protected_->num_metadata_blocks = 0;
 1640|      0|		}
 1641|  25.9k|		if(0 != encoder->private_->file) {
  ------------------
  |  Branch (1641:6): [True: 0, False: 25.9k]
  ------------------
 1642|      0|			if(encoder->private_->file != stdout)
  ------------------
  |  Branch (1642:7): [True: 0, False: 0]
  ------------------
 1643|      0|				fclose(encoder->private_->file);
 1644|      0|			encoder->private_->file = 0;
 1645|      0|		}
 1646|  25.9k|		return true;
 1647|  25.9k|	}
 1648|       |
 1649|  9.55k|	if(encoder->protected_->state == FLAC__STREAM_ENCODER_OK && !encoder->private_->is_being_deleted) {
  ------------------
  |  Branch (1649:5): [True: 9.46k, False: 84]
  |  Branch (1649:62): [True: 9.46k, False: 0]
  ------------------
 1650|  9.46k|		FLAC__bool ok = true;
 1651|       |		/* first finish threads */
 1652|  9.46k|		if(encoder->protected_->num_threads > 1) {
  ------------------
  |  Branch (1652:6): [True: 817, False: 8.65k]
  ------------------
 1653|    817|#ifdef FLAC__USE_THREADS
 1654|       |			/* This is quite complicated, so here is an explanation on what is supposed to happen
 1655|       |			 *
 1656|       |			 * Thread no.0 and threadtask no.0 are reserved for non-threaded operation, so counting
 1657|       |			 * here starts at 1, which makes things slightly more complicated.
 1658|       |			 *
 1659|       |			 * If the file processed was very short compared to the requested number of threadtasks,
 1660|       |			 * not all threadtasks have been populated yet. Handling that is easy: threadtask no.1 needs
 1661|       |			 * to be processed first, monotonically increasing until the last populated threadtask is
 1662|       |			 * processed. This number is stored in encoder->private_->num_started_threadtasks
 1663|       |			 *
 1664|       |			 * If the file is longer, the next due frame chronologically might not be in threadtasks
 1665|       |			 * number 1, because the threadtasks work like a ringbuffer. To access this, the variable
 1666|       |			 * twrap starts counting at the next due frame, and the modulo operator (%) is used to
 1667|       |			 * "wrap" the number with the number of threadtasks. So, if the next due task is 3
 1668|       |			 * and 4 tasks are started, twrap increases 3, 4, 5, 6, and t follows with values 3, 4, 1, 2.
 1669|       |			 */
 1670|    817|			uint32_t start, end, t, twrap;
 1671|    817|			if(encoder->private_->num_started_threadtasks < encoder->private_->num_threadtasks) {
  ------------------
  |  Branch (1671:7): [True: 512, False: 305]
  ------------------
 1672|    512|				start = 1;
 1673|    512|				end = encoder->private_->num_started_threadtasks;
 1674|    512|			}
 1675|    305|			else {
 1676|    305|				start = encoder->private_->next_thread;
 1677|    305|				end = encoder->private_->next_thread + encoder->private_->num_threadtasks - 1;
 1678|    305|			}
 1679|  6.21k|			for(twrap = start; twrap < end; twrap++) {
  ------------------
  |  Branch (1679:23): [True: 5.40k, False: 817]
  ------------------
 1680|  5.40k|				FLAC__ASSERT(twrap > 0);
  ------------------
  |  |   38|  5.40k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 5.40k]
  |  |  ------------------
  ------------------
 1681|  5.40k|				t = (twrap - 1) % (encoder->private_->num_threadtasks - 1) + 1;
 1682|       |				/* Lock mutex, if task isn't done yet, wait for condition */
 1683|  5.40k|				FLAC__mtx_lock(&encoder->private_->threadtask[t]->mutex_this_task);
  ------------------
  |  |  105|  5.40k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 1684|  5.52k|				while(!encoder->private_->threadtask[t]->task_done)
  ------------------
  |  Branch (1684:11): [True: 124, False: 5.40k]
  ------------------
 1685|    124|					FLAC__cnd_wait(&encoder->private_->threadtask[t]->cond_task_done,&encoder->private_->threadtask[t]->mutex_this_task);
  ------------------
  |  |  113|  5.52k|#define FLAC__cnd_wait(cv, mutex)            pthread_cond_wait(cv, mutex)
  ------------------
 1686|       |
 1687|  5.40k|				if(!encoder->private_->threadtask[t]->returnvalue)
  ------------------
  |  Branch (1687:8): [True: 0, False: 5.40k]
  ------------------
 1688|      0|					ok = false;
 1689|  5.40k|				if(ok && !write_bitbuffer_(encoder, encoder->private_->threadtask[t], encoder->protected_->blocksize, 0))
  ------------------
  |  Branch (1689:8): [True: 5.40k, False: 0]
  |  Branch (1689:14): [True: 0, False: 5.40k]
  ------------------
 1690|      0|					ok = false;
 1691|  5.40k|				FLAC__mtx_unlock(&encoder->private_->threadtask[t]->mutex_this_task);
  ------------------
  |  |  106|  5.40k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 1692|  5.40k|			}
 1693|       |			/* Wait for MD5 calculation to finish */
 1694|    817|			FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|    817|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 1695|    819|			while(encoder->private_->md5_active || encoder->private_->md5_fifo.tail > 0) {
  ------------------
  |  Branch (1695:10): [True: 2, False: 817]
  |  Branch (1695:43): [True: 0, False: 817]
  ------------------
 1696|      2|				FLAC__cnd_wait(&encoder->private_->cond_md5_emptied, &encoder->private_->mutex_work_queue);
  ------------------
  |  |  113|      2|#define FLAC__cnd_wait(cv, mutex)            pthread_cond_wait(cv, mutex)
  ------------------
 1697|      2|			}
 1698|    817|			FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|    817|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 1699|       |#else
 1700|       |			FLAC__ASSERT(0);
 1701|       |#endif
 1702|    817|		}
 1703|  9.46k|		if(ok && encoder->private_->current_sample_number != 0) {
  ------------------
  |  Branch (1703:6): [True: 9.46k, False: 0]
  |  Branch (1703:12): [True: 8.65k, False: 816]
  ------------------
 1704|  8.65k|			encoder->protected_->blocksize = encoder->private_->current_sample_number;
 1705|  8.65k|			if(!resize_buffers_(encoder, encoder->protected_->blocksize)) {
  ------------------
  |  Branch (1705:7): [True: 0, False: 8.65k]
  ------------------
 1706|       |				/* the above function sets the state for us in case of an error */
 1707|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1708|      0|			}
 1709|  8.65k|			if(!process_frame_(encoder, /*is_last_block=*/true))
  ------------------
  |  Branch (1709:7): [True: 0, False: 8.65k]
  ------------------
 1710|      0|				error = true;
 1711|  8.65k|		}
 1712|  9.46k|	}
 1713|       |
 1714|  9.55k|	if(encoder->protected_->num_threads > 1) {
  ------------------
  |  Branch (1714:5): [True: 830, False: 8.72k]
  ------------------
 1715|    830|#ifdef FLAC__USE_THREADS
 1716|       |		/* Properly finish all threads */
 1717|    830|		uint32_t t;
 1718|    830|		FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|    830|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 1719|  3.53k|		for(t = 1; t < encoder->private_->num_created_threads; t++)
  ------------------
  |  Branch (1719:14): [True: 2.70k, False: 830]
  ------------------
 1720|  2.70k|			encoder->private_->finish_work_threads = true;
 1721|    830|		FLAC__cnd_broadcast(&encoder->private_->cond_wake_up_thread);
  ------------------
  |  |  111|    830|#define FLAC__cnd_broadcast(cv)              pthread_cond_broadcast(cv)
  ------------------
 1722|    830|		FLAC__cnd_broadcast(&encoder->private_->cond_work_available);
  ------------------
  |  |  111|    830|#define FLAC__cnd_broadcast(cv)              pthread_cond_broadcast(cv)
  ------------------
 1723|    830|		FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|    830|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 1724|       |
 1725|  3.53k|		for(t = 1; t < encoder->private_->num_created_threads; t++)
  ------------------
  |  Branch (1725:14): [True: 2.70k, False: 830]
  ------------------
 1726|  2.70k|			FLAC__thrd_join(encoder->private_->thread[t], NULL);
  ------------------
  |  |   99|  2.70k|#define FLAC__thrd_join(thread, result)      pthread_join(thread, result)
  ------------------
 1727|       |#else
 1728|       |			FLAC__ASSERT(0);
 1729|       |#endif
 1730|    830|	}
 1731|       |
 1732|  9.55k|	if(encoder->protected_->do_md5)
  ------------------
  |  Branch (1732:5): [True: 9.55k, False: 0]
  ------------------
 1733|  9.55k|		FLAC__MD5Final(encoder->private_->streaminfo.data.stream_info.md5sum, &encoder->private_->md5context);
 1734|       |
 1735|  9.55k|	if(!encoder->private_->is_being_deleted) {
  ------------------
  |  Branch (1735:5): [True: 9.55k, False: 0]
  ------------------
 1736|  9.55k|		if(encoder->protected_->state == FLAC__STREAM_ENCODER_OK) {
  ------------------
  |  Branch (1736:6): [True: 9.46k, False: 84]
  ------------------
 1737|  9.46k|			if(encoder->private_->seek_callback) {
  ------------------
  |  Branch (1737:7): [True: 9.46k, False: 0]
  ------------------
 1738|  9.46k|#if FLAC__HAS_OGG
 1739|  9.46k|				if(encoder->private_->is_ogg)
  ------------------
  |  Branch (1739:8): [True: 2.96k, False: 6.50k]
  ------------------
 1740|  2.96k|					update_ogg_metadata_(encoder);
 1741|  6.50k|				else
 1742|  6.50k|#endif
 1743|  6.50k|				update_metadata_(encoder);
 1744|       |
 1745|       |				/* check if an error occurred while updating metadata */
 1746|  9.46k|				if(encoder->protected_->state != FLAC__STREAM_ENCODER_OK)
  ------------------
  |  Branch (1746:8): [True: 0, False: 9.46k]
  ------------------
 1747|      0|					error = true;
 1748|  9.46k|			}
 1749|  9.46k|			if(encoder->private_->metadata_callback)
  ------------------
  |  Branch (1749:7): [True: 9.46k, False: 0]
  ------------------
 1750|  9.46k|				encoder->private_->metadata_callback(encoder, &encoder->private_->streaminfo, encoder->private_->client_data);
 1751|  9.46k|		}
 1752|       |
 1753|  9.55k|		if(encoder->protected_->verify && 0 != encoder->private_->verify.decoder && !FLAC__stream_decoder_finish(encoder->private_->verify.decoder)) {
  ------------------
  |  Branch (1753:6): [True: 8.32k, False: 1.22k]
  |  Branch (1753:37): [True: 8.32k, False: 0]
  |  Branch (1753:79): [True: 0, False: 8.32k]
  ------------------
 1754|      0|			if(!error)
  ------------------
  |  Branch (1754:7): [True: 0, False: 0]
  ------------------
 1755|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA;
 1756|      0|			error = true;
 1757|      0|		}
 1758|  9.55k|	}
 1759|       |
 1760|  9.55k|	if(0 != encoder->private_->file) {
  ------------------
  |  Branch (1760:5): [True: 0, False: 9.55k]
  ------------------
 1761|      0|		if(encoder->private_->file != stdout)
  ------------------
  |  Branch (1761:6): [True: 0, False: 0]
  ------------------
 1762|      0|			fclose(encoder->private_->file);
 1763|      0|		encoder->private_->file = 0;
 1764|      0|	}
 1765|       |
 1766|  9.55k|#if FLAC__HAS_OGG
 1767|  9.55k|	if(encoder->private_->is_ogg)
  ------------------
  |  Branch (1767:5): [True: 2.98k, False: 6.57k]
  ------------------
 1768|  2.98k|		FLAC__ogg_encoder_aspect_finish(&encoder->protected_->ogg_encoder_aspect);
 1769|  9.55k|#endif
 1770|       |
 1771|  9.55k|	free_(encoder);
 1772|  9.55k|	set_defaults_(encoder);
 1773|       |
 1774|  9.55k|	if(!error)
  ------------------
  |  Branch (1774:5): [True: 9.55k, False: 0]
  ------------------
 1775|  9.55k|		encoder->protected_->state = FLAC__STREAM_ENCODER_UNINITIALIZED;
 1776|       |
 1777|  9.55k|	return !error;
 1778|  9.55k|}
FLAC__stream_encoder_set_ogg_serial_number:
 1781|  21.3k|{
 1782|  21.3k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1783|  21.3k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1784|  21.3k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1785|  21.3k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1785:5): [True: 9.55k, False: 11.7k]
  ------------------
 1786|  9.55k|		return false;
 1787|  11.7k|#if FLAC__HAS_OGG
 1788|       |	/* can't check encoder->private_->is_ogg since that's not set until init time */
 1789|  11.7k|	FLAC__ogg_encoder_aspect_set_serial_number(&encoder->protected_->ogg_encoder_aspect, value);
 1790|  11.7k|	return true;
 1791|       |#else
 1792|       |	(void)value;
 1793|       |	return false;
 1794|       |#endif
 1795|  21.3k|}
FLAC__stream_encoder_set_verify:
 1798|  21.3k|{
 1799|  21.3k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1800|  21.3k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1801|  21.3k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1802|  21.3k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1802:5): [True: 9.55k, False: 11.7k]
  ------------------
 1803|  9.55k|		return false;
 1804|  11.7k|#ifndef FLAC__MANDATORY_VERIFY_WHILE_ENCODING
 1805|  11.7k|	encoder->protected_->verify = value;
 1806|  11.7k|#endif
 1807|       |	return true;
 1808|  21.3k|}
FLAC__stream_encoder_set_streamable_subset:
 1811|  21.3k|{
 1812|  21.3k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1813|  21.3k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1814|  21.3k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1815|  21.3k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1815:5): [True: 9.55k, False: 11.7k]
  ------------------
 1816|  9.55k|		return false;
 1817|  11.7k|	encoder->protected_->streamable_subset = value;
 1818|       |	return true;
 1819|  21.3k|}
FLAC__stream_encoder_set_channels:
 1841|  21.3k|{
 1842|  21.3k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1843|  21.3k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1844|  21.3k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1845|  21.3k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1845:5): [True: 9.55k, False: 11.7k]
  ------------------
 1846|  9.55k|		return false;
 1847|  11.7k|	encoder->protected_->channels = value;
 1848|       |	return true;
 1849|  21.3k|}
FLAC__stream_encoder_set_bits_per_sample:
 1852|  21.3k|{
 1853|  21.3k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1854|  21.3k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1855|  21.3k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 1856|  21.3k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1856:5): [True: 9.55k, False: 11.7k]
  ------------------
 1857|  9.55k|		return false;
 1858|  11.7k|	encoder->protected_->bits_per_sample = value;
 1859|       |	return true;
 1860|  21.3k|}
FLAC__stream_encoder_set_sample_rate:
 1863|  19.4k|{
 1864|  19.4k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 1865|  19.4k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 1866|  19.4k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 1867|  19.4k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1867:5): [True: 9.55k, False: 9.86k]
  ------------------
 1868|  9.55k|		return false;
 1869|  9.86k|	encoder->protected_->sample_rate = value;
 1870|       |	return true;
 1871|  19.4k|}
FLAC__stream_encoder_set_compression_level:
 1874|  42.7k|{
 1875|  42.7k|	FLAC__bool ok = true;
 1876|  42.7k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  42.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 42.7k]
  |  |  ------------------
  ------------------
 1877|  42.7k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  42.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 42.7k]
  |  |  ------------------
  ------------------
 1878|  42.7k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  42.7k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 42.7k]
  |  |  ------------------
  ------------------
 1879|  42.7k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1879:5): [True: 19.1k, False: 23.6k]
  ------------------
 1880|  19.1k|		return false;
 1881|  23.6k|	if(value >= sizeof(compression_levels_)/sizeof(compression_levels_[0]))
  ------------------
  |  Branch (1881:5): [True: 9.63k, False: 13.9k]
  ------------------
 1882|  9.63k|		value = sizeof(compression_levels_)/sizeof(compression_levels_[0]) - 1;
 1883|  23.6k|	ok &= FLAC__stream_encoder_set_do_mid_side_stereo          (encoder, compression_levels_[value].do_mid_side_stereo);
 1884|  23.6k|	ok &= FLAC__stream_encoder_set_loose_mid_side_stereo       (encoder, compression_levels_[value].loose_mid_side_stereo);
 1885|  23.6k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 1886|  23.6k|#if 1
 1887|  23.6k|	ok &= FLAC__stream_encoder_set_apodization                 (encoder, compression_levels_[value].apodization);
 1888|       |#else
 1889|       |	/* equivalent to -A tukey(0.5) */
 1890|       |	encoder->protected_->num_apodizations = 1;
 1891|       |	encoder->protected_->apodizations[0].type = FLAC__APODIZATION_TUKEY;
 1892|       |	encoder->protected_->apodizations[0].parameters.tukey.p = 0.5;
 1893|       |#endif
 1894|  23.6k|#endif
 1895|  23.6k|	ok &= FLAC__stream_encoder_set_max_lpc_order               (encoder, compression_levels_[value].max_lpc_order);
 1896|  23.6k|	ok &= FLAC__stream_encoder_set_qlp_coeff_precision         (encoder, compression_levels_[value].qlp_coeff_precision);
 1897|  23.6k|	ok &= FLAC__stream_encoder_set_do_qlp_coeff_prec_search    (encoder, compression_levels_[value].do_qlp_coeff_prec_search);
 1898|  23.6k|	ok &= FLAC__stream_encoder_set_do_escape_coding            (encoder, compression_levels_[value].do_escape_coding);
 1899|  23.6k|	ok &= FLAC__stream_encoder_set_do_exhaustive_model_search  (encoder, compression_levels_[value].do_exhaustive_model_search);
 1900|  23.6k|	ok &= FLAC__stream_encoder_set_min_residual_partition_order(encoder, compression_levels_[value].min_residual_partition_order);
 1901|  23.6k|	ok &= FLAC__stream_encoder_set_max_residual_partition_order(encoder, compression_levels_[value].max_residual_partition_order);
 1902|  23.6k|	ok &= FLAC__stream_encoder_set_rice_parameter_search_dist  (encoder, compression_levels_[value].rice_parameter_search_dist);
 1903|  23.6k|	return ok;
 1904|  42.7k|}
FLAC__stream_encoder_set_blocksize:
 1907|  19.4k|{
 1908|  19.4k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 1909|  19.4k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 1910|  19.4k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 1911|  19.4k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1911:5): [True: 9.55k, False: 9.87k]
  ------------------
 1912|  9.55k|		return false;
 1913|  9.87k|	encoder->protected_->blocksize = value;
 1914|       |	return true;
 1915|  19.4k|}
FLAC__stream_encoder_set_do_mid_side_stereo:
 1918|  44.9k|{
 1919|  44.9k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  44.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 44.9k]
  |  |  ------------------
  ------------------
 1920|  44.9k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  44.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 44.9k]
  |  |  ------------------
  ------------------
 1921|  44.9k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  44.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 44.9k]
  |  |  ------------------
  ------------------
 1922|  44.9k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1922:5): [True: 9.55k, False: 35.3k]
  ------------------
 1923|  9.55k|		return false;
 1924|  35.3k|	encoder->protected_->do_mid_side_stereo = value;
 1925|       |	return true;
 1926|  44.9k|}
FLAC__stream_encoder_set_loose_mid_side_stereo:
 1929|  44.9k|{
 1930|  44.9k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  44.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 44.9k]
  |  |  ------------------
  ------------------
 1931|  44.9k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  44.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 44.9k]
  |  |  ------------------
  ------------------
 1932|  44.9k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  44.9k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 44.9k]
  |  |  ------------------
  ------------------
 1933|  44.9k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1933:5): [True: 9.55k, False: 35.3k]
  ------------------
 1934|  9.55k|		return false;
 1935|  35.3k|	encoder->protected_->loose_mid_side_stereo = value;
 1936|       |	return true;
 1937|  44.9k|}
FLAC__stream_encoder_set_apodization:
 1941|  46.2k|{
 1942|  46.2k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  46.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 46.2k]
  |  |  ------------------
  ------------------
 1943|  46.2k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  46.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 46.2k]
  |  |  ------------------
  ------------------
 1944|  46.2k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  46.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 46.2k]
  |  |  ------------------
  ------------------
 1945|  46.2k|	FLAC__ASSERT(0 != specification);
  ------------------
  |  |   38|  46.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 46.2k]
  |  |  ------------------
  ------------------
 1946|  46.2k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (1946:5): [True: 9.55k, False: 36.7k]
  ------------------
 1947|  9.55k|		return false;
 1948|       |#ifdef FLAC__INTEGER_ONLY_LIBRARY
 1949|       |	(void)specification; /* silently ignore since we haven't integerized; will always use a rectangular window */
 1950|       |#else
 1951|  36.7k|	encoder->protected_->num_apodizations = 0;
 1952|  73.6k|	while(1) {
  ------------------
  |  Branch (1952:8): [True: 73.6k, Folded]
  ------------------
 1953|  73.6k|		const char *s = strchr(specification, ';');
 1954|  73.6k|		const size_t n = s? (size_t)(s - specification) : strlen(specification);
  ------------------
  |  Branch (1954:20): [True: 36.9k, False: 36.7k]
  ------------------
 1955|  73.6k|		if     (n==8  && 0 == strncmp("bartlett"     , specification, n))
  ------------------
  |  Branch (1955:11): [True: 2.37k, False: 71.2k]
  |  Branch (1955:20): [True: 558, False: 1.81k]
  ------------------
 1956|    558|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_BARTLETT;
 1957|  73.0k|		else if(n==13 && 0 == strncmp("bartlett_hann", specification, n))
  ------------------
  |  Branch (1957:11): [True: 739, False: 72.3k]
  |  Branch (1957:20): [True: 100, False: 639]
  ------------------
 1958|    100|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_BARTLETT_HANN;
 1959|  72.9k|		else if(n==8  && 0 == strncmp("blackman"     , specification, n))
  ------------------
  |  Branch (1959:11): [True: 1.81k, False: 71.1k]
  |  Branch (1959:20): [True: 121, False: 1.69k]
  ------------------
 1960|    121|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_BLACKMAN;
 1961|  72.8k|		else if(n==26 && 0 == strncmp("blackman_harris_4term_92db", specification, n))
  ------------------
  |  Branch (1961:11): [True: 1.18k, False: 71.6k]
  |  Branch (1961:20): [True: 92, False: 1.09k]
  ------------------
 1962|     92|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_BLACKMAN_HARRIS_4TERM_92DB_SIDELOBE;
 1963|  72.7k|		else if(n==6  && 0 == strncmp("connes"       , specification, n))
  ------------------
  |  Branch (1963:11): [True: 1.35k, False: 71.4k]
  |  Branch (1963:20): [True: 251, False: 1.09k]
  ------------------
 1964|    251|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_CONNES;
 1965|  72.5k|		else if(n==7  && 0 == strncmp("flattop"      , specification, n))
  ------------------
  |  Branch (1965:11): [True: 1.43k, False: 71.0k]
  |  Branch (1965:20): [True: 141, False: 1.29k]
  ------------------
 1966|    141|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_FLATTOP;
 1967|  72.3k|		else if(n>7   && 0 == strncmp("gauss("       , specification, 6)) {
  ------------------
  |  Branch (1967:11): [True: 38.3k, False: 34.0k]
  |  Branch (1967:20): [True: 441, False: 37.8k]
  ------------------
 1968|    441|			FLAC__real stddev = (FLAC__real)strtod(specification+6, 0);
 1969|    441|			if (stddev > 0.0 && stddev <= 0.5) {
  ------------------
  |  Branch (1969:8): [True: 276, False: 165]
  |  Branch (1969:24): [True: 182, False: 94]
  ------------------
 1970|    182|				encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.gauss.stddev = stddev;
 1971|    182|				encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_GAUSS;
 1972|    182|			}
 1973|    441|		}
 1974|  71.9k|		else if(n==7  && 0 == strncmp("hamming"      , specification, n))
  ------------------
  |  Branch (1974:11): [True: 1.29k, False: 70.6k]
  |  Branch (1974:20): [True: 235, False: 1.05k]
  ------------------
 1975|    235|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_HAMMING;
 1976|  71.7k|		else if(n==4  && 0 == strncmp("hann"         , specification, n))
  ------------------
  |  Branch (1976:11): [True: 2.00k, False: 69.7k]
  |  Branch (1976:20): [True: 464, False: 1.54k]
  ------------------
 1977|    464|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_HANN;
 1978|  71.2k|		else if(n==13 && 0 == strncmp("kaiser_bessel", specification, n))
  ------------------
  |  Branch (1978:11): [True: 637, False: 70.6k]
  |  Branch (1978:20): [True: 134, False: 503]
  ------------------
 1979|    134|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_KAISER_BESSEL;
 1980|  71.1k|		else if(n==7  && 0 == strncmp("nuttall"      , specification, n))
  ------------------
  |  Branch (1980:11): [True: 1.05k, False: 70.0k]
  |  Branch (1980:20): [True: 119, False: 938]
  ------------------
 1981|    119|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_NUTTALL;
 1982|  70.9k|		else if(n==9  && 0 == strncmp("rectangle"    , specification, n))
  ------------------
  |  Branch (1982:11): [True: 968, False: 70.0k]
  |  Branch (1982:20): [True: 239, False: 729]
  ------------------
 1983|    239|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_RECTANGLE;
 1984|  70.7k|		else if(n==8  && 0 == strncmp("triangle"     , specification, n))
  ------------------
  |  Branch (1984:11): [True: 1.60k, False: 69.1k]
  |  Branch (1984:20): [True: 511, False: 1.09k]
  ------------------
 1985|    511|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_TRIANGLE;
 1986|  70.2k|		else if(n>7   && 0 == strncmp("tukey("       , specification, 6)) {
  ------------------
  |  Branch (1986:11): [True: 36.9k, False: 33.2k]
  |  Branch (1986:20): [True: 14.3k, False: 22.5k]
  ------------------
 1987|  14.3k|			FLAC__real p = (FLAC__real)strtod(specification+6, 0);
 1988|  14.3k|			if (p >= 0.0 && p <= 1.0) {
  ------------------
  |  Branch (1988:8): [True: 14.3k, False: 67]
  |  Branch (1988:20): [True: 14.2k, False: 92]
  ------------------
 1989|  14.2k|				encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.tukey.p = p;
 1990|  14.2k|				encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_TUKEY;
 1991|  14.2k|			}
 1992|  14.3k|		}
 1993|  55.8k|		else if(n>15   && 0 == strncmp("partial_tukey(", specification, 14)) {
  ------------------
  |  Branch (1993:11): [True: 18.6k, False: 37.2k]
  |  Branch (1993:21): [True: 1.35k, False: 17.2k]
  ------------------
 1994|  1.35k|			FLAC__int32 tukey_parts = (FLAC__int32)strtod(specification+14, 0);
 1995|  1.35k|			const char *si_1 = strchr(specification, '/');
 1996|  1.35k|			FLAC__real overlap = si_1?flac_min((FLAC__real)strtod(si_1+1, 0),0.99f):0.1f;
  ------------------
  |  |   56|  1.35k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (1996:25): [True: 694, False: 661]
  |  Branch (1996:30): [True: 451, False: 243]
  ------------------
 1997|  1.35k|			FLAC__real overlap_units = 1.0f/(1.0f - overlap) - 1.0f;
 1998|  1.35k|			const char *si_2 = strchr((si_1?(si_1+1):specification), '/');
  ------------------
  |  Branch (1998:31): [True: 694, False: 661]
  ------------------
 1999|  1.35k|			FLAC__real tukey_p = si_2?(FLAC__real)strtod(si_2+1, 0):0.2f;
  ------------------
  |  Branch (1999:25): [True: 578, False: 777]
  ------------------
 2000|       |
 2001|  1.35k|			if (tukey_parts <= 1) {
  ------------------
  |  Branch (2001:8): [True: 170, False: 1.18k]
  ------------------
 2002|    170|				encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.tukey.p = tukey_p;
 2003|    170|				encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_TUKEY;
 2004|  1.18k|			}else if (encoder->protected_->num_apodizations + tukey_parts < 32){
  ------------------
  |  Branch (2004:14): [True: 624, False: 561]
  ------------------
 2005|    624|				FLAC__int32 m;
 2006|  5.59k|				for(m = 0; m < tukey_parts; m++){
  ------------------
  |  Branch (2006:16): [True: 4.97k, False: 624]
  ------------------
 2007|  4.97k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.multiple_tukey.p = tukey_p;
 2008|  4.97k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.multiple_tukey.start = m/(tukey_parts+overlap_units);
 2009|  4.97k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.multiple_tukey.end = (m+1+overlap_units)/(tukey_parts+overlap_units);
 2010|  4.97k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_PARTIAL_TUKEY;
 2011|  4.97k|				}
 2012|    624|			}
 2013|  1.35k|		}
 2014|  54.4k|		else if(n>16   && 0 == strncmp("punchout_tukey(", specification, 15)) {
  ------------------
  |  Branch (2014:11): [True: 17.0k, False: 37.4k]
  |  Branch (2014:21): [True: 1.45k, False: 15.6k]
  ------------------
 2015|  1.45k|			FLAC__int32 tukey_parts = (FLAC__int32)strtod(specification+15, 0);
 2016|  1.45k|			const char *si_1 = strchr(specification, '/');
 2017|  1.45k|			FLAC__real overlap = si_1?flac_min((FLAC__real)strtod(si_1+1, 0),0.99f):0.2f;
  ------------------
  |  |   56|  1.45k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (2017:25): [True: 706, False: 747]
  |  Branch (2017:30): [True: 471, False: 235]
  ------------------
 2018|  1.45k|			FLAC__real overlap_units = 1.0f/(1.0f - overlap) - 1.0f;
 2019|  1.45k|			const char *si_2 = strchr((si_1?(si_1+1):specification), '/');
  ------------------
  |  Branch (2019:31): [True: 706, False: 747]
  ------------------
 2020|  1.45k|			FLAC__real tukey_p = si_2?(FLAC__real)strtod(si_2+1, 0):0.2f;
  ------------------
  |  Branch (2020:25): [True: 433, False: 1.02k]
  ------------------
 2021|       |
 2022|  1.45k|			if (tukey_parts <= 1) {
  ------------------
  |  Branch (2022:8): [True: 434, False: 1.01k]
  ------------------
 2023|    434|				encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.tukey.p = tukey_p;
 2024|    434|				encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_TUKEY;
 2025|  1.01k|			}else if (encoder->protected_->num_apodizations + tukey_parts < 32){
  ------------------
  |  Branch (2025:14): [True: 427, False: 592]
  ------------------
 2026|    427|				FLAC__int32 m;
 2027|  6.47k|				for(m = 0; m < tukey_parts; m++){
  ------------------
  |  Branch (2027:16): [True: 6.04k, False: 427]
  ------------------
 2028|  6.04k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.multiple_tukey.p = tukey_p;
 2029|  6.04k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.multiple_tukey.start = m/(tukey_parts+overlap_units);
 2030|  6.04k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.multiple_tukey.end = (m+1+overlap_units)/(tukey_parts+overlap_units);
 2031|  6.04k|					encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_PUNCHOUT_TUKEY;
 2032|  6.04k|				}
 2033|    427|			}
 2034|  1.45k|		}
 2035|  53.0k|		else if(n>17  && 0 == strncmp("subdivide_tukey(", specification, 16)){
  ------------------
  |  Branch (2035:11): [True: 15.3k, False: 37.6k]
  |  Branch (2035:20): [True: 11.9k, False: 3.44k]
  ------------------
 2036|  11.9k|			FLAC__int32 parts = (FLAC__int32)strtod(specification+16, 0);
 2037|  11.9k|			if(parts > 1){
  ------------------
  |  Branch (2037:7): [True: 11.7k, False: 220]
  ------------------
 2038|  11.7k|				const char *si_1 = strchr(specification, '/');
 2039|  11.7k|				FLAC__real p = si_1?(FLAC__real)strtod(si_1+1, 0):5e-1;
  ------------------
  |  Branch (2039:20): [True: 728, False: 10.9k]
  ------------------
 2040|  11.7k|				if(p > 1)
  ------------------
  |  Branch (2040:8): [True: 72, False: 11.6k]
  ------------------
 2041|     72|					p = 1;
 2042|  11.6k|				else if(p < 0)
  ------------------
  |  Branch (2042:13): [True: 105, False: 11.5k]
  ------------------
 2043|    105|					p = 0;
 2044|  11.7k|				encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.subdivide_tukey.parts = parts;
 2045|  11.7k|				encoder->protected_->apodizations[encoder->protected_->num_apodizations].parameters.subdivide_tukey.p = p/parts;
 2046|  11.7k|				encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_SUBDIVIDE_TUKEY;
 2047|  11.7k|			}
 2048|  11.9k|		}
 2049|  41.1k|		else if(n==5  && 0 == strncmp("welch"        , specification, n))
  ------------------
  |  Branch (2049:11): [True: 1.37k, False: 39.7k]
  |  Branch (2049:20): [True: 234, False: 1.14k]
  ------------------
 2050|    234|			encoder->protected_->apodizations[encoder->protected_->num_apodizations++].type = FLAC__APODIZATION_WELCH;
 2051|  73.6k|		if (encoder->protected_->num_apodizations == 32)
  ------------------
  |  Branch (2051:7): [True: 63, False: 73.5k]
  ------------------
 2052|     63|			break;
 2053|  73.5k|		if (s)
  ------------------
  |  Branch (2053:7): [True: 36.9k, False: 36.6k]
  ------------------
 2054|  36.9k|			specification = s+1;
 2055|  36.6k|		else
 2056|  36.6k|			break;
 2057|  73.5k|	}
 2058|  36.7k|	if(encoder->protected_->num_apodizations == 0) {
  ------------------
  |  Branch (2058:5): [True: 10.9k, False: 25.8k]
  ------------------
 2059|  10.9k|		encoder->protected_->num_apodizations = 1;
 2060|  10.9k|		encoder->protected_->apodizations[0].type = FLAC__APODIZATION_TUKEY;
 2061|  10.9k|		encoder->protected_->apodizations[0].parameters.tukey.p = 0.5;
 2062|  10.9k|	}
 2063|  36.7k|#endif
 2064|       |	return true;
 2065|  46.2k|}
FLAC__stream_encoder_set_max_lpc_order:
 2068|  43.3k|{
 2069|  43.3k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  43.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.3k]
  |  |  ------------------
  ------------------
 2070|  43.3k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  43.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.3k]
  |  |  ------------------
  ------------------
 2071|  43.3k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  43.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.3k]
  |  |  ------------------
  ------------------
 2072|  43.3k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2072:5): [True: 9.55k, False: 33.7k]
  ------------------
 2073|  9.55k|		return false;
 2074|  33.7k|	encoder->protected_->max_lpc_order = value;
 2075|       |	return true;
 2076|  43.3k|}
FLAC__stream_encoder_set_qlp_coeff_precision:
 2079|  43.2k|{
 2080|  43.2k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  43.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.2k]
  |  |  ------------------
  ------------------
 2081|  43.2k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  43.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.2k]
  |  |  ------------------
  ------------------
 2082|  43.2k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  43.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.2k]
  |  |  ------------------
  ------------------
 2083|  43.2k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2083:5): [True: 9.55k, False: 33.6k]
  ------------------
 2084|  9.55k|		return false;
 2085|  33.6k|	encoder->protected_->qlp_coeff_precision = value;
 2086|       |	return true;
 2087|  43.2k|}
FLAC__stream_encoder_set_do_qlp_coeff_prec_search:
 2090|  43.4k|{
 2091|  43.4k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  43.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.4k]
  |  |  ------------------
  ------------------
 2092|  43.4k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  43.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.4k]
  |  |  ------------------
  ------------------
 2093|  43.4k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  43.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.4k]
  |  |  ------------------
  ------------------
 2094|  43.4k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2094:5): [True: 9.55k, False: 33.8k]
  ------------------
 2095|  9.55k|		return false;
 2096|  33.8k|	encoder->protected_->do_qlp_coeff_prec_search = value;
 2097|       |	return true;
 2098|  43.4k|}
FLAC__stream_encoder_set_do_escape_coding:
 2101|  43.1k|{
 2102|  43.1k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2103|  43.1k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2104|  43.1k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2105|  43.1k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2105:5): [True: 9.55k, False: 33.6k]
  ------------------
 2106|  9.55k|		return false;
 2107|  33.6k|#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 2108|       |	/* was deprecated since FLAC 1.0.4 (24-Sep-2002), but is needed for
 2109|       |	 * full spec coverage, so this should be reenabled at some point.
 2110|       |	 * For now only enable while fuzzing */
 2111|  33.6k|	encoder->protected_->do_escape_coding = value;
 2112|       |#else
 2113|       |	(void)value;
 2114|       |#endif
 2115|       |	return true;
 2116|  43.1k|}
FLAC__stream_encoder_set_do_exhaustive_model_search:
 2119|  45.1k|{
 2120|  45.1k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  45.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 45.1k]
  |  |  ------------------
  ------------------
 2121|  45.1k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  45.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 45.1k]
  |  |  ------------------
  ------------------
 2122|  45.1k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  45.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 45.1k]
  |  |  ------------------
  ------------------
 2123|  45.1k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2123:5): [True: 9.55k, False: 35.5k]
  ------------------
 2124|  9.55k|		return false;
 2125|  35.5k|	encoder->protected_->do_exhaustive_model_search = value;
 2126|       |	return true;
 2127|  45.1k|}
FLAC__stream_encoder_set_min_residual_partition_order:
 2130|  43.1k|{
 2131|  43.1k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2132|  43.1k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2133|  43.1k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2134|  43.1k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2134:5): [True: 9.55k, False: 33.6k]
  ------------------
 2135|  9.55k|		return false;
 2136|  33.6k|	encoder->protected_->min_residual_partition_order = value;
 2137|       |	return true;
 2138|  43.1k|}
FLAC__stream_encoder_set_max_residual_partition_order:
 2141|  43.1k|{
 2142|  43.1k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2143|  43.1k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2144|  43.1k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2145|  43.1k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2145:5): [True: 9.55k, False: 33.6k]
  ------------------
 2146|  9.55k|		return false;
 2147|  33.6k|	encoder->protected_->max_residual_partition_order = value;
 2148|       |	return true;
 2149|  43.1k|}
FLAC__stream_encoder_set_num_threads:
 2152|  19.4k|{
 2153|  19.4k|#ifdef FLAC__USE_THREADS
 2154|  19.4k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 2155|  19.4k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 2156|  19.4k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 2157|       |
 2158|  19.4k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2158:5): [True: 9.55k, False: 9.85k]
  ------------------
 2159|  9.55k|		return FLAC__STREAM_ENCODER_SET_NUM_THREADS_ALREADY_INITIALIZED;
  ------------------
  |  |  293|  9.55k|#define FLAC__STREAM_ENCODER_SET_NUM_THREADS_ALREADY_INITIALIZED 2
  ------------------
 2160|  9.85k|	if(value > FLAC__STREAM_ENCODER_MAX_THREADS)
  ------------------
  |  |   46|  9.85k|#define FLAC__STREAM_ENCODER_MAX_THREADS 16
  ------------------
  |  Branch (2160:5): [True: 8.64k, False: 1.21k]
  ------------------
 2161|  8.64k|		return FLAC__STREAM_ENCODER_SET_NUM_THREADS_TOO_MANY_THREADS;
  ------------------
  |  |  294|  8.64k|#define FLAC__STREAM_ENCODER_SET_NUM_THREADS_TOO_MANY_THREADS 3
  ------------------
 2162|  1.21k|	if(value == 0)
  ------------------
  |  Branch (2162:5): [True: 366, False: 845]
  ------------------
 2163|    366|		encoder->protected_->num_threads = 1;
 2164|    845|	else
 2165|    845|		encoder->protected_->num_threads = value;
 2166|  1.21k|	return FLAC__STREAM_ENCODER_SET_NUM_THREADS_OK;
  ------------------
  |  |  291|  1.21k|#define FLAC__STREAM_ENCODER_SET_NUM_THREADS_OK 0
  ------------------
 2167|       |#else
 2168|       |	(void)encoder;
 2169|       |	(void)value;
 2170|       |	return FLAC__STREAM_ENCODER_SET_NUM_THREADS_NOT_COMPILED_WITH_MULTITHREADING_ENABLED;
 2171|       |#endif
 2172|  9.85k|}
FLAC__stream_encoder_set_rice_parameter_search_dist:
 2175|  43.1k|{
 2176|  43.1k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2177|  43.1k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2178|  43.1k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  43.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.1k]
  |  |  ------------------
  ------------------
 2179|  43.1k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2179:5): [True: 9.55k, False: 33.5k]
  ------------------
 2180|  9.55k|		return false;
 2181|       |#if 0
 2182|       |	/*@@@ deprecated: */
 2183|       |	encoder->protected_->rice_parameter_search_dist = value;
 2184|       |#else
 2185|  33.5k|	(void)value;
 2186|  33.5k|#endif
 2187|       |	return true;
 2188|  43.1k|}
FLAC__stream_encoder_set_total_samples_estimate:
 2191|  19.5k|{
 2192|  19.5k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
 2193|  19.5k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
 2194|  19.5k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  19.5k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.5k]
  |  |  ------------------
  ------------------
 2195|  19.5k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2195:5): [True: 9.55k, False: 9.97k]
  ------------------
 2196|  9.55k|		return false;
 2197|  9.97k|	value = flac_min(value, (FLAC__U64L(1) << FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN) - 1);
  ------------------
  |  |   56|  9.97k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (2197:10): [True: 697, False: 9.27k]
  ------------------
 2198|  9.97k|	encoder->protected_->total_samples_estimate = value;
 2199|       |	return true;
 2200|  19.5k|}
FLAC__stream_encoder_set_limit_min_bitrate:
 2235|  19.4k|{
 2236|  19.4k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 2237|  19.4k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 2238|  19.4k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  19.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.4k]
  |  |  ------------------
  ------------------
 2239|  19.4k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (2239:5): [True: 9.55k, False: 9.86k]
  ------------------
 2240|  9.55k|		return false;
 2241|  9.86k|	encoder->protected_->limit_min_bitrate = value;
 2242|       |	return true;
 2243|  19.4k|}
FLAC__stream_encoder_get_verify_decoder_state:
 2308|   212k|{
 2309|   212k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
 2310|   212k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
 2311|   212k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|   212k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 212k]
  |  |  ------------------
  ------------------
 2312|   212k|	if(encoder->protected_->verify)
  ------------------
  |  Branch (2312:5): [True: 212k, False: 0]
  ------------------
 2313|   212k|		if(encoder->private_->verify.decoder == NULL)
  ------------------
  |  Branch (2313:6): [True: 0, False: 212k]
  ------------------
 2314|      0|			return FLAC__STREAM_DECODER_MEMORY_ALLOCATION_ERROR;
 2315|   212k|		else
 2316|   212k|			return FLAC__stream_decoder_get_state(encoder->private_->verify.decoder);
 2317|      0|	else
 2318|      0|		return FLAC__STREAM_DECODER_UNINITIALIZED;
 2319|   212k|}
FLAC__stream_encoder_get_verify:
 2354|  9.55k|{
 2355|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2356|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2357|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2358|  9.55k|	return encoder->protected_->verify;
 2359|  9.55k|}
FLAC__stream_encoder_get_streamable_subset:
 2362|  9.55k|{
 2363|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2364|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2365|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2366|  9.55k|	return encoder->protected_->streamable_subset;
 2367|  9.55k|}
FLAC__stream_encoder_get_channels:
 2378|  9.55k|{
 2379|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2380|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2381|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2382|  9.55k|	return encoder->protected_->channels;
 2383|  9.55k|}
FLAC__stream_encoder_get_bits_per_sample:
 2386|   406k|{
 2387|   406k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|   406k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 406k]
  |  |  ------------------
  ------------------
 2388|   406k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|   406k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 406k]
  |  |  ------------------
  ------------------
 2389|   406k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|   406k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 406k]
  |  |  ------------------
  ------------------
 2390|   406k|	return encoder->protected_->bits_per_sample;
 2391|   406k|}
FLAC__stream_encoder_get_sample_rate:
 2394|  9.55k|{
 2395|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2396|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2397|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2398|  9.55k|	return encoder->protected_->sample_rate;
 2399|  9.55k|}
FLAC__stream_encoder_get_blocksize:
 2402|  9.55k|{
 2403|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2404|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2405|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2406|  9.55k|	return encoder->protected_->blocksize;
 2407|  9.55k|}
FLAC__stream_encoder_get_do_mid_side_stereo:
 2410|  9.55k|{
 2411|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2412|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2413|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2414|  9.55k|	return encoder->protected_->do_mid_side_stereo;
 2415|  9.55k|}
FLAC__stream_encoder_get_loose_mid_side_stereo:
 2418|  9.55k|{
 2419|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2420|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2421|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2422|  9.55k|	return encoder->protected_->loose_mid_side_stereo;
 2423|  9.55k|}
FLAC__stream_encoder_get_max_lpc_order:
 2426|  9.55k|{
 2427|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2428|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2429|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2430|  9.55k|	return encoder->protected_->max_lpc_order;
 2431|  9.55k|}
FLAC__stream_encoder_get_qlp_coeff_precision:
 2434|  9.55k|{
 2435|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2436|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2437|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2438|  9.55k|	return encoder->protected_->qlp_coeff_precision;
 2439|  9.55k|}
FLAC__stream_encoder_get_do_qlp_coeff_prec_search:
 2442|  9.55k|{
 2443|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2444|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2445|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2446|  9.55k|	return encoder->protected_->do_qlp_coeff_prec_search;
 2447|  9.55k|}
FLAC__stream_encoder_get_do_escape_coding:
 2450|  9.55k|{
 2451|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2452|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2453|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2454|  9.55k|	return encoder->protected_->do_escape_coding;
 2455|  9.55k|}
FLAC__stream_encoder_get_do_exhaustive_model_search:
 2458|  9.55k|{
 2459|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2460|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2461|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2462|  9.55k|	return encoder->protected_->do_exhaustive_model_search;
 2463|  9.55k|}
FLAC__stream_encoder_get_min_residual_partition_order:
 2466|  9.55k|{
 2467|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2468|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2469|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2470|  9.55k|	return encoder->protected_->min_residual_partition_order;
 2471|  9.55k|}
FLAC__stream_encoder_get_num_threads:
 2474|  9.55k|{
 2475|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2476|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2477|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2478|  9.55k|	return encoder->protected_->num_threads;
 2479|  9.55k|}
FLAC__stream_encoder_get_max_residual_partition_order:
 2482|  9.55k|{
 2483|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2484|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2485|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2486|  9.55k|	return encoder->protected_->max_residual_partition_order;
 2487|  9.55k|}
FLAC__stream_encoder_get_rice_parameter_search_dist:
 2490|  9.55k|{
 2491|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2492|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2493|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2494|  9.55k|	return encoder->protected_->rice_parameter_search_dist;
 2495|  9.55k|}
FLAC__stream_encoder_get_total_samples_estimate:
 2498|  9.55k|{
 2499|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2500|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2501|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2502|  9.55k|	return encoder->protected_->total_samples_estimate;
 2503|  9.55k|}
FLAC__stream_encoder_get_limit_min_bitrate:
 2506|  9.55k|{
 2507|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2508|  9.55k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2509|  9.55k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2510|  9.55k|	return encoder->protected_->limit_min_bitrate;
 2511|  9.55k|}
FLAC__stream_encoder_process_interleaved:
 2571|   189k|{
 2572|   189k|	uint32_t i, j, k, channel;
 2573|   189k|	uint32_t channels;
 2574|   189k|	uint32_t blocksize;
 2575|   189k|	FLAC__int32 sample_max;
 2576|   189k|	FLAC__int32 sample_min;
 2577|       |
 2578|   189k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|   189k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 189k]
  |  |  ------------------
  ------------------
 2579|   189k|	FLAC__ASSERT(0 != encoder->private_);
  ------------------
  |  |   38|   189k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 189k]
  |  |  ------------------
  ------------------
 2580|   189k|	FLAC__ASSERT(0 != encoder->protected_);
  ------------------
  |  |   38|   189k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 189k]
  |  |  ------------------
  ------------------
 2581|       |
 2582|   189k|	channels = encoder->protected_->channels;
 2583|   189k|	blocksize = encoder->protected_->blocksize;
 2584|   189k|	sample_max = INT32_MAX >> (32 - encoder->protected_->bits_per_sample);
 2585|   189k|	sample_min = INT32_MIN >> (32 - encoder->protected_->bits_per_sample);
 2586|       |
 2587|   189k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_OK)
  ------------------
  |  Branch (2587:5): [True: 475, False: 189k]
  ------------------
 2588|    475|		return false;
 2589|       |
 2590|   189k|	j = k = 0;
 2591|   426k|	do {
 2592|   426k|		if(encoder->protected_->verify)
  ------------------
  |  Branch (2592:6): [True: 380k, False: 45.7k]
  ------------------
 2593|   380k|			append_to_verify_fifo_interleaved_(&encoder->private_->verify.input_fifo, buffer, j, channels, flac_min(blocksize+OVERREAD_-encoder->private_->current_sample_number, samples-j));
  ------------------
  |  |   56|   380k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (2593:99): [True: 193k, False: 186k]
  ------------------
 2594|       |
 2595|       |			/* "i <= blocksize" to overread 1 sample; see comment in OVERREAD_ decl */
 2596|  23.8M|		for(i = encoder->private_->current_sample_number; i <= blocksize && j < samples; i++, j++) {
  ------------------
  |  Branch (2596:53): [True: 23.5M, False: 239k]
  |  Branch (2596:71): [True: 23.3M, False: 186k]
  ------------------
 2597|  52.8M|			for(channel = 0; channel < channels; channel++){
  ------------------
  |  Branch (2597:21): [True: 29.4M, False: 23.3M]
  ------------------
 2598|  29.4M|				if(buffer[k] < sample_min || buffer[k] > sample_max){
  ------------------
  |  Branch (2598:8): [True: 3, False: 29.4M]
  |  Branch (2598:34): [True: 81, False: 29.4M]
  ------------------
 2599|     84|					encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 2600|     84|					return false;
 2601|     84|				}
 2602|  29.4M|				encoder->private_->threadtask[0]->integer_signal[channel][i] = buffer[k++];
 2603|  29.4M|			}
 2604|  23.3M|		}
 2605|   426k|		encoder->private_->current_sample_number = i;
 2606|       |		/* we only process if we have a full block + 1 extra sample; final block is always handled by FLAC__stream_encoder_finish() */
 2607|   426k|		if(i > blocksize) {
  ------------------
  |  Branch (2607:6): [True: 239k, False: 186k]
  ------------------
 2608|   239k|			if(!process_frame_(encoder, /*is_last_block=*/false))
  ------------------
  |  Branch (2608:7): [True: 0, False: 239k]
  ------------------
 2609|      0|				return false;
 2610|       |			/* move unprocessed overread samples to beginnings of arrays */
 2611|   239k|			FLAC__ASSERT(i == blocksize+OVERREAD_);
  ------------------
  |  |   38|   239k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 239k]
  |  |  ------------------
  ------------------
 2612|   239k|			FLAC__ASSERT(OVERREAD_ == 1); /* assert we only overread 1 sample which simplifies the rest of the code below */
  ------------------
  |  |   38|   239k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 239k]
  |  |  ------------------
  ------------------
 2613|   541k|			for(channel = 0; channel < channels; channel++)
  ------------------
  |  Branch (2613:21): [True: 302k, False: 239k]
  ------------------
 2614|   302k|				encoder->private_->threadtask[0]->integer_signal[channel][0] = encoder->private_->threadtask[0]->integer_signal[channel][blocksize];
 2615|   239k|			encoder->private_->current_sample_number = 1;
 2616|   239k|		}
 2617|   426k|	} while(j < samples);
  ------------------
  |  Branch (2617:10): [True: 236k, False: 189k]
  ------------------
 2618|       |
 2619|   189k|	return true;
 2620|   189k|}
process_frame_thread_:
 3627|  2.70k|FLAC__thread_return_type process_frame_thread_(void * args) {
 3628|  2.70k|	FLAC__StreamEncoder * encoder = args;
 3629|  2.70k|	uint32_t channel;
 3630|       |
 3631|  2.70k|	FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|  2.70k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3632|  2.70k|	encoder->private_->num_running_threads++;
 3633|  2.70k|	FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  2.70k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3634|       |
 3635|   121k|	while(1) {
  ------------------
  |  Branch (3635:8): [True: 121k, Folded]
  ------------------
 3636|   121k|		FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|   121k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3637|   121k|		if(encoder->private_->finish_work_threads) {
  ------------------
  |  Branch (3637:6): [True: 69, False: 121k]
  ------------------
 3638|     69|			FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|     69|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3639|     69|			return FLAC__thread_default_return_value;
  ------------------
  |  |  117|     69|#define FLAC__thread_default_return_value    NULL
  ------------------
 3640|     69|		}
 3641|       |		/* The code below pauses and restarts threads if it is noticed threads are often put too sleep
 3642|       |		 * because of a lack of work. This reduces overhead when too many threads are active. The
 3643|       |		 * overcommited indicator is increased when no tasks are available, decreased when more tasks
 3644|       |		 * are available then threads are running, and reset when a thread is woken up or put to sleep */
 3645|   121k|		if(encoder->private_->num_available_threadtasks == 0)
  ------------------
  |  Branch (3645:6): [True: 28.8k, False: 92.8k]
  ------------------
 3646|  28.8k|			encoder->private_->overcommitted_indicator++;
 3647|  92.8k|		else if(encoder->private_->num_available_threadtasks > encoder->private_->num_running_threads)
  ------------------
  |  Branch (3647:11): [True: 33.5k, False: 59.3k]
  ------------------
 3648|  33.5k|			encoder->private_->overcommitted_indicator--;
 3649|   121k|		if(encoder->private_->overcommitted_indicator < -20) {
  ------------------
  |  Branch (3649:6): [True: 965, False: 120k]
  ------------------
 3650|    965|			encoder->private_->overcommitted_indicator = 0;
 3651|    965|			FLAC__cnd_signal(&encoder->private_->cond_wake_up_thread);
  ------------------
  |  |  112|    965|#define FLAC__cnd_signal(cv)                 pthread_cond_signal(cv)
  ------------------
 3652|    965|		}
 3653|   120k|		else if(encoder->private_->overcommitted_indicator > 20 && encoder->private_->num_running_threads > 2) {
  ------------------
  |  Branch (3653:11): [True: 783, False: 120k]
  |  Branch (3653:62): [True: 706, False: 77]
  ------------------
 3654|    706|			encoder->private_->overcommitted_indicator = 0;
 3655|    706|			encoder->private_->num_running_threads--;
 3656|    706|			FLAC__cnd_wait(&encoder->private_->cond_wake_up_thread, &encoder->private_->mutex_work_queue);
  ------------------
  |  |  113|    706|#define FLAC__cnd_wait(cv, mutex)            pthread_cond_wait(cv, mutex)
  ------------------
 3657|    706|			encoder->private_->num_running_threads++;
 3658|    706|		}
 3659|   160k|		while(encoder->private_->num_available_threadtasks == 0 && (encoder->private_->md5_active || encoder->private_->md5_fifo.tail == 0)) {
  ------------------
  |  Branch (3659:9): [True: 44.2k, False: 115k]
  |  Branch (3659:63): [True: 15.0k, False: 29.2k]
  |  Branch (3659:96): [True: 26.0k, False: 3.15k]
  ------------------
 3660|  41.0k|			if(encoder->private_->finish_work_threads) {
  ------------------
  |  Branch (3660:7): [True: 2.63k, False: 38.4k]
  ------------------
 3661|  2.63k|				FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  2.63k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3662|  2.63k|				return FLAC__thread_default_return_value;
  ------------------
  |  |  117|  2.63k|#define FLAC__thread_default_return_value    NULL
  ------------------
 3663|  2.63k|			}
 3664|  38.4k|			FLAC__cnd_wait(&encoder->private_->cond_work_available, &encoder->private_->mutex_work_queue);
  ------------------
  |  |  113|  38.4k|#define FLAC__cnd_wait(cv, mutex)            pthread_cond_wait(cv, mutex)
  ------------------
 3665|  38.4k|		}
 3666|   119k|		if(encoder->protected_->do_md5 && !encoder->private_->md5_active && encoder->private_->md5_fifo.tail > 0) {
  ------------------
  |  Branch (3666:6): [True: 119k, False: 18.4E]
  |  Branch (3666:37): [True: 88.9k, False: 30.2k]
  |  Branch (3666:71): [True: 33.7k, False: 55.2k]
  ------------------
 3667|  33.7k|			uint32_t length = 0;
 3668|  33.7k|			encoder->private_->md5_active = true;
 3669|  79.5k|			while(encoder->private_->md5_fifo.tail > 0) {
  ------------------
  |  Branch (3669:10): [True: 45.7k, False: 33.7k]
  ------------------
 3670|  45.7k|				length = encoder->private_->md5_fifo.tail;
 3671|  45.7k|				FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  45.7k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3672|  45.7k|				if(!FLAC__MD5Accumulate(&encoder->private_->md5context, (const FLAC__int32 * const *)encoder->private_->md5_fifo.data, encoder->protected_->channels, length, (encoder->protected_->bits_per_sample+7) / 8)) {
  ------------------
  |  Branch (3672:8): [True: 0, False: 45.7k]
  ------------------
 3673|      0|					encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 3674|      0|					return FLAC__thread_default_return_value;
  ------------------
  |  |  117|      0|#define FLAC__thread_default_return_value    NULL
  ------------------
 3675|      0|				}
 3676|  45.7k|				FLAC__mtx_lock(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  105|  45.7k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3677|  93.8k|				for(channel = 0; channel < encoder->protected_->channels; channel++)
  ------------------
  |  Branch (3677:22): [True: 48.0k, False: 45.7k]
  ------------------
 3678|  48.0k|					memmove(&encoder->private_->md5_fifo.data[channel][0], &encoder->private_->md5_fifo.data[channel][length], (encoder->private_->md5_fifo.tail-length) * sizeof(encoder->private_->md5_fifo.data[0][0]));
 3679|  45.7k|				FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|  45.7k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3680|  45.7k|				encoder->private_->md5_fifo.tail -= length;
 3681|  45.7k|				FLAC__cnd_signal(&encoder->private_->cond_md5_emptied);
  ------------------
  |  |  112|  45.7k|#define FLAC__cnd_signal(cv)                 pthread_cond_signal(cv)
  ------------------
 3682|  45.7k|				FLAC__mtx_unlock(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  106|  45.7k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3683|  45.7k|			}
 3684|  33.7k|			encoder->private_->md5_active = false;
 3685|  33.7k|			FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  33.7k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3686|  33.7k|		}
 3687|  85.4k|		else if(encoder->private_->num_available_threadtasks > 0) {
  ------------------
  |  Branch (3687:11): [True: 85.4k, False: 18.4E]
  ------------------
 3688|  85.4k|			FLAC__StreamEncoderThreadTask * task = NULL;
 3689|  85.4k|			task = encoder->private_->threadtask[encoder->private_->next_threadtask];
 3690|  85.4k|			encoder->private_->num_available_threadtasks--;
 3691|  85.4k|			encoder->private_->next_threadtask++;
 3692|  85.4k|			if(encoder->private_->next_threadtask == encoder->private_->num_threadtasks)
  ------------------
  |  Branch (3692:7): [True: 7.47k, False: 78.0k]
  ------------------
 3693|  7.47k|				encoder->private_->next_threadtask = 1;
 3694|  85.4k|			FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  85.4k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3695|  85.4k|			FLAC__mtx_lock(&task->mutex_this_task);
  ------------------
  |  |  105|  85.4k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3696|  85.4k|			if(!process_frame_thread_inner_(encoder, task))
  ------------------
  |  Branch (3696:7): [True: 0, False: 85.4k]
  ------------------
 3697|      0|				return FLAC__thread_default_return_value;
  ------------------
  |  |  117|      0|#define FLAC__thread_default_return_value    NULL
  ------------------
 3698|  85.4k|		}
 3699|  18.4E|		else {
 3700|  18.4E|			FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  18.4E|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3701|  18.4E|		}
 3702|   119k|	}
 3703|  2.70k|}
process_frame_thread_inner_:
 3705|  96.1k|FLAC__bool process_frame_thread_inner_(FLAC__StreamEncoder * encoder, FLAC__StreamEncoderThreadTask * task) {
 3706|  96.1k|	FLAC__bool ok = true;
 3707|  96.1k|	FLAC__uint16 crc;
 3708|       |
 3709|       |	/*
 3710|       |	 * Process the frame header and subframes into the frame bitbuffer
 3711|       |	 */
 3712|  96.1k|	if(ok && !process_subframes_(encoder, task)) {
  ------------------
  |  Branch (3712:5): [True: 96.1k, False: 12]
  |  Branch (3712:11): [True: 0, False: 96.1k]
  ------------------
 3713|       |		/* the above function sets the state for us in case of an error */
 3714|      0|		ok = false;
 3715|      0|	}
 3716|       |
 3717|       |	/*
 3718|       |	 * Zero-pad the frame to a byte_boundary
 3719|       |	 */
 3720|  96.1k|	if(ok && !FLAC__bitwriter_zero_pad_to_byte_boundary(task->frame)) {
  ------------------
  |  Branch (3720:5): [True: 95.9k, False: 286]
  |  Branch (3720:11): [True: 0, False: 95.9k]
  ------------------
 3721|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 3722|      0|		ok = false;
 3723|      0|	}
 3724|       |
 3725|       |	/*
 3726|       |	 * CRC-16 the whole thing
 3727|       |	 */
 3728|  96.1k|	FLAC__ASSERT(!ok || FLAC__bitwriter_is_byte_aligned(task->frame));
  ------------------
  |  |   38|   191k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 419, False: 95.7k]
  |  |  |  Branch (38:30): [True: 95.7k, False: 0]
  |  |  ------------------
  ------------------
 3729|  96.1k|	if(
 3730|  96.1k|		ok &&
  ------------------
  |  Branch (3730:3): [True: 95.7k, False: 400]
  ------------------
 3731|  95.7k|		(
 3732|  95.7k|			!FLAC__bitwriter_get_write_crc16(task->frame, &crc) ||
  ------------------
  |  Branch (3732:4): [True: 18.4E, False: 95.8k]
  ------------------
 3733|  95.8k|			!FLAC__bitwriter_write_raw_uint32(task->frame, crc, FLAC__FRAME_FOOTER_CRC_LEN)
  ------------------
  |  Branch (3733:4): [True: 110, False: 95.6k]
  ------------------
 3734|  95.7k|		)
 3735|  96.1k|	) {
 3736|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 3737|      0|		ok = false;
 3738|      0|	}
 3739|  96.1k|	task->returnvalue = ok;
 3740|  96.1k|	task->task_done = true;
 3741|  96.1k|	FLAC__cnd_signal(&task->cond_task_done);
  ------------------
  |  |  112|  96.1k|#define FLAC__cnd_signal(cv)                 pthread_cond_signal(cv)
  ------------------
 3742|  96.1k|	FLAC__mtx_unlock(&task->mutex_this_task);
  ------------------
  |  |  106|  96.1k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3743|       |	return true;
 3744|  96.1k|}
stream_encoder.c:init_stream_internal_:
  717|  9.81k|{
  718|  9.81k|	uint32_t i, t;
  719|  9.81k|	FLAC__bool metadata_has_seektable, metadata_has_vorbis_comment, metadata_picture_has_type1, metadata_picture_has_type2;
  720|       |
  721|  9.81k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.81k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.81k]
  |  |  ------------------
  ------------------
  722|       |
  723|  9.81k|	if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
  ------------------
  |  Branch (723:5): [True: 0, False: 9.81k]
  ------------------
  724|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ALREADY_INITIALIZED;
  725|       |
  726|  9.81k|	if(FLAC__HAS_OGG == 0 && is_ogg)
  ------------------
  |  |   45|  9.81k|#define FLAC__HAS_OGG 1
  ------------------
  |  Branch (726:5): [Folded, False: 9.81k]
  |  Branch (726:27): [True: 0, False: 0]
  ------------------
  727|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_UNSUPPORTED_CONTAINER;
  728|       |
  729|  9.81k|	if(0 == write_callback || (seek_callback && 0 == tell_callback))
  ------------------
  |  Branch (729:5): [True: 0, False: 9.81k]
  |  Branch (729:29): [True: 9.81k, False: 0]
  |  Branch (729:46): [True: 0, False: 9.81k]
  ------------------
  730|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS;
  731|       |
  732|  9.81k|	if(encoder->protected_->channels == 0 || encoder->protected_->channels > FLAC__MAX_CHANNELS)
  ------------------
  |  |  106|  9.81k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (732:5): [True: 3, False: 9.81k]
  |  Branch (732:43): [True: 12, False: 9.80k]
  ------------------
  733|     15|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_NUMBER_OF_CHANNELS;
  734|       |
  735|  9.80k|	if(encoder->protected_->channels != 2) {
  ------------------
  |  Branch (735:5): [True: 6.68k, False: 3.11k]
  ------------------
  736|  6.68k|		encoder->protected_->do_mid_side_stereo = false;
  737|  6.68k|		encoder->protected_->loose_mid_side_stereo = false;
  738|  6.68k|	}
  739|  3.11k|	else if(!encoder->protected_->do_mid_side_stereo)
  ------------------
  |  Branch (739:10): [True: 94, False: 3.02k]
  ------------------
  740|     94|		encoder->protected_->loose_mid_side_stereo = false;
  741|       |
  742|  9.80k|	if(encoder->protected_->bits_per_sample < FLAC__MIN_BITS_PER_SAMPLE || encoder->protected_->bits_per_sample > FLAC__MAX_BITS_PER_SAMPLE)
  ------------------
  |  |  109|  19.6k|#define FLAC__MIN_BITS_PER_SAMPLE (4u)
  ------------------
              	if(encoder->protected_->bits_per_sample < FLAC__MIN_BITS_PER_SAMPLE || encoder->protected_->bits_per_sample > FLAC__MAX_BITS_PER_SAMPLE)
  ------------------
  |  |  112|  9.79k|#define FLAC__MAX_BITS_PER_SAMPLE (32u)
  ------------------
  |  Branch (742:5): [True: 3, False: 9.79k]
  |  Branch (742:73): [True: 7, False: 9.79k]
  ------------------
  743|     10|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BITS_PER_SAMPLE;
  744|       |
  745|  9.79k|	if(!FLAC__format_sample_rate_is_valid(encoder->protected_->sample_rate))
  ------------------
  |  Branch (745:5): [True: 30, False: 9.76k]
  ------------------
  746|     30|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_SAMPLE_RATE;
  747|       |
  748|  9.76k|	if(encoder->protected_->blocksize == 0) {
  ------------------
  |  Branch (748:5): [True: 723, False: 9.03k]
  ------------------
  749|    723|		if(encoder->protected_->max_lpc_order == 0)
  ------------------
  |  Branch (749:6): [True: 131, False: 592]
  ------------------
  750|    131|			encoder->protected_->blocksize = 1152;
  751|    592|		else
  752|    592|			encoder->protected_->blocksize = 4096;
  753|    723|	}
  754|       |
  755|  9.76k|	if(encoder->protected_->blocksize < FLAC__MIN_BLOCK_SIZE || encoder->protected_->blocksize > FLAC__MAX_BLOCK_SIZE)
  ------------------
  |  |   96|  19.5k|#define FLAC__MIN_BLOCK_SIZE (16u)
  ------------------
              	if(encoder->protected_->blocksize < FLAC__MIN_BLOCK_SIZE || encoder->protected_->blocksize > FLAC__MAX_BLOCK_SIZE)
  ------------------
  |  |   99|  9.75k|#define FLAC__MAX_BLOCK_SIZE (65535u)
  ------------------
  |  Branch (755:5): [True: 3, False: 9.75k]
  |  Branch (755:62): [True: 0, False: 9.75k]
  ------------------
  756|      3|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_BLOCK_SIZE;
  757|       |
  758|  9.75k|	if(encoder->protected_->max_lpc_order > FLAC__MAX_LPC_ORDER)
  ------------------
  |  |  128|  9.75k|#define FLAC__MAX_LPC_ORDER (32u)
  ------------------
  |  Branch (758:5): [True: 4, False: 9.75k]
  ------------------
  759|      4|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_MAX_LPC_ORDER;
  760|       |
  761|  9.75k|	if(encoder->protected_->blocksize < encoder->protected_->max_lpc_order)
  ------------------
  |  Branch (761:5): [True: 1, False: 9.75k]
  ------------------
  762|      1|		return FLAC__STREAM_ENCODER_INIT_STATUS_BLOCK_SIZE_TOO_SMALL_FOR_LPC_ORDER;
  763|       |
  764|  9.75k|	if(encoder->protected_->qlp_coeff_precision == 0) {
  ------------------
  |  Branch (764:5): [True: 7.21k, False: 2.53k]
  ------------------
  765|  7.21k|		if(encoder->protected_->bits_per_sample < 16) {
  ------------------
  |  Branch (765:6): [True: 615, False: 6.60k]
  ------------------
  766|       |			/* @@@ need some data about how to set this here w.r.t. blocksize and sample rate */
  767|       |			/* @@@ until then we'll make a guess */
  768|    615|			encoder->protected_->qlp_coeff_precision = flac_max(FLAC__MIN_QLP_COEFF_PRECISION, 2 + encoder->protected_->bits_per_sample / 2);
  ------------------
  |  |   55|    615|#define flac_max(a,b) MAX(a,b)
  ------------------
  |  Branch (768:47): [True: 181, False: 434]
  ------------------
  769|    615|		}
  770|  6.60k|		else if(encoder->protected_->bits_per_sample == 16) {
  ------------------
  |  Branch (770:11): [True: 568, False: 6.03k]
  ------------------
  771|    568|			if(encoder->protected_->blocksize <= 192)
  ------------------
  |  Branch (771:7): [True: 208, False: 360]
  ------------------
  772|    208|				encoder->protected_->qlp_coeff_precision = 7;
  773|    360|			else if(encoder->protected_->blocksize <= 384)
  ------------------
  |  Branch (773:12): [True: 23, False: 337]
  ------------------
  774|     23|				encoder->protected_->qlp_coeff_precision = 8;
  775|    337|			else if(encoder->protected_->blocksize <= 576)
  ------------------
  |  Branch (775:12): [True: 16, False: 321]
  ------------------
  776|     16|				encoder->protected_->qlp_coeff_precision = 9;
  777|    321|			else if(encoder->protected_->blocksize <= 1152)
  ------------------
  |  Branch (777:12): [True: 32, False: 289]
  ------------------
  778|     32|				encoder->protected_->qlp_coeff_precision = 10;
  779|    289|			else if(encoder->protected_->blocksize <= 2304)
  ------------------
  |  Branch (779:12): [True: 17, False: 272]
  ------------------
  780|     17|				encoder->protected_->qlp_coeff_precision = 11;
  781|    272|			else if(encoder->protected_->blocksize <= 4608)
  ------------------
  |  Branch (781:12): [True: 77, False: 195]
  ------------------
  782|     77|				encoder->protected_->qlp_coeff_precision = 12;
  783|    195|			else
  784|    195|				encoder->protected_->qlp_coeff_precision = 13;
  785|    568|		}
  786|  6.03k|		else {
  787|  6.03k|			if(encoder->protected_->blocksize <= 384)
  ------------------
  |  Branch (787:7): [True: 2.13k, False: 3.89k]
  ------------------
  788|  2.13k|				encoder->protected_->qlp_coeff_precision = FLAC__MAX_QLP_COEFF_PRECISION-2;
  ------------------
  |  |  142|  2.13k|#define FLAC__MAX_QLP_COEFF_PRECISION (15u)
  ------------------
  789|  3.89k|			else if(encoder->protected_->blocksize <= 1152)
  ------------------
  |  Branch (789:12): [True: 270, False: 3.62k]
  ------------------
  790|    270|				encoder->protected_->qlp_coeff_precision = FLAC__MAX_QLP_COEFF_PRECISION-1;
  ------------------
  |  |  142|    270|#define FLAC__MAX_QLP_COEFF_PRECISION (15u)
  ------------------
  791|  3.62k|			else
  792|  3.62k|				encoder->protected_->qlp_coeff_precision = FLAC__MAX_QLP_COEFF_PRECISION;
  ------------------
  |  |  142|  3.62k|#define FLAC__MAX_QLP_COEFF_PRECISION (15u)
  ------------------
  793|  6.03k|		}
  794|  7.21k|		FLAC__ASSERT(encoder->protected_->qlp_coeff_precision <= FLAC__MAX_QLP_COEFF_PRECISION);
  ------------------
  |  |   38|  7.21k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 7.21k]
  |  |  ------------------
  ------------------
  795|  7.21k|	}
  796|  2.53k|	else if(encoder->protected_->qlp_coeff_precision < FLAC__MIN_QLP_COEFF_PRECISION || encoder->protected_->qlp_coeff_precision > FLAC__MAX_QLP_COEFF_PRECISION)
  ------------------
  |  |  137|  5.07k|#define FLAC__MIN_QLP_COEFF_PRECISION (5u)
  ------------------
              	else if(encoder->protected_->qlp_coeff_precision < FLAC__MIN_QLP_COEFF_PRECISION || encoder->protected_->qlp_coeff_precision > FLAC__MAX_QLP_COEFF_PRECISION)
  ------------------
  |  |  142|  2.53k|#define FLAC__MAX_QLP_COEFF_PRECISION (15u)
  ------------------
  |  Branch (796:10): [True: 1, False: 2.53k]
  |  Branch (796:86): [True: 57, False: 2.47k]
  ------------------
  797|     58|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_QLP_COEFF_PRECISION;
  798|       |
  799|  9.69k|	if(encoder->protected_->streamable_subset) {
  ------------------
  |  Branch (799:5): [True: 695, False: 8.99k]
  ------------------
  800|    695|		if(!FLAC__format_blocksize_is_subset(encoder->protected_->blocksize, encoder->protected_->sample_rate))
  ------------------
  |  Branch (800:6): [True: 18, False: 677]
  ------------------
  801|     18|			return FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE;
  802|    677|		if(!FLAC__format_sample_rate_is_subset(encoder->protected_->sample_rate))
  ------------------
  |  Branch (802:6): [True: 42, False: 635]
  ------------------
  803|     42|			return FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE;
  804|    635|		if(
  805|    635|			encoder->protected_->bits_per_sample != 8 &&
  ------------------
  |  Branch (805:4): [True: 597, False: 38]
  ------------------
  806|    597|			encoder->protected_->bits_per_sample != 12 &&
  ------------------
  |  Branch (806:4): [True: 591, False: 6]
  ------------------
  807|    591|			encoder->protected_->bits_per_sample != 16 &&
  ------------------
  |  Branch (807:4): [True: 492, False: 99]
  ------------------
  808|    492|			encoder->protected_->bits_per_sample != 20 &&
  ------------------
  |  Branch (808:4): [True: 486, False: 6]
  ------------------
  809|    486|			encoder->protected_->bits_per_sample != 24 &&
  ------------------
  |  Branch (809:4): [True: 442, False: 44]
  ------------------
  810|    442|			encoder->protected_->bits_per_sample != 32
  ------------------
  |  Branch (810:4): [True: 16, False: 426]
  ------------------
  811|    635|		)
  812|     16|			return FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE;
  813|    619|		if(encoder->protected_->max_residual_partition_order > FLAC__SUBSET_MAX_RICE_PARTITION_ORDER)
  ------------------
  |  |  151|    619|#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER (8u)
  ------------------
  |  Branch (813:6): [True: 60, False: 559]
  ------------------
  814|     60|			return FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE;
  815|    559|		if(
  816|    559|			encoder->protected_->sample_rate <= 48000 &&
  ------------------
  |  Branch (816:4): [True: 235, False: 324]
  ------------------
  817|    235|			(
  818|    235|				encoder->protected_->blocksize > FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ ||
  ------------------
  |  |  103|    470|#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ (4608u)
  ------------------
  |  Branch (818:5): [True: 0, False: 235]
  ------------------
  819|    235|				encoder->protected_->max_lpc_order > FLAC__SUBSET_MAX_LPC_ORDER_48000HZ
  ------------------
  |  |  132|    235|#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ (12u)
  ------------------
  |  Branch (819:5): [True: 5, False: 230]
  ------------------
  820|    235|			)
  821|    559|		) {
  822|      5|			return FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE;
  823|      5|		}
  824|    559|	}
  825|       |
  826|  9.55k|	if(encoder->protected_->max_residual_partition_order >= (1u << FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN))
  ------------------
  |  Branch (826:5): [True: 6.88k, False: 2.67k]
  ------------------
  827|  6.88k|		encoder->protected_->max_residual_partition_order = (1u << FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN) - 1;
  828|  9.55k|	if(encoder->protected_->min_residual_partition_order >= encoder->protected_->max_residual_partition_order)
  ------------------
  |  Branch (828:5): [True: 8.72k, False: 826]
  ------------------
  829|  8.72k|		encoder->protected_->min_residual_partition_order = encoder->protected_->max_residual_partition_order;
  830|       |
  831|  9.55k|#if FLAC__HAS_OGG
  832|       |	/* drop any seektable for ogg */
  833|  9.55k|	if(is_ogg && 0 != encoder->protected_->metadata && encoder->protected_->num_metadata_blocks > 0) {
  ------------------
  |  Branch (833:5): [True: 2.98k, False: 6.57k]
  |  Branch (833:15): [True: 0, False: 2.98k]
  |  Branch (833:53): [True: 0, False: 0]
  ------------------
  834|      0|		uint32_t i1;
  835|      0|		for(i1 = 0; i1 < encoder->protected_->num_metadata_blocks; i1++) {
  ------------------
  |  Branch (835:15): [True: 0, False: 0]
  ------------------
  836|      0|			if(0 != encoder->protected_->metadata[i1] && encoder->protected_->metadata[i1]->type == FLAC__METADATA_TYPE_SEEKTABLE) {
  ------------------
  |  Branch (836:7): [True: 0, False: 0]
  |  Branch (836:49): [True: 0, False: 0]
  ------------------
  837|      0|				encoder->protected_->num_metadata_blocks--;
  838|      0|				for( ; i1 < encoder->protected_->num_metadata_blocks; i1++)
  ------------------
  |  Branch (838:12): [True: 0, False: 0]
  ------------------
  839|      0|					encoder->protected_->metadata[i1] = encoder->protected_->metadata[i1+1];
  840|      0|				break;
  841|      0|			}
  842|      0|		}
  843|      0|	}
  844|       |	/* reorder metadata if necessary to ensure that any VORBIS_COMMENT is the first, according to the mapping spec */
  845|  9.55k|	if(is_ogg && 0 != encoder->protected_->metadata && encoder->protected_->num_metadata_blocks > 1) {
  ------------------
  |  Branch (845:5): [True: 2.98k, False: 6.57k]
  |  Branch (845:15): [True: 0, False: 2.98k]
  |  Branch (845:53): [True: 0, False: 0]
  ------------------
  846|      0|		uint32_t i1;
  847|      0|		for(i1 = 1; i1 < encoder->protected_->num_metadata_blocks; i1++) {
  ------------------
  |  Branch (847:15): [True: 0, False: 0]
  ------------------
  848|      0|			if(0 != encoder->protected_->metadata[i1] && encoder->protected_->metadata[i1]->type == FLAC__METADATA_TYPE_VORBIS_COMMENT) {
  ------------------
  |  Branch (848:7): [True: 0, False: 0]
  |  Branch (848:49): [True: 0, False: 0]
  ------------------
  849|      0|				FLAC__StreamMetadata *vc = encoder->protected_->metadata[i1];
  850|      0|				for( ; i1 > 0; i1--)
  ------------------
  |  Branch (850:12): [True: 0, False: 0]
  ------------------
  851|      0|					encoder->protected_->metadata[i1] = encoder->protected_->metadata[i1-1];
  852|      0|				encoder->protected_->metadata[0] = vc;
  853|      0|				break;
  854|      0|			}
  855|      0|		}
  856|      0|	}
  857|  9.55k|#endif
  858|       |	/* keep track of any SEEKTABLE block */
  859|  9.55k|	if(0 != encoder->protected_->metadata && encoder->protected_->num_metadata_blocks > 0) {
  ------------------
  |  Branch (859:5): [True: 0, False: 9.55k]
  |  Branch (859:43): [True: 0, False: 0]
  ------------------
  860|      0|		uint32_t i2;
  861|      0|		for(i2 = 0; i2 < encoder->protected_->num_metadata_blocks; i2++) {
  ------------------
  |  Branch (861:15): [True: 0, False: 0]
  ------------------
  862|      0|			if(0 != encoder->protected_->metadata[i2] && encoder->protected_->metadata[i2]->type == FLAC__METADATA_TYPE_SEEKTABLE) {
  ------------------
  |  Branch (862:7): [True: 0, False: 0]
  |  Branch (862:49): [True: 0, False: 0]
  ------------------
  863|      0|				encoder->private_->seek_table = &encoder->protected_->metadata[i2]->data.seek_table;
  864|      0|				break; /* take only the first one */
  865|      0|			}
  866|      0|		}
  867|      0|	}
  868|       |
  869|       |	/* validate metadata */
  870|  9.55k|	if(0 == encoder->protected_->metadata && encoder->protected_->num_metadata_blocks > 0)
  ------------------
  |  Branch (870:5): [True: 9.55k, False: 0]
  |  Branch (870:43): [True: 0, False: 9.55k]
  ------------------
  871|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  872|  9.55k|	metadata_has_seektable = false;
  873|  9.55k|	metadata_has_vorbis_comment = false;
  874|  9.55k|	metadata_picture_has_type1 = false;
  875|  9.55k|	metadata_picture_has_type2 = false;
  876|  9.55k|	for(i = 0; i < encoder->protected_->num_metadata_blocks; i++) {
  ------------------
  |  Branch (876:13): [True: 0, False: 9.55k]
  ------------------
  877|      0|		const FLAC__StreamMetadata *m = encoder->protected_->metadata[i];
  878|      0|		if(m->type == FLAC__METADATA_TYPE_STREAMINFO)
  ------------------
  |  Branch (878:6): [True: 0, False: 0]
  ------------------
  879|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  880|      0|		else if(m->type == FLAC__METADATA_TYPE_SEEKTABLE) {
  ------------------
  |  Branch (880:11): [True: 0, False: 0]
  ------------------
  881|      0|			if(metadata_has_seektable) /* only one is allowed */
  ------------------
  |  Branch (881:7): [True: 0, False: 0]
  ------------------
  882|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  883|      0|			metadata_has_seektable = true;
  884|      0|			if(!FLAC__format_seektable_is_legal(&m->data.seek_table))
  ------------------
  |  Branch (884:7): [True: 0, False: 0]
  ------------------
  885|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  886|      0|		}
  887|      0|		else if(m->type == FLAC__METADATA_TYPE_VORBIS_COMMENT) {
  ------------------
  |  Branch (887:11): [True: 0, False: 0]
  ------------------
  888|      0|			if(metadata_has_vorbis_comment) /* only one is allowed */
  ------------------
  |  Branch (888:7): [True: 0, False: 0]
  ------------------
  889|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  890|      0|			metadata_has_vorbis_comment = true;
  891|      0|		}
  892|      0|		else if(m->type == FLAC__METADATA_TYPE_CUESHEET) {
  ------------------
  |  Branch (892:11): [True: 0, False: 0]
  ------------------
  893|      0|			if(!FLAC__format_cuesheet_is_legal(&m->data.cue_sheet, m->data.cue_sheet.is_cd, /*violation=*/0))
  ------------------
  |  Branch (893:7): [True: 0, False: 0]
  ------------------
  894|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  895|      0|		}
  896|      0|		else if(m->type == FLAC__METADATA_TYPE_PICTURE) {
  ------------------
  |  Branch (896:11): [True: 0, False: 0]
  ------------------
  897|      0|			if(!FLAC__format_picture_is_legal(&m->data.picture, /*violation=*/0))
  ------------------
  |  Branch (897:7): [True: 0, False: 0]
  ------------------
  898|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  899|      0|			if(m->data.picture.type == FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD) {
  ------------------
  |  Branch (899:7): [True: 0, False: 0]
  ------------------
  900|      0|				if(metadata_picture_has_type1) /* there should only be 1 per stream */
  ------------------
  |  Branch (900:8): [True: 0, False: 0]
  ------------------
  901|      0|					return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  902|      0|				metadata_picture_has_type1 = true;
  903|       |				/* standard icon must be 32x32 pixel PNG */
  904|      0|				if(
  905|      0|					m->data.picture.type == FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD &&
  ------------------
  |  Branch (905:6): [True: 0, False: 0]
  ------------------
  906|      0|					(
  907|      0|						(strcmp(m->data.picture.mime_type, "image/png") && strcmp(m->data.picture.mime_type, "-->")) ||
  ------------------
  |  Branch (907:8): [True: 0, False: 0]
  |  Branch (907:58): [True: 0, False: 0]
  ------------------
  908|      0|						m->data.picture.width != 32 ||
  ------------------
  |  Branch (908:7): [True: 0, False: 0]
  ------------------
  909|      0|						m->data.picture.height != 32
  ------------------
  |  Branch (909:7): [True: 0, False: 0]
  ------------------
  910|      0|					)
  911|      0|				)
  912|      0|					return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  913|      0|			}
  914|      0|			else if(m->data.picture.type == FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON) {
  ------------------
  |  Branch (914:12): [True: 0, False: 0]
  ------------------
  915|      0|				if(metadata_picture_has_type2) /* there should only be 1 per stream */
  ------------------
  |  Branch (915:8): [True: 0, False: 0]
  ------------------
  916|      0|					return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_METADATA;
  917|      0|				metadata_picture_has_type2 = true;
  918|      0|			}
  919|      0|		}
  920|      0|	}
  921|       |
  922|  9.55k|	encoder->private_->input_capacity = 0;
  923|  9.55k|	encoder->private_->current_sample_number = 0;
  924|  9.55k|	encoder->private_->current_frame_number = 0;
  925|       |
  926|       |	/*
  927|       |	 * get the CPU info and set the function pointers
  928|       |	 */
  929|  9.55k|	FLAC__cpu_info(&encoder->private_->cpuinfo);
  930|       |	/* remove cpu info as requested by
  931|       |	 * FLAC__stream_encoder_disable_instruction_set */
  932|  9.55k|	if(encoder->private_->disable_mmx)
  ------------------
  |  Branch (932:5): [True: 0, False: 9.55k]
  ------------------
  933|      0|		encoder->private_->cpuinfo.x86.mmx = false;
  934|  9.55k|	if(encoder->private_->disable_sse2)
  ------------------
  |  Branch (934:5): [True: 0, False: 9.55k]
  ------------------
  935|      0|		encoder->private_->cpuinfo.x86.sse2 = false;
  936|  9.55k|	if(encoder->private_->disable_ssse3)
  ------------------
  |  Branch (936:5): [True: 0, False: 9.55k]
  ------------------
  937|      0|		encoder->private_->cpuinfo.x86.ssse3 = false;
  938|  9.55k|	if(encoder->private_->disable_sse41)
  ------------------
  |  Branch (938:5): [True: 0, False: 9.55k]
  ------------------
  939|      0|		encoder->private_->cpuinfo.x86.sse41 = false;
  940|  9.55k|	if(encoder->private_->disable_sse42)
  ------------------
  |  Branch (940:5): [True: 0, False: 9.55k]
  ------------------
  941|      0|		encoder->private_->cpuinfo.x86.sse42 = false;
  942|  9.55k|	if(encoder->private_->disable_avx2)
  ------------------
  |  Branch (942:5): [True: 0, False: 9.55k]
  ------------------
  943|      0|		encoder->private_->cpuinfo.x86.avx2 = false;
  944|  9.55k|	if(encoder->private_->disable_fma)
  ------------------
  |  Branch (944:5): [True: 0, False: 9.55k]
  ------------------
  945|      0|		encoder->private_->cpuinfo.x86.fma = false;
  946|       |	/* first default to the non-asm routines */
  947|  9.55k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
  948|  9.55k|	encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation;
  949|  9.55k|#endif
  950|  9.55k|	encoder->private_->local_precompute_partition_info_sums = precompute_partition_info_sums_;
  951|  9.55k|	encoder->private_->local_fixed_compute_best_predictor = FLAC__fixed_compute_best_predictor;
  952|  9.55k|	encoder->private_->local_fixed_compute_best_predictor_wide = FLAC__fixed_compute_best_predictor_wide;
  953|  9.55k|	encoder->private_->local_fixed_compute_best_predictor_limit_residual = FLAC__fixed_compute_best_predictor_limit_residual;
  954|  9.55k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
  955|  9.55k|	encoder->private_->local_lpc_compute_residual_from_qlp_coefficients = FLAC__lpc_compute_residual_from_qlp_coefficients;
  956|  9.55k|	encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_64bit = FLAC__lpc_compute_residual_from_qlp_coefficients_wide;
  957|  9.55k|	encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = FLAC__lpc_compute_residual_from_qlp_coefficients;
  958|  9.55k|#endif
  959|       |	/* now override with asm where appropriate */
  960|  9.55k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
  961|  9.55k|# ifndef FLAC__NO_ASM
  962|       |#if defined FLAC__CPU_ARM64 && FLAC__HAS_NEONINTRIN
  963|       |#if FLAC__HAS_A64NEONINTRIN
  964|       |	if(encoder->protected_->max_lpc_order < 8)
  965|       |		encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_neon_lag_8;
  966|       |	else if(encoder->protected_->max_lpc_order < 10)
  967|       |		encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_neon_lag_10;
  968|       |	else if(encoder->protected_->max_lpc_order < 14)
  969|       |		encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_neon_lag_14;
  970|       |	else
  971|       |		encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation;
  972|       |#endif
  973|       |    encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_neon;
  974|       |    encoder->private_->local_lpc_compute_residual_from_qlp_coefficients       = FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_neon;
  975|       |    encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_64bit = FLAC__lpc_compute_residual_from_qlp_coefficients_wide_intrin_neon;
  976|       |#endif /* defined FLAC__CPU_ARM64 && FLAC__HAS_NEONINTRIN */
  977|       |
  978|  9.55k|	if(encoder->private_->cpuinfo.use_asm) {
  ------------------
  |  Branch (978:5): [True: 9.55k, False: 0]
  ------------------
  979|       |#  ifdef FLAC__CPU_IA32
  980|       |		FLAC__ASSERT(encoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_IA32);
  981|       |#   if FLAC__HAS_X86INTRIN
  982|       |#    ifdef FLAC__SSE2_SUPPORTED
  983|       |		if (encoder->private_->cpuinfo.x86.sse2) {
  984|       |			if(encoder->protected_->max_lpc_order < 8)
  985|       |				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_8;
  986|       |			else if(encoder->protected_->max_lpc_order < 10)
  987|       |				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_10;
  988|       |			else if(encoder->protected_->max_lpc_order < 14)
  989|       |				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_14;
  990|       |
  991|       |			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients       = FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_sse2;
  992|       |			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = FLAC__lpc_compute_residual_from_qlp_coefficients_16_intrin_sse2;
  993|       |		}
  994|       |#    endif
  995|       |#    ifdef FLAC__SSE4_1_SUPPORTED
  996|       |		if (encoder->private_->cpuinfo.x86.sse41) {
  997|       |			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients       = FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_sse41;
  998|       |			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_64bit = FLAC__lpc_compute_residual_from_qlp_coefficients_wide_intrin_sse41;
  999|       |		}
 1000|       |#    endif
 1001|       |#    ifdef FLAC__AVX2_SUPPORTED
 1002|       |		if (encoder->private_->cpuinfo.x86.avx2) {
 1003|       |			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = FLAC__lpc_compute_residual_from_qlp_coefficients_16_intrin_avx2;
 1004|       |			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients       = FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_avx2;
 1005|       |			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_64bit = FLAC__lpc_compute_residual_from_qlp_coefficients_wide_intrin_avx2;
 1006|       |		}
 1007|       |#    endif
 1008|       |
 1009|       |#    ifdef FLAC__SSE2_SUPPORTED
 1010|       |		if (encoder->private_->cpuinfo.x86.sse2) {
 1011|       |			encoder->private_->local_fixed_compute_best_predictor      = FLAC__fixed_compute_best_predictor_intrin_sse2;
 1012|       |		}
 1013|       |#    endif
 1014|       |#    ifdef FLAC__SSSE3_SUPPORTED
 1015|       |		if (encoder->private_->cpuinfo.x86.ssse3) {
 1016|       |			encoder->private_->local_fixed_compute_best_predictor      = FLAC__fixed_compute_best_predictor_intrin_ssse3;
 1017|       |		}
 1018|       |#    endif
 1019|       |#    ifdef FLAC__SSE4_2_SUPPORTED
 1020|       |		if (encoder->private_->cpuinfo.x86.sse42) {
 1021|       |			encoder->private_->local_fixed_compute_best_predictor_limit_residual = FLAC__fixed_compute_best_predictor_limit_residual_intrin_sse42;
 1022|       |		}
 1023|       |#    endif
 1024|       |#    ifdef FLAC__AVX2_SUPPORTED
 1025|       |		if (encoder->private_->cpuinfo.x86.avx2) {
 1026|       |			encoder->private_->local_fixed_compute_best_predictor_wide = FLAC__fixed_compute_best_predictor_wide_intrin_avx2;
 1027|       |			encoder->private_->local_fixed_compute_best_predictor_limit_residual = FLAC__fixed_compute_best_predictor_limit_residual_intrin_avx2;
 1028|       |		}
 1029|       |#    endif
 1030|       |#   endif /* FLAC__HAS_X86INTRIN */
 1031|       |#  elif defined FLAC__CPU_X86_64
 1032|  9.55k|		FLAC__ASSERT(encoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_X86_64);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 1033|  9.55k|#   if FLAC__HAS_X86INTRIN
 1034|  9.55k|#    ifdef FLAC__SSE2_SUPPORTED
 1035|  9.55k|		if(encoder->private_->cpuinfo.x86.sse2) { /* For fuzzing */
  ------------------
  |  Branch (1035:6): [True: 9.55k, False: 0]
  ------------------
 1036|  9.55k|			if(encoder->protected_->max_lpc_order < 8)
  ------------------
  |  Branch (1036:7): [True: 2.54k, False: 7.00k]
  ------------------
 1037|  2.54k|				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_8;
 1038|  7.00k|			else if(encoder->protected_->max_lpc_order < 10)
  ------------------
  |  Branch (1038:12): [True: 411, False: 6.59k]
  ------------------
 1039|    411|				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_10;
 1040|  6.59k|			else if(encoder->protected_->max_lpc_order < 14)
  ------------------
  |  Branch (1040:12): [True: 228, False: 6.36k]
  ------------------
 1041|    228|				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_sse2_lag_14;
 1042|       |
 1043|  9.55k|			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = FLAC__lpc_compute_residual_from_qlp_coefficients_16_intrin_sse2;
 1044|  9.55k|		}
 1045|  9.55k|#    endif
 1046|  9.55k|#    ifdef FLAC__SSE4_1_SUPPORTED
 1047|  9.55k|		if(encoder->private_->cpuinfo.x86.sse41) {
  ------------------
  |  Branch (1047:6): [True: 9.55k, False: 0]
  ------------------
 1048|  9.55k|			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients = FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_sse41;
 1049|  9.55k|		}
 1050|  9.55k|#    endif
 1051|  9.55k|#    ifdef FLAC__AVX2_SUPPORTED
 1052|  9.55k|		if(encoder->private_->cpuinfo.x86.avx2) {
  ------------------
  |  Branch (1052:6): [True: 9.55k, False: 0]
  ------------------
 1053|  9.55k|			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit = FLAC__lpc_compute_residual_from_qlp_coefficients_16_intrin_avx2;
 1054|  9.55k|			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients       = FLAC__lpc_compute_residual_from_qlp_coefficients_intrin_avx2;
 1055|  9.55k|			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_64bit = FLAC__lpc_compute_residual_from_qlp_coefficients_wide_intrin_avx2;
 1056|  9.55k|		}
 1057|  9.55k|#    endif
 1058|  9.55k|#    ifdef FLAC__FMA_SUPPORTED
 1059|  9.55k|		if(encoder->private_->cpuinfo.x86.fma) {
  ------------------
  |  Branch (1059:6): [True: 9.55k, False: 0]
  ------------------
 1060|  9.55k|			if(encoder->protected_->max_lpc_order < 8)
  ------------------
  |  Branch (1060:7): [True: 2.54k, False: 7.00k]
  ------------------
 1061|  2.54k|				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_fma_lag_8;
 1062|  7.00k|			else if(encoder->protected_->max_lpc_order < 12)
  ------------------
  |  Branch (1062:12): [True: 486, False: 6.51k]
  ------------------
 1063|    486|				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_fma_lag_12;
 1064|  6.51k|			else if(encoder->protected_->max_lpc_order < 16)
  ------------------
  |  Branch (1064:12): [True: 1.96k, False: 4.55k]
  ------------------
 1065|  1.96k|				encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation_intrin_fma_lag_16;
 1066|  9.55k|		}
 1067|  9.55k|#    endif
 1068|       |
 1069|       |
 1070|  9.55k|#    ifdef FLAC__SSE2_SUPPORTED
 1071|  9.55k|		if(encoder->private_->cpuinfo.x86.sse2) { /* For fuzzing */
  ------------------
  |  Branch (1071:6): [True: 9.55k, False: 0]
  ------------------
 1072|  9.55k|			encoder->private_->local_fixed_compute_best_predictor      = FLAC__fixed_compute_best_predictor_intrin_sse2;
 1073|  9.55k|		}
 1074|  9.55k|#    endif
 1075|  9.55k|#    ifdef FLAC__SSSE3_SUPPORTED
 1076|  9.55k|		if (encoder->private_->cpuinfo.x86.ssse3) {
  ------------------
  |  Branch (1076:7): [True: 9.55k, False: 0]
  ------------------
 1077|  9.55k|			encoder->private_->local_fixed_compute_best_predictor      = FLAC__fixed_compute_best_predictor_intrin_ssse3;
 1078|  9.55k|		}
 1079|  9.55k|#    endif
 1080|  9.55k|#    ifdef FLAC__SSE4_2_SUPPORTED
 1081|  9.55k|		if (encoder->private_->cpuinfo.x86.sse42) {
  ------------------
  |  Branch (1081:7): [True: 9.55k, False: 0]
  ------------------
 1082|  9.55k|			encoder->private_->local_fixed_compute_best_predictor_limit_residual = FLAC__fixed_compute_best_predictor_limit_residual_intrin_sse42;
 1083|  9.55k|		}
 1084|  9.55k|#    endif
 1085|  9.55k|#    ifdef FLAC__AVX2_SUPPORTED
 1086|  9.55k|		if (encoder->private_->cpuinfo.x86.avx2) {
  ------------------
  |  Branch (1086:7): [True: 9.55k, False: 0]
  ------------------
 1087|  9.55k|			encoder->private_->local_fixed_compute_best_predictor_wide = FLAC__fixed_compute_best_predictor_wide_intrin_avx2;
 1088|  9.55k|			encoder->private_->local_fixed_compute_best_predictor_limit_residual = FLAC__fixed_compute_best_predictor_limit_residual_intrin_avx2;
 1089|  9.55k|		}
 1090|  9.55k|#    endif
 1091|  9.55k|#   endif /* FLAC__HAS_X86INTRIN */
 1092|  9.55k|#  endif /* FLAC__CPU_... */
 1093|  9.55k|	}
 1094|  9.55k|# endif /* !FLAC__NO_ASM */
 1095|       |
 1096|  9.55k|#endif /* !FLAC__INTEGER_ONLY_LIBRARY */
 1097|  9.55k|#if !defined FLAC__NO_ASM && FLAC__HAS_X86INTRIN
 1098|  9.55k|	if(encoder->private_->cpuinfo.use_asm) {
  ------------------
  |  Branch (1098:5): [True: 9.55k, False: 0]
  ------------------
 1099|  9.55k|# if (defined FLAC__CPU_IA32 || defined FLAC__CPU_X86_64)
 1100|  9.55k|#  ifdef FLAC__SSE2_SUPPORTED
 1101|  9.55k|		if (encoder->private_->cpuinfo.x86.sse2)
  ------------------
  |  Branch (1101:7): [True: 9.55k, False: 0]
  ------------------
 1102|  9.55k|			encoder->private_->local_precompute_partition_info_sums = FLAC__precompute_partition_info_sums_intrin_sse2;
 1103|  9.55k|#  endif
 1104|  9.55k|#  ifdef FLAC__SSSE3_SUPPORTED
 1105|  9.55k|		if (encoder->private_->cpuinfo.x86.ssse3)
  ------------------
  |  Branch (1105:7): [True: 9.55k, False: 0]
  ------------------
 1106|  9.55k|			encoder->private_->local_precompute_partition_info_sums = FLAC__precompute_partition_info_sums_intrin_ssse3;
 1107|  9.55k|#  endif
 1108|  9.55k|#  ifdef FLAC__AVX2_SUPPORTED
 1109|  9.55k|		if (encoder->private_->cpuinfo.x86.avx2)
  ------------------
  |  Branch (1109:7): [True: 9.55k, False: 0]
  ------------------
 1110|  9.55k|			encoder->private_->local_precompute_partition_info_sums = FLAC__precompute_partition_info_sums_intrin_avx2;
 1111|  9.55k|#  endif
 1112|  9.55k|# endif /* FLAC__CPU_... */
 1113|  9.55k|	}
 1114|  9.55k|#endif /* !FLAC__NO_ASM && FLAC__HAS_X86INTRIN */
 1115|       |
 1116|       |	/* set state to OK; from here on, errors are fatal and we'll override the state then */
 1117|  9.55k|	encoder->protected_->state = FLAC__STREAM_ENCODER_OK;
 1118|       |
 1119|  9.55k|#if FLAC__HAS_OGG
 1120|  9.55k|	encoder->private_->is_ogg = is_ogg;
 1121|  9.55k|	if(is_ogg && !FLAC__ogg_encoder_aspect_init(&encoder->protected_->ogg_encoder_aspect)) {
  ------------------
  |  Branch (1121:5): [True: 2.98k, False: 6.57k]
  |  Branch (1121:15): [True: 0, False: 2.98k]
  ------------------
 1122|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
 1123|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1124|      0|	}
 1125|  9.55k|#endif
 1126|       |
 1127|  9.55k|	encoder->private_->read_callback = read_callback;
 1128|  9.55k|	encoder->private_->write_callback = write_callback;
 1129|  9.55k|	encoder->private_->seek_callback = seek_callback;
 1130|  9.55k|	encoder->private_->tell_callback = tell_callback;
 1131|  9.55k|	encoder->private_->metadata_callback = metadata_callback;
 1132|  9.55k|	encoder->private_->client_data = client_data;
 1133|       |
 1134|  9.55k|	if(encoder->protected_->num_threads > 1) {
  ------------------
  |  Branch (1134:5): [True: 830, False: 8.72k]
  ------------------
 1135|    830|#ifdef FLAC__USE_THREADS
 1136|    830|		encoder->private_->num_threadtasks = encoder->protected_->num_threads * 2 + 2; /* First threadtask is reserved for main thread */
 1137|    830|		if(FLAC__mtx_init(&encoder->private_->mutex_md5_fifo, FLAC__mtx_plain) != FLAC__thrd_success) {
  ------------------
  |  |  103|    830|#define FLAC__mtx_init(mutex, type)          ((pthread_mutex_init(mutex, type) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   93|    830|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__mtx_init(mutex, type)          ((pthread_mutex_init(mutex, type) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   95|    830|#define FLAC__thrd_nomem                     ENOMEM
  |  |  ------------------
  |  |  |  Branch (103:47): [True: 830, False: 0]
  |  |  ------------------
  ------------------
              		if(FLAC__mtx_init(&encoder->private_->mutex_md5_fifo, FLAC__mtx_plain) != FLAC__thrd_success) {
  ------------------
  |  |   93|    830|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (1137:6): [True: 0, False: 830]
  ------------------
 1138|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1139|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1140|      0|		}
 1141|    830|		if(FLAC__mtx_init(&encoder->private_->mutex_work_queue, FLAC__mtx_plain) != FLAC__thrd_success) {
  ------------------
  |  |  103|    830|#define FLAC__mtx_init(mutex, type)          ((pthread_mutex_init(mutex, type) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   93|    830|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__mtx_init(mutex, type)          ((pthread_mutex_init(mutex, type) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   95|    830|#define FLAC__thrd_nomem                     ENOMEM
  |  |  ------------------
  |  |  |  Branch (103:47): [True: 830, False: 0]
  |  |  ------------------
  ------------------
              		if(FLAC__mtx_init(&encoder->private_->mutex_work_queue, FLAC__mtx_plain) != FLAC__thrd_success) {
  ------------------
  |  |   93|    830|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (1141:6): [True: 0, False: 830]
  ------------------
 1142|      0|			FLAC__mtx_destroy(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1143|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1144|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1145|      0|		}
 1146|    830|		if(FLAC__cnd_init(&encoder->private_->cond_md5_emptied) != FLAC__thrd_success) {
  ------------------
  |  |  110|    830|#define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   93|    830|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   95|    830|#define FLAC__thrd_nomem                     ENOMEM
  |  |  ------------------
  |  |  |  Branch (110:47): [True: 830, False: 0]
  |  |  ------------------
  ------------------
              		if(FLAC__cnd_init(&encoder->private_->cond_md5_emptied) != FLAC__thrd_success) {
  ------------------
  |  |   93|    830|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (1146:6): [True: 0, False: 830]
  ------------------
 1147|      0|			FLAC__mtx_destroy(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1148|      0|			FLAC__mtx_destroy(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1149|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1150|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1151|      0|		}
 1152|    830|		if(FLAC__cnd_init(&encoder->private_->cond_work_available) != FLAC__thrd_success) {
  ------------------
  |  |  110|    830|#define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   93|    830|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   95|    830|#define FLAC__thrd_nomem                     ENOMEM
  |  |  ------------------
  |  |  |  Branch (110:47): [True: 830, False: 0]
  |  |  ------------------
  ------------------
              		if(FLAC__cnd_init(&encoder->private_->cond_work_available) != FLAC__thrd_success) {
  ------------------
  |  |   93|    830|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (1152:6): [True: 0, False: 830]
  ------------------
 1153|      0|			FLAC__mtx_destroy(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1154|      0|			FLAC__mtx_destroy(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1155|      0|			FLAC__cnd_destroy(&encoder->private_->cond_md5_emptied);
  ------------------
  |  |  114|      0|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 1156|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1157|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1158|      0|		}
 1159|    830|		if(FLAC__cnd_init(&encoder->private_->cond_wake_up_thread) != FLAC__thrd_success) {
  ------------------
  |  |  110|    830|#define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   93|    830|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   95|    830|#define FLAC__thrd_nomem                     ENOMEM
  |  |  ------------------
  |  |  |  Branch (110:47): [True: 830, False: 0]
  |  |  ------------------
  ------------------
              		if(FLAC__cnd_init(&encoder->private_->cond_wake_up_thread) != FLAC__thrd_success) {
  ------------------
  |  |   93|    830|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (1159:6): [True: 0, False: 830]
  ------------------
 1160|      0|			FLAC__mtx_destroy(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1161|      0|			FLAC__mtx_destroy(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1162|      0|			FLAC__cnd_destroy(&encoder->private_->cond_md5_emptied);
  ------------------
  |  |  114|      0|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 1163|      0|			FLAC__cnd_destroy(&encoder->private_->cond_work_available);
  ------------------
  |  |  114|      0|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 1164|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1165|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1166|      0|		}
 1167|    830|		if(encoder->protected_->do_md5) {
  ------------------
  |  Branch (1167:6): [True: 830, False: 0]
  ------------------
 1168|    830|			encoder->private_->md5_fifo.size = (encoder->protected_->blocksize+OVERREAD_) * (encoder->private_->num_threadtasks + 2);
 1169|  2.00k|			for(i = 0; i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (1169:15): [True: 1.17k, False: 830]
  ------------------
 1170|  1.17k|				if(0 == (encoder->private_->md5_fifo.data[i] = safe_malloc_mul_2op_p(sizeof(FLAC__int32), /*times*/encoder->private_->md5_fifo.size))) {
  ------------------
  |  Branch (1170:8): [True: 0, False: 1.17k]
  ------------------
 1171|      0|					FLAC__mtx_destroy(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1172|      0|					FLAC__mtx_destroy(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1173|      0|					FLAC__cnd_destroy(&encoder->private_->cond_md5_emptied);
  ------------------
  |  |  114|      0|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 1174|      0|					FLAC__cnd_destroy(&encoder->private_->cond_work_available);
  ------------------
  |  |  114|      0|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 1175|      0|					FLAC__cnd_destroy(&encoder->private_->cond_wake_up_thread);
  ------------------
  |  |  114|      0|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 1176|      0|					encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1177|      0|					return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1178|      0|				}
 1179|  1.17k|			}
 1180|    830|		}
 1181|    830|		encoder->private_->md5_fifo.tail = 0;
 1182|  13.7k|		for(t = 1; t < encoder->private_->num_threadtasks; t++) {
  ------------------
  |  Branch (1182:14): [True: 12.9k, False: 830]
  ------------------
 1183|  12.9k|			encoder->private_->threadtask[t] = safe_calloc_(1, sizeof(FLAC__StreamEncoderThreadTask));
 1184|  12.9k|			if(encoder->private_->threadtask[t] == NULL) {
  ------------------
  |  Branch (1184:7): [True: 0, False: 12.9k]
  ------------------
 1185|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1186|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1187|      0|			}
 1188|  12.9k|			encoder->private_->threadtask[t]->frame = FLAC__bitwriter_new();
 1189|  12.9k|			if(encoder->private_->threadtask[t]->frame == NULL) {
  ------------------
  |  Branch (1189:7): [True: 0, False: 12.9k]
  ------------------
 1190|      0|				free(encoder->private_->threadtask[t]);
 1191|      0|				encoder->private_->threadtask[t] = 0;
 1192|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1193|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1194|      0|			}
 1195|  12.9k|			if(FLAC__mtx_init(&encoder->private_->threadtask[t]->mutex_this_task, FLAC__mtx_plain) != FLAC__thrd_success) {
  ------------------
  |  |  103|  12.9k|#define FLAC__mtx_init(mutex, type)          ((pthread_mutex_init(mutex, type) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   93|  12.9k|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__mtx_init(mutex, type)          ((pthread_mutex_init(mutex, type) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   95|  12.9k|#define FLAC__thrd_nomem                     ENOMEM
  |  |  ------------------
  |  |  |  Branch (103:47): [True: 12.9k, False: 0]
  |  |  ------------------
  ------------------
              			if(FLAC__mtx_init(&encoder->private_->threadtask[t]->mutex_this_task, FLAC__mtx_plain) != FLAC__thrd_success) {
  ------------------
  |  |   93|  12.9k|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (1195:7): [True: 0, False: 12.9k]
  ------------------
 1196|      0|				FLAC__bitwriter_delete(encoder->private_->threadtask[t]->frame);
 1197|      0|				free(encoder->private_->threadtask[t]);
 1198|      0|				encoder->private_->threadtask[t] = 0;
 1199|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1200|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1201|      0|			}
 1202|  12.9k|			if(FLAC__cnd_init(&encoder->private_->threadtask[t]->cond_task_done) != FLAC__thrd_success) {
  ------------------
  |  |  110|  12.9k|#define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   93|  12.9k|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__cnd_init(cv)                   ((pthread_cond_init(cv, NULL) == 0) ? FLAC__thrd_success : FLAC__thrd_nomem)
  |  |  ------------------
  |  |  |  |   95|  12.9k|#define FLAC__thrd_nomem                     ENOMEM
  |  |  ------------------
  |  |  |  Branch (110:47): [True: 12.9k, False: 0]
  |  |  ------------------
  ------------------
              			if(FLAC__cnd_init(&encoder->private_->threadtask[t]->cond_task_done) != FLAC__thrd_success) {
  ------------------
  |  |   93|  12.9k|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (1202:7): [True: 0, False: 12.9k]
  ------------------
 1203|      0|				FLAC__mtx_destroy(&encoder->private_->threadtask[t]->mutex_this_task);
  ------------------
  |  |  107|      0|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 1204|      0|				FLAC__bitwriter_delete(encoder->private_->threadtask[t]->frame);
 1205|      0|				free(encoder->private_->threadtask[t]);
 1206|      0|				encoder->private_->threadtask[t] = 0;
 1207|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1208|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1209|      0|			}
 1210|       |
 1211|   116k|			for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   116k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (1211:15): [True: 103k, False: 12.9k]
  ------------------
 1212|   103k|				encoder->private_->threadtask[t]->subframe_workspace_ptr[i][0] = &encoder->private_->threadtask[t]->subframe_workspace[i][0];
 1213|   103k|				encoder->private_->threadtask[t]->subframe_workspace_ptr[i][1] = &encoder->private_->threadtask[t]->subframe_workspace[i][1];
 1214|   103k|			}
 1215|  38.8k|			for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (1215:15): [True: 25.9k, False: 12.9k]
  ------------------
 1216|  25.9k|				encoder->private_->threadtask[t]->subframe_workspace_ptr_mid_side[i][0] = &encoder->private_->threadtask[t]->subframe_workspace_mid_side[i][0];
 1217|  25.9k|				encoder->private_->threadtask[t]->subframe_workspace_ptr_mid_side[i][1] = &encoder->private_->threadtask[t]->subframe_workspace_mid_side[i][1];
 1218|  25.9k|			}
 1219|   116k|			for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   116k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (1219:15): [True: 103k, False: 12.9k]
  ------------------
 1220|   103k|				encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_ptr[i][0] = &encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[i][0];
 1221|   103k|				encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_ptr[i][1] = &encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[i][1];
 1222|   103k|			}
 1223|  38.8k|			for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (1223:15): [True: 25.9k, False: 12.9k]
  ------------------
 1224|  25.9k|				encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_ptr_mid_side[i][0] = &encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_mid_side[i][0];
 1225|  25.9k|				encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_ptr_mid_side[i][1] = &encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_mid_side[i][1];
 1226|  25.9k|			}
 1227|       |
 1228|   116k|			for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   116k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (1228:15): [True: 103k, False: 12.9k]
  ------------------
 1229|   103k|				FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[i][0]);
 1230|   103k|				FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[i][1]);
 1231|   103k|			}
 1232|  38.8k|			for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (1232:15): [True: 25.9k, False: 12.9k]
  ------------------
 1233|  25.9k|				FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_mid_side[i][0]);
 1234|  25.9k|				FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_mid_side[i][1]);
 1235|  25.9k|			}
 1236|  38.8k|			for(i = 0; i < 2; i++)
  ------------------
  |  Branch (1236:15): [True: 25.9k, False: 12.9k]
  ------------------
 1237|  25.9k|				FLAC__format_entropy_coding_method_partitioned_rice_contents_init(&encoder->private_->threadtask[t]->partitioned_rice_contents_extra[i]);
 1238|  12.9k|		}
 1239|       |#else
 1240|       |		FLAC__ASSERT(0);
 1241|       |#endif
 1242|    830|	}
 1243|       |
 1244|  9.55k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 1245|  31.5k|	for(i = 0; i < encoder->protected_->num_apodizations; i++)
  ------------------
  |  Branch (1245:13): [True: 21.9k, False: 9.55k]
  ------------------
 1246|  21.9k|		encoder->private_->window_unaligned[i] = encoder->private_->window[i] = 0;
 1247|  9.55k|#endif
 1248|  32.0k|	for(t = 0; t < encoder->private_->num_threadtasks; t++) {
  ------------------
  |  Branch (1248:13): [True: 22.5k, False: 9.55k]
  ------------------
 1249|  58.4k|		for(i = 0; i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (1249:14): [True: 35.8k, False: 22.5k]
  ------------------
 1250|  35.8k|			encoder->private_->threadtask[t]->integer_signal_unaligned[i] = encoder->private_->threadtask[t]->integer_signal[i] = 0;
 1251|  35.8k|		}
 1252|  67.5k|		for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (1252:14): [True: 45.0k, False: 22.5k]
  ------------------
 1253|  45.0k|			encoder->private_->threadtask[t]->integer_signal_mid_side_unaligned[i] = encoder->private_->threadtask[t]->integer_signal_mid_side[i] = 0;
 1254|  45.0k|		}
 1255|  22.5k|		encoder->private_->threadtask[t]->integer_signal_33bit_side_unaligned = encoder->private_->threadtask[t]->integer_signal_33bit_side = 0;
 1256|  22.5k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 1257|  22.5k|		encoder->private_->threadtask[t]->windowed_signal_unaligned = encoder->private_->threadtask[t]->windowed_signal = 0;
 1258|  22.5k|#endif
 1259|  58.4k|		for(i = 0; i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (1259:14): [True: 35.8k, False: 22.5k]
  ------------------
 1260|  35.8k|			encoder->private_->threadtask[t]->residual_workspace_unaligned[i][0] = encoder->private_->threadtask[t]->residual_workspace[i][0] = 0;
 1261|  35.8k|			encoder->private_->threadtask[t]->residual_workspace_unaligned[i][1] = encoder->private_->threadtask[t]->residual_workspace[i][1] = 0;
 1262|  35.8k|			encoder->private_->threadtask[t]->best_subframe[i] = 0;
 1263|  35.8k|		}
 1264|  67.5k|		for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (1264:14): [True: 45.0k, False: 22.5k]
  ------------------
 1265|  45.0k|			encoder->private_->threadtask[t]->residual_workspace_mid_side_unaligned[i][0] = encoder->private_->threadtask[t]->residual_workspace_mid_side[i][0] = 0;
 1266|  45.0k|			encoder->private_->threadtask[t]->residual_workspace_mid_side_unaligned[i][1] = encoder->private_->threadtask[t]->residual_workspace_mid_side[i][1] = 0;
 1267|  45.0k|			encoder->private_->threadtask[t]->best_subframe_mid_side[i] = 0;
 1268|  45.0k|		}
 1269|  22.5k|		encoder->private_->threadtask[t]->abs_residual_partition_sums_unaligned = encoder->private_->threadtask[t]->abs_residual_partition_sums = 0;
 1270|  22.5k|		encoder->private_->threadtask[t]->raw_bits_per_partition_unaligned = encoder->private_->threadtask[t]->raw_bits_per_partition = 0;
 1271|  22.5k|	}
 1272|       |
 1273|       |
 1274|  9.55k|	if(!resize_buffers_(encoder, encoder->protected_->blocksize)) {
  ------------------
  |  Branch (1274:5): [True: 0, False: 9.55k]
  ------------------
 1275|       |		/* the above function sets the state for us in case of an error */
 1276|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1277|      0|	}
 1278|       |
 1279|  32.0k|	for(t = 0; t < encoder->private_->num_threadtasks; t++) {
  ------------------
  |  Branch (1279:13): [True: 22.5k, False: 9.55k]
  ------------------
 1280|  22.5k|		if(!FLAC__bitwriter_init(encoder->private_->threadtask[t]->frame)) {
  ------------------
  |  Branch (1280:6): [True: 0, False: 22.5k]
  ------------------
 1281|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1282|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1283|      0|		}
 1284|  22.5k|	}
 1285|       |
 1286|       |	/*
 1287|       |	 * Set up the verify stuff if necessary
 1288|       |	 */
 1289|  9.55k|	if(encoder->protected_->verify) {
  ------------------
  |  Branch (1289:5): [True: 8.32k, False: 1.22k]
  ------------------
 1290|       |		/*
 1291|       |		 * First, set up the fifo which will hold the
 1292|       |		 * original signal to compare against
 1293|       |		 */
 1294|  8.32k|		encoder->private_->verify.input_fifo.size = (encoder->protected_->blocksize+OVERREAD_) * encoder->private_->num_threadtasks;
 1295|  22.8k|		for(i = 0; i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (1295:14): [True: 14.5k, False: 8.32k]
  ------------------
 1296|  14.5k|			if(0 == (encoder->private_->verify.input_fifo.data[i] = safe_malloc_mul_2op_p(sizeof(FLAC__int32), /*times*/encoder->private_->verify.input_fifo.size))) {
  ------------------
  |  Branch (1296:7): [True: 0, False: 14.5k]
  ------------------
 1297|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 1298|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1299|      0|			}
 1300|  14.5k|		}
 1301|  8.32k|		encoder->private_->verify.input_fifo.tail = 0;
 1302|       |
 1303|       |		/*
 1304|       |		 * Now set up a stream decoder for verification
 1305|       |		 */
 1306|  8.32k|		if(0 == encoder->private_->verify.decoder) {
  ------------------
  |  Branch (1306:6): [True: 8.32k, False: 0]
  ------------------
 1307|  8.32k|			encoder->private_->verify.decoder = FLAC__stream_decoder_new();
 1308|  8.32k|			if(0 == encoder->private_->verify.decoder) {
  ------------------
  |  Branch (1308:7): [True: 0, False: 8.32k]
  ------------------
 1309|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR;
 1310|      0|				return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1311|      0|			}
 1312|  8.32k|		}
 1313|       |
 1314|  8.32k|		if(FLAC__stream_decoder_init_stream(encoder->private_->verify.decoder, verify_read_callback_, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, /*eof_callback=*/0, verify_write_callback_, verify_metadata_callback_, verify_error_callback_, /*client_data=*/encoder) != FLAC__STREAM_DECODER_INIT_STATUS_OK) {
  ------------------
  |  Branch (1314:6): [True: 0, False: 8.32k]
  ------------------
 1315|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR;
 1316|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1317|      0|		}
 1318|  8.32k|	}
 1319|  9.55k|	encoder->private_->verify.error_stats.absolute_sample = 0;
 1320|  9.55k|	encoder->private_->verify.error_stats.frame_number = 0;
 1321|  9.55k|	encoder->private_->verify.error_stats.channel = 0;
 1322|  9.55k|	encoder->private_->verify.error_stats.sample = 0;
 1323|  9.55k|	encoder->private_->verify.error_stats.expected = 0;
 1324|  9.55k|	encoder->private_->verify.error_stats.got = 0;
 1325|       |
 1326|       |	/*
 1327|       |	 * These must be done before we write any metadata, because that
 1328|       |	 * calls the write_callback, which uses these values.
 1329|       |	 */
 1330|  9.55k|	encoder->private_->first_seekpoint_to_check = 0;
 1331|  9.55k|	encoder->private_->samples_written = 0;
 1332|  9.55k|	encoder->protected_->streaminfo_offset = 0;
 1333|  9.55k|	encoder->protected_->seektable_offset = 0;
 1334|  9.55k|	encoder->protected_->audio_offset = 0;
 1335|       |
 1336|       |	/*
 1337|       |	 * write the stream header
 1338|       |	 */
 1339|  9.55k|	if(encoder->protected_->verify)
  ------------------
  |  Branch (1339:5): [True: 8.32k, False: 1.22k]
  ------------------
 1340|  8.32k|		encoder->private_->verify.state_hint = ENCODER_IN_MAGIC;
 1341|  9.55k|	if(!FLAC__bitwriter_write_raw_uint32(encoder->private_->threadtask[0]->frame, FLAC__STREAM_SYNC, FLAC__STREAM_SYNC_LEN)) {
  ------------------
  |  Branch (1341:5): [True: 0, False: 9.55k]
  ------------------
 1342|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 1343|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1344|      0|	}
 1345|  9.55k|	if(!write_bitbuffer_(encoder, encoder->private_->threadtask[0], 0, /*is_last_block=*/false)) {
  ------------------
  |  Branch (1345:5): [True: 0, False: 9.55k]
  ------------------
 1346|       |		/* the above function sets the state for us in case of an error */
 1347|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1348|      0|	}
 1349|       |
 1350|       |	/*
 1351|       |	 * write the STREAMINFO metadata block
 1352|       |	 */
 1353|  9.55k|	if(encoder->protected_->verify)
  ------------------
  |  Branch (1353:5): [True: 8.32k, False: 1.22k]
  ------------------
 1354|  8.32k|		encoder->private_->verify.state_hint = ENCODER_IN_METADATA;
 1355|  9.55k|	encoder->private_->streaminfo.type = FLAC__METADATA_TYPE_STREAMINFO;
 1356|  9.55k|	encoder->private_->streaminfo.is_last = false; /* we will have at a minimum a VORBIS_COMMENT afterwards */
 1357|  9.55k|	encoder->private_->streaminfo.length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
  ------------------
  |  |  557|  9.55k|#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u)
  ------------------
 1358|  9.55k|	encoder->private_->streaminfo.data.stream_info.min_blocksize = encoder->protected_->blocksize; /* this encoder uses the same blocksize for the whole stream */
 1359|  9.55k|	encoder->private_->streaminfo.data.stream_info.max_blocksize = encoder->protected_->blocksize;
 1360|  9.55k|	encoder->private_->streaminfo.data.stream_info.min_framesize = 0; /* we don't know this yet; have to fill it in later */
 1361|  9.55k|	encoder->private_->streaminfo.data.stream_info.max_framesize = 0; /* we don't know this yet; have to fill it in later */
 1362|  9.55k|	encoder->private_->streaminfo.data.stream_info.sample_rate = encoder->protected_->sample_rate;
 1363|  9.55k|	encoder->private_->streaminfo.data.stream_info.channels = encoder->protected_->channels;
 1364|  9.55k|	encoder->private_->streaminfo.data.stream_info.bits_per_sample = encoder->protected_->bits_per_sample;
 1365|  9.55k|	encoder->private_->streaminfo.data.stream_info.total_samples = encoder->protected_->total_samples_estimate; /* we will replace this later with the real total */
 1366|  9.55k|	memset(encoder->private_->streaminfo.data.stream_info.md5sum, 0, 16); /* we don't know this yet; have to fill it in later */
 1367|  9.55k|	if(encoder->protected_->do_md5)
  ------------------
  |  Branch (1367:5): [True: 9.55k, False: 0]
  ------------------
 1368|  9.55k|		FLAC__MD5Init(&encoder->private_->md5context);
 1369|  9.55k|	if(!FLAC__add_metadata_block(&encoder->private_->streaminfo, encoder->private_->threadtask[0]->frame, true)) {
  ------------------
  |  Branch (1369:5): [True: 0, False: 9.55k]
  ------------------
 1370|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 1371|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1372|      0|	}
 1373|  9.55k|	if(!write_bitbuffer_(encoder, encoder->private_->threadtask[0], 0, /*is_last_block=*/false)) {
  ------------------
  |  Branch (1373:5): [True: 0, False: 9.55k]
  ------------------
 1374|       |		/* the above function sets the state for us in case of an error */
 1375|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1376|      0|	}
 1377|       |
 1378|       |	/*
 1379|       |	 * Now that the STREAMINFO block is written, we can init this to an
 1380|       |	 * absurdly-high value...
 1381|       |	 */
 1382|  9.55k|	encoder->private_->streaminfo.data.stream_info.min_framesize = (1u << FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN) - 1;
 1383|       |	/* ... and clear this to 0 */
 1384|  9.55k|	encoder->private_->streaminfo.data.stream_info.total_samples = 0;
 1385|       |
 1386|       |	/*
 1387|       |	 * Check to see if the supplied metadata contains a VORBIS_COMMENT;
 1388|       |	 * if not, we will write an empty one (FLAC__add_metadata_block()
 1389|       |	 * automatically supplies the vendor string).
 1390|       |	 *
 1391|       |	 * WATCHOUT: the Ogg FLAC mapping requires us to write this block after
 1392|       |	 * the STREAMINFO.  (In the case that metadata_has_vorbis_comment is
 1393|       |	 * true it will have already insured that the metadata list is properly
 1394|       |	 * ordered.)
 1395|       |	 */
 1396|  9.55k|	if(!metadata_has_vorbis_comment) {
  ------------------
  |  Branch (1396:5): [True: 9.55k, False: 0]
  ------------------
 1397|  9.55k|		FLAC__StreamMetadata vorbis_comment;
 1398|  9.55k|		vorbis_comment.type = FLAC__METADATA_TYPE_VORBIS_COMMENT;
 1399|  9.55k|		vorbis_comment.is_last = (encoder->protected_->num_metadata_blocks == 0);
 1400|  9.55k|		vorbis_comment.length = 4 + 4; /* MAGIC NUMBER */
 1401|  9.55k|		vorbis_comment.data.vorbis_comment.vendor_string.length = 0;
 1402|  9.55k|		vorbis_comment.data.vorbis_comment.vendor_string.entry = 0;
 1403|  9.55k|		vorbis_comment.data.vorbis_comment.num_comments = 0;
 1404|  9.55k|		vorbis_comment.data.vorbis_comment.comments = 0;
 1405|  9.55k|		if(!FLAC__add_metadata_block(&vorbis_comment, encoder->private_->threadtask[0]->frame, true)) {
  ------------------
  |  Branch (1405:6): [True: 0, False: 9.55k]
  ------------------
 1406|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 1407|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1408|      0|		}
 1409|  9.55k|		if(!write_bitbuffer_(encoder, encoder->private_->threadtask[0], 0, /*is_last_block=*/false)) {
  ------------------
  |  Branch (1409:6): [True: 0, False: 9.55k]
  ------------------
 1410|       |			/* the above function sets the state for us in case of an error */
 1411|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1412|      0|		}
 1413|  9.55k|	}
 1414|       |
 1415|       |	/*
 1416|       |	 * write the user's metadata blocks
 1417|       |	 */
 1418|  9.55k|	for(i = 0; i < encoder->protected_->num_metadata_blocks; i++) {
  ------------------
  |  Branch (1418:13): [True: 0, False: 9.55k]
  ------------------
 1419|      0|		encoder->protected_->metadata[i]->is_last = (i == encoder->protected_->num_metadata_blocks - 1);
 1420|      0|		if(!FLAC__add_metadata_block(encoder->protected_->metadata[i], encoder->private_->threadtask[0]->frame, true)) {
  ------------------
  |  Branch (1420:6): [True: 0, False: 0]
  ------------------
 1421|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 1422|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1423|      0|		}
 1424|      0|		if(!write_bitbuffer_(encoder, encoder->private_->threadtask[0], 0, /*is_last_block=*/false)) {
  ------------------
  |  Branch (1424:6): [True: 0, False: 0]
  ------------------
 1425|       |			/* the above function sets the state for us in case of an error */
 1426|      0|			return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1427|      0|		}
 1428|      0|	}
 1429|       |
 1430|       |	/* now that all the metadata is written, we save the stream offset */
 1431|  9.55k|	if(encoder->private_->tell_callback && encoder->private_->tell_callback(encoder, &encoder->protected_->audio_offset, encoder->private_->client_data) == FLAC__STREAM_ENCODER_TELL_STATUS_ERROR) { /* FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED just means we didn't get the offset; no error */
  ------------------
  |  Branch (1431:5): [True: 9.55k, False: 0]
  |  Branch (1431:41): [True: 0, False: 9.55k]
  ------------------
 1432|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 1433|      0|		return FLAC__STREAM_ENCODER_INIT_STATUS_ENCODER_ERROR;
 1434|      0|	}
 1435|       |
 1436|  9.55k|	if(encoder->protected_->verify)
  ------------------
  |  Branch (1436:5): [True: 8.32k, False: 1.22k]
  ------------------
 1437|  8.32k|		encoder->private_->verify.state_hint = ENCODER_IN_AUDIO;
 1438|       |
 1439|  9.55k|	return FLAC__STREAM_ENCODER_INIT_STATUS_OK;
 1440|  9.55k|}
stream_encoder.c:verify_read_callback_:
 5156|   236k|{
 5157|   236k|	FLAC__StreamEncoder *encoder = (FLAC__StreamEncoder*)client_data;
 5158|   236k|	const size_t encoded_bytes = encoder->private_->verify.output.bytes;
 5159|   236k|	(void)decoder;
 5160|       |
 5161|   236k|	if(encoder->private_->verify.needs_magic_hack) {
  ------------------
  |  Branch (5161:5): [True: 8.32k, False: 228k]
  ------------------
 5162|  8.32k|		FLAC__ASSERT(*bytes >= FLAC__STREAM_SYNC_LENGTH);
  ------------------
  |  |   38|  8.32k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.32k]
  |  |  ------------------
  ------------------
 5163|  8.32k|		*bytes = FLAC__STREAM_SYNC_LENGTH;
  ------------------
  |  |  179|  8.32k|#define FLAC__STREAM_SYNC_LENGTH (4u)
  ------------------
 5164|  8.32k|		memcpy(buffer, FLAC__STREAM_SYNC_STRING, *bytes);
 5165|  8.32k|		encoder->private_->verify.needs_magic_hack = false;
 5166|  8.32k|	}
 5167|   228k|	else {
 5168|   228k|		if(encoded_bytes == 0) {
  ------------------
  |  Branch (5168:6): [True: 0, False: 228k]
  ------------------
 5169|       |			/*
 5170|       |			 * If we get here, a FIFO underflow has occurred,
 5171|       |			 * which means there is a bug somewhere.
 5172|       |			 */
 5173|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 5174|      0|			return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
 5175|      0|		}
 5176|   228k|		else if(encoded_bytes < *bytes)
  ------------------
  |  Branch (5176:11): [True: 220k, False: 8.00k]
  ------------------
 5177|   220k|			*bytes = encoded_bytes;
 5178|   228k|		memcpy(buffer, encoder->private_->verify.output.data, *bytes);
 5179|   228k|		encoder->private_->verify.output.data += *bytes;
 5180|   228k|		encoder->private_->verify.output.bytes -= *bytes;
 5181|   228k|	}
 5182|       |
 5183|   236k|	return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
 5184|   236k|}
stream_encoder.c:verify_write_callback_:
 5187|   203k|{
 5188|   203k|	FLAC__StreamEncoder *encoder = (FLAC__StreamEncoder *)client_data;
 5189|   203k|	uint32_t channel;
 5190|   203k|	const uint32_t channels = frame->header.channels;
 5191|   203k|	const uint32_t blocksize = frame->header.blocksize;
 5192|   203k|	const uint32_t bytes_per_block = sizeof(FLAC__int32) * blocksize;
 5193|       |
 5194|   203k|	(void)decoder;
 5195|       |
 5196|   203k|	if(encoder->protected_->state == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR) {
  ------------------
  |  Branch (5196:5): [True: 0, False: 203k]
  ------------------
 5197|       |		/* This is set when verify_error_callback_ was called */
 5198|      0|		return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
 5199|      0|	}
 5200|       |
 5201|   475k|	for(channel = 0; channel < channels; channel++) {
  ------------------
  |  Branch (5201:19): [True: 271k, False: 203k]
  ------------------
 5202|   271k|		if(0 != memcmp(buffer[channel], encoder->private_->verify.input_fifo.data[channel], bytes_per_block)) {
  ------------------
  |  Branch (5202:6): [True: 0, False: 271k]
  ------------------
 5203|      0|			uint32_t i, sample = 0;
 5204|      0|			FLAC__int32 expect = 0, got = 0;
 5205|       |
 5206|      0|			for(i = 0; i < blocksize; i++) {
  ------------------
  |  Branch (5206:15): [True: 0, False: 0]
  ------------------
 5207|      0|				if(buffer[channel][i] != encoder->private_->verify.input_fifo.data[channel][i]) {
  ------------------
  |  Branch (5207:8): [True: 0, False: 0]
  ------------------
 5208|      0|					sample = i;
 5209|      0|					expect = (FLAC__int32)encoder->private_->verify.input_fifo.data[channel][i];
 5210|      0|					got = (FLAC__int32)buffer[channel][i];
 5211|      0|					break;
 5212|      0|				}
 5213|      0|			}
 5214|      0|			FLAC__ASSERT(i < blocksize);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5215|      0|			FLAC__ASSERT(frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5216|      0|			encoder->private_->verify.error_stats.absolute_sample = frame->header.number.sample_number + sample;
 5217|      0|			encoder->private_->verify.error_stats.frame_number = (uint32_t)(frame->header.number.sample_number / blocksize);
 5218|      0|			encoder->private_->verify.error_stats.channel = channel;
 5219|      0|			encoder->private_->verify.error_stats.sample = sample;
 5220|      0|			encoder->private_->verify.error_stats.expected = expect;
 5221|      0|			encoder->private_->verify.error_stats.got = got;
 5222|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA;
 5223|      0|			return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
 5224|      0|		}
 5225|   271k|	}
 5226|       |	/* dequeue the frame from the fifo */
 5227|   203k|	encoder->private_->verify.input_fifo.tail -= blocksize;
 5228|   475k|	for(channel = 0; channel < channels; channel++)
  ------------------
  |  Branch (5228:19): [True: 271k, False: 203k]
  ------------------
 5229|   271k|		memmove(&encoder->private_->verify.input_fifo.data[channel][0], &encoder->private_->verify.input_fifo.data[channel][blocksize], encoder->private_->verify.input_fifo.tail * sizeof(encoder->private_->verify.input_fifo.data[0][0]));
 5230|   203k|	return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
 5231|   203k|}
stream_encoder.c:verify_metadata_callback_:
 5234|  8.32k|{
 5235|  8.32k|	(void)decoder, (void)metadata, (void)client_data;
 5236|  8.32k|}
stream_encoder.c:set_defaults_:
 2629|  21.3k|{
 2630|  21.3k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  21.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 21.3k]
  |  |  ------------------
  ------------------
 2631|       |
 2632|       |#ifdef FLAC__MANDATORY_VERIFY_WHILE_ENCODING
 2633|       |	encoder->protected_->verify = true;
 2634|       |#else
 2635|  21.3k|	encoder->protected_->verify = false;
 2636|  21.3k|#endif
 2637|  21.3k|	encoder->protected_->streamable_subset = true;
 2638|  21.3k|	encoder->protected_->do_md5 = true;
 2639|  21.3k|	encoder->protected_->do_mid_side_stereo = false;
 2640|  21.3k|	encoder->protected_->loose_mid_side_stereo = false;
 2641|  21.3k|	encoder->protected_->channels = 2;
 2642|  21.3k|	encoder->protected_->bits_per_sample = 16;
 2643|  21.3k|	encoder->protected_->sample_rate = 44100;
 2644|  21.3k|	encoder->protected_->blocksize = 0;
 2645|  21.3k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 2646|  21.3k|	encoder->protected_->num_apodizations = 1;
 2647|  21.3k|	encoder->protected_->apodizations[0].type = FLAC__APODIZATION_TUKEY;
 2648|  21.3k|	encoder->protected_->apodizations[0].parameters.tukey.p = 0.5;
 2649|  21.3k|#endif
 2650|  21.3k|	encoder->protected_->max_lpc_order = 0;
 2651|  21.3k|	encoder->protected_->qlp_coeff_precision = 0;
 2652|  21.3k|	encoder->protected_->do_qlp_coeff_prec_search = false;
 2653|  21.3k|	encoder->protected_->do_exhaustive_model_search = false;
 2654|  21.3k|	encoder->protected_->do_escape_coding = false;
 2655|  21.3k|	encoder->protected_->min_residual_partition_order = 0;
 2656|  21.3k|	encoder->protected_->max_residual_partition_order = 0;
 2657|  21.3k|	encoder->protected_->rice_parameter_search_dist = 0;
 2658|  21.3k|	encoder->protected_->total_samples_estimate = 0;
 2659|  21.3k|	encoder->protected_->limit_min_bitrate = false;
 2660|  21.3k|	encoder->protected_->metadata = 0;
 2661|  21.3k|	encoder->protected_->num_metadata_blocks = 0;
 2662|  21.3k|	encoder->protected_->num_threads = 1;
 2663|       |
 2664|  21.3k|	encoder->private_->seek_table = 0;
 2665|  21.3k|	encoder->private_->disable_mmx = false;
 2666|  21.3k|	encoder->private_->disable_sse2 = false;
 2667|  21.3k|	encoder->private_->disable_ssse3 = false;
 2668|  21.3k|	encoder->private_->disable_sse41 = false;
 2669|  21.3k|	encoder->private_->disable_sse42 = false;
 2670|  21.3k|	encoder->private_->disable_avx2 = false;
 2671|  21.3k|	encoder->private_->disable_constant_subframes = false;
 2672|  21.3k|	encoder->private_->disable_fixed_subframes = false;
 2673|  21.3k|	encoder->private_->disable_verbatim_subframes = false;
 2674|  21.3k|	encoder->private_->is_ogg = false;
 2675|  21.3k|	encoder->private_->read_callback = 0;
 2676|  21.3k|	encoder->private_->write_callback = 0;
 2677|  21.3k|	encoder->private_->seek_callback = 0;
 2678|  21.3k|	encoder->private_->tell_callback = 0;
 2679|  21.3k|	encoder->private_->metadata_callback = 0;
 2680|  21.3k|	encoder->private_->progress_callback = 0;
 2681|  21.3k|	encoder->private_->client_data = 0;
 2682|  21.3k|	encoder->private_->num_threadtasks = 1;
 2683|  21.3k|#ifdef FLAC__USE_THREADS
 2684|  21.3k|	encoder->private_->num_created_threads = 1;
 2685|  21.3k|	encoder->private_->next_thread = 1;
 2686|  21.3k|	encoder->private_->num_running_threads = 1;
 2687|  21.3k|	encoder->private_->num_started_threadtasks = 1;
 2688|  21.3k|	encoder->private_->num_available_threadtasks = 0;
 2689|  21.3k|	encoder->private_->overcommitted_indicator = 0;
 2690|  21.3k|	encoder->private_->next_threadtask = 1;
 2691|  21.3k|	encoder->private_->md5_active = false;
 2692|  21.3k|	encoder->private_->finish_work_threads = false;
 2693|  21.3k|#endif
 2694|       |
 2695|  21.3k|#if FLAC__HAS_OGG
 2696|  21.3k|	FLAC__ogg_encoder_aspect_set_defaults(&encoder->protected_->ogg_encoder_aspect);
 2697|  21.3k|#endif
 2698|       |
 2699|  21.3k|	FLAC__stream_encoder_set_compression_level(encoder, 5);
 2700|  21.3k|}
stream_encoder.c:free_:
 2703|  9.55k|{
 2704|  9.55k|	uint32_t i, t, channel;
 2705|       |
 2706|  9.55k|	FLAC__ASSERT(0 != encoder);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
 2707|  9.55k|	if(encoder->protected_->metadata) {
  ------------------
  |  Branch (2707:5): [True: 0, False: 9.55k]
  ------------------
 2708|      0|		free(encoder->protected_->metadata);
 2709|      0|		encoder->protected_->metadata = 0;
 2710|      0|		encoder->protected_->num_metadata_blocks = 0;
 2711|      0|	}
 2712|  9.55k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 2713|  31.5k|	for(i = 0; i < encoder->protected_->num_apodizations; i++) {
  ------------------
  |  Branch (2713:13): [True: 21.9k, False: 9.55k]
  ------------------
 2714|  21.9k|		if(0 != encoder->private_->window_unaligned[i]) {
  ------------------
  |  Branch (2714:6): [True: 20.5k, False: 1.42k]
  ------------------
 2715|  20.5k|			free(encoder->private_->window_unaligned[i]);
 2716|  20.5k|			encoder->private_->window_unaligned[i] = 0;
 2717|  20.5k|		}
 2718|  21.9k|	}
 2719|  9.55k|#endif
 2720|  32.0k|	for(t = 0; t < encoder->private_->num_threadtasks; t++) {
  ------------------
  |  Branch (2720:13): [True: 22.5k, False: 9.55k]
  ------------------
 2721|  22.5k|		if(0 == encoder->private_->threadtask[t])
  ------------------
  |  Branch (2721:6): [True: 0, False: 22.5k]
  ------------------
 2722|      0|			continue;
 2723|  58.4k|		for(i = 0; i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (2723:14): [True: 35.8k, False: 22.5k]
  ------------------
 2724|  35.8k|			if(0 != encoder->private_->threadtask[t]->integer_signal_unaligned[i]) {
  ------------------
  |  Branch (2724:7): [True: 35.8k, False: 0]
  ------------------
 2725|  35.8k|				free(encoder->private_->threadtask[t]->integer_signal_unaligned[i]);
 2726|  35.8k|				encoder->private_->threadtask[t]->integer_signal_unaligned[i] = 0;
 2727|  35.8k|			}
 2728|  35.8k|		}
 2729|  67.5k|		for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (2729:14): [True: 45.0k, False: 22.5k]
  ------------------
 2730|  45.0k|			if(0 != encoder->private_->threadtask[t]->integer_signal_mid_side_unaligned[i]) {
  ------------------
  |  Branch (2730:7): [True: 45.0k, False: 0]
  ------------------
 2731|  45.0k|				free(encoder->private_->threadtask[t]->integer_signal_mid_side_unaligned[i]);
 2732|  45.0k|				encoder->private_->threadtask[t]->integer_signal_mid_side_unaligned[i] = 0;
 2733|  45.0k|			}
 2734|  45.0k|		}
 2735|  22.5k|		if(0 != encoder->private_->threadtask[t]->integer_signal_33bit_side_unaligned){
  ------------------
  |  Branch (2735:6): [True: 22.5k, False: 0]
  ------------------
 2736|  22.5k|			free(encoder->private_->threadtask[t]->integer_signal_33bit_side_unaligned);
 2737|  22.5k|			encoder->private_->threadtask[t]->integer_signal_33bit_side_unaligned = 0;
 2738|  22.5k|		}
 2739|  22.5k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 2740|  22.5k|		if(0 != encoder->private_->threadtask[t]->windowed_signal_unaligned) {
  ------------------
  |  Branch (2740:6): [True: 15.1k, False: 7.33k]
  ------------------
 2741|  15.1k|			free(encoder->private_->threadtask[t]->windowed_signal_unaligned);
 2742|  15.1k|			encoder->private_->threadtask[t]->windowed_signal_unaligned = 0;
 2743|  15.1k|		}
 2744|  22.5k|#endif
 2745|  58.4k|		for(channel = 0; channel < encoder->protected_->channels; channel++) {
  ------------------
  |  Branch (2745:20): [True: 35.8k, False: 22.5k]
  ------------------
 2746|   107k|			for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (2746:15): [True: 71.7k, False: 35.8k]
  ------------------
 2747|  71.7k|				if(0 != encoder->private_->threadtask[t]->residual_workspace_unaligned[channel][i]) {
  ------------------
  |  Branch (2747:8): [True: 71.7k, False: 0]
  ------------------
 2748|  71.7k|					free(encoder->private_->threadtask[t]->residual_workspace_unaligned[channel][i]);
 2749|  71.7k|					encoder->private_->threadtask[t]->residual_workspace_unaligned[channel][i] = 0;
 2750|  71.7k|				}
 2751|  71.7k|			}
 2752|  35.8k|		}
 2753|  67.5k|		for(channel = 0; channel < 2; channel++) {
  ------------------
  |  Branch (2753:20): [True: 45.0k, False: 22.5k]
  ------------------
 2754|   135k|			for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (2754:15): [True: 90.0k, False: 45.0k]
  ------------------
 2755|  90.0k|				if(0 != encoder->private_->threadtask[t]->residual_workspace_mid_side_unaligned[channel][i]) {
  ------------------
  |  Branch (2755:8): [True: 90.0k, False: 0]
  ------------------
 2756|  90.0k|					free(encoder->private_->threadtask[t]->residual_workspace_mid_side_unaligned[channel][i]);
 2757|  90.0k|					encoder->private_->threadtask[t]->residual_workspace_mid_side_unaligned[channel][i] = 0;
 2758|  90.0k|				}
 2759|  90.0k|			}
 2760|  45.0k|		}
 2761|  22.5k|		if(0 != encoder->private_->threadtask[t]->abs_residual_partition_sums_unaligned) {
  ------------------
  |  Branch (2761:6): [True: 22.5k, False: 0]
  ------------------
 2762|  22.5k|			free(encoder->private_->threadtask[t]->abs_residual_partition_sums_unaligned);
 2763|  22.5k|			encoder->private_->threadtask[t]->abs_residual_partition_sums_unaligned = 0;
 2764|  22.5k|		}
 2765|  22.5k|		if(0 != encoder->private_->threadtask[t]->raw_bits_per_partition_unaligned) {
  ------------------
  |  Branch (2765:6): [True: 15.3k, False: 7.21k]
  ------------------
 2766|  15.3k|			free(encoder->private_->threadtask[t]->raw_bits_per_partition_unaligned);
 2767|  15.3k|			encoder->private_->threadtask[t]->raw_bits_per_partition_unaligned = 0;
 2768|  15.3k|		}
 2769|   202k|		for(i = 0; i < FLAC__MAX_CHANNELS; i++) {
  ------------------
  |  |  106|   202k|#define FLAC__MAX_CHANNELS (8u)
  ------------------
  |  Branch (2769:14): [True: 180k, False: 22.5k]
  ------------------
 2770|   180k|			FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[i][0]);
 2771|   180k|			FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[i][1]);
 2772|   180k|		}
 2773|  67.5k|		for(i = 0; i < 2; i++) {
  ------------------
  |  Branch (2773:14): [True: 45.0k, False: 22.5k]
  ------------------
 2774|  45.0k|			FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_mid_side[i][0]);
 2775|  45.0k|			FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_mid_side[i][1]);
 2776|  45.0k|		}
 2777|  67.5k|		for(i = 0; i < 2; i++)
  ------------------
  |  Branch (2777:14): [True: 45.0k, False: 22.5k]
  ------------------
 2778|  45.0k|			FLAC__format_entropy_coding_method_partitioned_rice_contents_clear(&encoder->private_->threadtask[t]->partitioned_rice_contents_extra[i]);
 2779|  22.5k|		if(t > 0) {
  ------------------
  |  Branch (2779:6): [True: 12.9k, False: 9.55k]
  ------------------
 2780|  12.9k|#ifdef FLAC__USE_THREADS
 2781|  12.9k|			FLAC__bitwriter_delete(encoder->private_->threadtask[t]->frame);
 2782|  12.9k|			FLAC__mtx_destroy(&encoder->private_->threadtask[t]->mutex_this_task);
  ------------------
  |  |  107|  12.9k|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 2783|  12.9k|			FLAC__cnd_destroy(&encoder->private_->threadtask[t]->cond_task_done);
  ------------------
  |  |  114|  12.9k|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 2784|  12.9k|			free(encoder->private_->threadtask[t]);
 2785|  12.9k|			encoder->private_->threadtask[t] = 0;
 2786|       |#else
 2787|       |			FLAC__ASSERT(0);
 2788|       |#endif
 2789|  12.9k|		}
 2790|       |
 2791|  22.5k|	}
 2792|  9.55k|#ifdef FLAC__USE_THREADS
 2793|  9.55k|	if(encoder->protected_->num_threads > 1) {
  ------------------
  |  Branch (2793:5): [True: 830, False: 8.72k]
  ------------------
 2794|    830|		FLAC__mtx_destroy(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  107|    830|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 2795|    830|		FLAC__mtx_destroy(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  107|    830|#define FLAC__mtx_destroy(mutex)             pthread_mutex_destroy(mutex)
  ------------------
 2796|    830|		FLAC__cnd_destroy(&encoder->private_->cond_md5_emptied);
  ------------------
  |  |  114|    830|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 2797|    830|		FLAC__cnd_destroy(&encoder->private_->cond_work_available);
  ------------------
  |  |  114|    830|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 2798|    830|		FLAC__cnd_destroy(&encoder->private_->cond_wake_up_thread);
  ------------------
  |  |  114|    830|#define FLAC__cnd_destroy(cv)                pthread_cond_destroy(cv)
  ------------------
 2799|    830|		if(encoder->protected_->do_md5) {
  ------------------
  |  Branch (2799:6): [True: 830, False: 0]
  ------------------
 2800|  2.00k|			for(i = 0; i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (2800:15): [True: 1.17k, False: 830]
  ------------------
 2801|  1.17k|				if(0 != encoder->private_->md5_fifo.data[i]) {
  ------------------
  |  Branch (2801:8): [True: 1.17k, False: 0]
  ------------------
 2802|  1.17k|					free(encoder->private_->md5_fifo.data[i]);
 2803|  1.17k|					encoder->private_->md5_fifo.data[i] = 0;
 2804|  1.17k|				}
 2805|  1.17k|			}
 2806|    830|		}
 2807|       |
 2808|    830|	}
 2809|  9.55k|#endif
 2810|  9.55k|	if(encoder->protected_->verify) {
  ------------------
  |  Branch (2810:5): [True: 8.32k, False: 1.22k]
  ------------------
 2811|  22.8k|		for(i = 0; i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (2811:14): [True: 14.5k, False: 8.32k]
  ------------------
 2812|  14.5k|			if(0 != encoder->private_->verify.input_fifo.data[i]) {
  ------------------
  |  Branch (2812:7): [True: 14.5k, False: 0]
  ------------------
 2813|  14.5k|				free(encoder->private_->verify.input_fifo.data[i]);
 2814|  14.5k|				encoder->private_->verify.input_fifo.data[i] = 0;
 2815|  14.5k|			}
 2816|  14.5k|		}
 2817|  8.32k|	}
 2818|  9.55k|}
stream_encoder.c:resize_buffers_:
 2821|  18.2k|{
 2822|  18.2k|	FLAC__bool ok;
 2823|  18.2k|	uint32_t i, t, channel;
 2824|       |
 2825|  18.2k|	FLAC__ASSERT(new_blocksize > 0);
  ------------------
  |  |   38|  18.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 18.2k]
  |  |  ------------------
  ------------------
 2826|  18.2k|	FLAC__ASSERT(encoder->protected_->state == FLAC__STREAM_ENCODER_OK);
  ------------------
  |  |   38|  18.2k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 18.2k]
  |  |  ------------------
  ------------------
 2827|       |
 2828|  18.2k|	ok = true;
 2829|       |
 2830|       |	/* To avoid excessive malloc'ing, we only grow the buffer; no shrinking. */
 2831|  18.2k|	if(new_blocksize > encoder->private_->input_capacity) {
  ------------------
  |  Branch (2831:5): [True: 9.55k, False: 8.65k]
  ------------------
 2832|       |
 2833|       |		/* WATCHOUT: FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx() and ..._intrin_sse2()
 2834|       |		 * require that the input arrays (in our case the integer signals)
 2835|       |		 * have a buffer of up to 3 zeroes in front (at negative indices) for
 2836|       |		 * alignment purposes; we use 4 in front to keep the data well-aligned.
 2837|       |		 */
 2838|  9.55k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 2839|  9.55k|		if(ok && encoder->protected_->max_lpc_order > 0) {
  ------------------
  |  Branch (2839:6): [True: 9.55k, False: 0]
  |  Branch (2839:12): [True: 8.19k, False: 1.36k]
  ------------------
 2840|  28.7k|			for(i = 0; ok && i < encoder->protected_->num_apodizations; i++)
  ------------------
  |  Branch (2840:15): [True: 28.7k, False: 0]
  |  Branch (2840:21): [True: 20.5k, False: 8.19k]
  ------------------
 2841|  20.5k|				ok = ok && FLAC__memory_alloc_aligned_real_array(new_blocksize, &encoder->private_->window_unaligned[i], &encoder->private_->window[i]);
  ------------------
  |  Branch (2841:10): [True: 20.5k, False: 0]
  |  Branch (2841:16): [True: 20.5k, False: 0]
  ------------------
 2842|  8.19k|		}
 2843|  9.55k|#endif
 2844|  32.0k|		for(t = 0; t < encoder->private_->num_threadtasks; t++) {
  ------------------
  |  Branch (2844:14): [True: 22.5k, False: 9.55k]
  ------------------
 2845|  58.4k|			for(i = 0; ok && i < encoder->protected_->channels; i++) {
  ------------------
  |  Branch (2845:15): [True: 58.4k, False: 0]
  |  Branch (2845:21): [True: 35.8k, False: 22.5k]
  ------------------
 2846|  35.8k|				ok = ok && FLAC__memory_alloc_aligned_int32_array(new_blocksize+4+OVERREAD_, &encoder->private_->threadtask[t]->integer_signal_unaligned[i], &encoder->private_->threadtask[t]->integer_signal[i]);
  ------------------
  |  Branch (2846:10): [True: 35.8k, False: 0]
  |  Branch (2846:16): [True: 35.8k, False: 0]
  ------------------
 2847|  35.8k|				if(ok) {
  ------------------
  |  Branch (2847:8): [True: 35.8k, False: 0]
  ------------------
 2848|  35.8k|					memset(encoder->private_->threadtask[t]->integer_signal[i], 0, sizeof(FLAC__int32)*4);
 2849|  35.8k|					encoder->private_->threadtask[t]->integer_signal[i] += 4;
 2850|  35.8k|				}
 2851|  35.8k|			}
 2852|  67.5k|			for(i = 0; ok && i < 2; i++) {
  ------------------
  |  Branch (2852:15): [True: 67.5k, False: 0]
  |  Branch (2852:21): [True: 45.0k, False: 22.5k]
  ------------------
 2853|  45.0k|				ok = ok && FLAC__memory_alloc_aligned_int32_array(new_blocksize+4+OVERREAD_, &encoder->private_->threadtask[t]->integer_signal_mid_side_unaligned[i], &encoder->private_->threadtask[t]->integer_signal_mid_side[i]);
  ------------------
  |  Branch (2853:10): [True: 45.0k, False: 0]
  |  Branch (2853:16): [True: 45.0k, False: 0]
  ------------------
 2854|  45.0k|				if(ok) {
  ------------------
  |  Branch (2854:8): [True: 45.0k, False: 0]
  ------------------
 2855|  45.0k|					memset(encoder->private_->threadtask[t]->integer_signal_mid_side[i], 0, sizeof(FLAC__int32)*4);
 2856|  45.0k|					encoder->private_->threadtask[t]->integer_signal_mid_side[i] += 4;
 2857|  45.0k|				}
 2858|  45.0k|			}
 2859|  22.5k|			ok = ok && FLAC__memory_alloc_aligned_int64_array(new_blocksize+4+OVERREAD_, &encoder->private_->threadtask[t]->integer_signal_33bit_side_unaligned, &encoder->private_->threadtask[t]->integer_signal_33bit_side);
  ------------------
  |  Branch (2859:9): [True: 22.5k, False: 0]
  |  Branch (2859:15): [True: 22.5k, False: 0]
  ------------------
 2860|  22.5k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 2861|  22.5k|			if(ok && encoder->protected_->max_lpc_order > 0) {
  ------------------
  |  Branch (2861:7): [True: 22.5k, False: 0]
  |  Branch (2861:13): [True: 15.1k, False: 7.33k]
  ------------------
 2862|  15.1k|				ok = ok && FLAC__memory_alloc_aligned_real_array(new_blocksize, &encoder->private_->threadtask[t]->windowed_signal_unaligned, &encoder->private_->threadtask[t]->windowed_signal);
  ------------------
  |  Branch (2862:10): [True: 15.1k, False: 0]
  |  Branch (2862:16): [True: 15.1k, False: 0]
  ------------------
 2863|  15.1k|			}
 2864|  22.5k|#endif
 2865|  58.4k|			for(channel = 0; ok && channel < encoder->protected_->channels; channel++) {
  ------------------
  |  Branch (2865:21): [True: 58.4k, False: 0]
  |  Branch (2865:27): [True: 35.8k, False: 22.5k]
  ------------------
 2866|   107k|				for(i = 0; ok && i < 2; i++) {
  ------------------
  |  Branch (2866:16): [True: 107k, False: 0]
  |  Branch (2866:22): [True: 71.7k, False: 35.8k]
  ------------------
 2867|  71.7k|					ok = ok && FLAC__memory_alloc_aligned_int32_array(new_blocksize, &encoder->private_->threadtask[t]->residual_workspace_unaligned[channel][i], &encoder->private_->threadtask[t]->residual_workspace[channel][i]);
  ------------------
  |  Branch (2867:11): [True: 71.7k, False: 0]
  |  Branch (2867:17): [True: 71.7k, False: 0]
  ------------------
 2868|  71.7k|				}
 2869|  35.8k|			}
 2870|       |
 2871|       |
 2872|  58.4k|			for(channel = 0; ok && channel < encoder->protected_->channels; channel++) {
  ------------------
  |  Branch (2872:21): [True: 58.4k, False: 0]
  |  Branch (2872:27): [True: 35.8k, False: 22.5k]
  ------------------
 2873|   107k|				for(i = 0; ok && i < 2; i++) {
  ------------------
  |  Branch (2873:16): [True: 107k, False: 0]
  |  Branch (2873:22): [True: 71.7k, False: 35.8k]
  ------------------
 2874|  71.7k|					ok = ok && FLAC__format_entropy_coding_method_partitioned_rice_contents_ensure_size(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[channel][i], encoder->protected_->max_residual_partition_order);
  ------------------
  |  Branch (2874:11): [True: 71.7k, False: 0]
  |  Branch (2874:17): [True: 71.7k, False: 0]
  ------------------
 2875|  71.7k|					ok = ok && FLAC__format_entropy_coding_method_partitioned_rice_contents_ensure_size(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace[channel][i], encoder->protected_->max_residual_partition_order);
  ------------------
  |  Branch (2875:11): [True: 71.7k, False: 0]
  |  Branch (2875:17): [True: 71.7k, False: 0]
  ------------------
 2876|  71.7k|				}
 2877|  35.8k|			}
 2878|       |
 2879|  67.5k|			for(channel = 0; ok && channel < 2; channel++) {
  ------------------
  |  Branch (2879:21): [True: 67.5k, False: 0]
  |  Branch (2879:27): [True: 45.0k, False: 22.5k]
  ------------------
 2880|   135k|				for(i = 0; ok && i < 2; i++) {
  ------------------
  |  Branch (2880:16): [True: 135k, False: 0]
  |  Branch (2880:22): [True: 90.0k, False: 45.0k]
  ------------------
 2881|  90.0k|					ok = ok && FLAC__memory_alloc_aligned_int32_array(new_blocksize, &encoder->private_->threadtask[t]->residual_workspace_mid_side_unaligned[channel][i], &encoder->private_->threadtask[t]->residual_workspace_mid_side[channel][i]);
  ------------------
  |  Branch (2881:11): [True: 90.0k, False: 0]
  |  Branch (2881:17): [True: 90.0k, False: 0]
  ------------------
 2882|  90.0k|				}
 2883|  45.0k|			}
 2884|       |
 2885|  67.5k|			for(channel = 0; ok && channel < 2; channel++) {
  ------------------
  |  Branch (2885:21): [True: 67.5k, False: 0]
  |  Branch (2885:27): [True: 45.0k, False: 22.5k]
  ------------------
 2886|   135k|				for(i = 0; ok && i < 2; i++) {
  ------------------
  |  Branch (2886:16): [True: 135k, False: 0]
  |  Branch (2886:22): [True: 90.0k, False: 45.0k]
  ------------------
 2887|  90.0k|					ok = ok && FLAC__format_entropy_coding_method_partitioned_rice_contents_ensure_size(&encoder->private_->threadtask[t]->partitioned_rice_contents_workspace_mid_side[channel][i], encoder->protected_->max_residual_partition_order);
  ------------------
  |  Branch (2887:11): [True: 90.0k, False: 0]
  |  Branch (2887:17): [True: 90.0k, False: 0]
  ------------------
 2888|  90.0k|				}
 2889|  45.0k|			}
 2890|       |
 2891|  67.5k|			for(i = 0; ok && i < 2; i++) {
  ------------------
  |  Branch (2891:15): [True: 67.5k, False: 0]
  |  Branch (2891:21): [True: 45.0k, False: 22.5k]
  ------------------
 2892|  45.0k|				ok = ok && FLAC__format_entropy_coding_method_partitioned_rice_contents_ensure_size(&encoder->private_->threadtask[t]->partitioned_rice_contents_extra[i], encoder->protected_->max_residual_partition_order);
  ------------------
  |  Branch (2892:10): [True: 45.0k, False: 0]
  |  Branch (2892:16): [True: 45.0k, False: 0]
  ------------------
 2893|  45.0k|			}
 2894|       |
 2895|       |
 2896|       |			/* the *2 is an approximation to the series 1 + 1/2 + 1/4 + ... that sums tree occupies in a flat array */
 2897|       |			/*@@@ new_blocksize*2 is too pessimistic, but to fix, we need smarter logic because a smaller new_blocksize can actually increase the # of partitions; would require moving this out into a separate function, then checking its capacity against the need of the current blocksize&min/max_partition_order (and maybe predictor order) */
 2898|  22.5k|			ok = ok && FLAC__memory_alloc_aligned_uint64_array(new_blocksize * 2, &encoder->private_->threadtask[t]->abs_residual_partition_sums_unaligned, &encoder->private_->threadtask[t]->abs_residual_partition_sums);
  ------------------
  |  Branch (2898:9): [True: 22.5k, False: 0]
  |  Branch (2898:15): [True: 22.5k, False: 0]
  ------------------
 2899|  22.5k|			if(encoder->protected_->do_escape_coding)
  ------------------
  |  Branch (2899:7): [True: 15.3k, False: 7.21k]
  ------------------
 2900|  15.3k|				ok = ok && FLAC__memory_alloc_aligned_uint32_array(new_blocksize * 2, &encoder->private_->threadtask[t]->raw_bits_per_partition_unaligned, &encoder->private_->threadtask[t]->raw_bits_per_partition);
  ------------------
  |  Branch (2900:10): [True: 15.3k, False: 0]
  |  Branch (2900:16): [True: 15.3k, False: 0]
  ------------------
 2901|  22.5k|		}
 2902|  9.55k|}
 2903|  18.2k|	if(ok)
  ------------------
  |  Branch (2903:5): [True: 18.2k, False: 0]
  ------------------
 2904|  18.2k|		encoder->private_->input_capacity = new_blocksize;
 2905|      0|	else {
 2906|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 2907|      0|		return ok;
 2908|      0|	}
 2909|       |
 2910|       |
 2911|       |	/* now adjust the windows if the blocksize has changed */
 2912|  18.2k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 2913|  18.2k|	if(encoder->protected_->max_lpc_order > 0 && new_blocksize > 1) {
  ------------------
  |  Branch (2913:5): [True: 15.5k, False: 2.62k]
  |  Branch (2913:47): [True: 14.8k, False: 688]
  ------------------
 2914|  52.5k|		for(i = 0; i < encoder->protected_->num_apodizations; i++) {
  ------------------
  |  Branch (2914:14): [True: 37.6k, False: 14.8k]
  ------------------
 2915|  37.6k|			switch(encoder->protected_->apodizations[i].type) {
 2916|    786|				case FLAC__APODIZATION_BARTLETT:
  ------------------
  |  Branch (2916:5): [True: 786, False: 36.8k]
  ------------------
 2917|    786|					FLAC__window_bartlett(encoder->private_->window[i], new_blocksize);
 2918|    786|					break;
 2919|    104|				case FLAC__APODIZATION_BARTLETT_HANN:
  ------------------
  |  Branch (2919:5): [True: 104, False: 37.5k]
  ------------------
 2920|    104|					FLAC__window_bartlett_hann(encoder->private_->window[i], new_blocksize);
 2921|    104|					break;
 2922|    119|				case FLAC__APODIZATION_BLACKMAN:
  ------------------
  |  Branch (2922:5): [True: 119, False: 37.5k]
  ------------------
 2923|    119|					FLAC__window_blackman(encoder->private_->window[i], new_blocksize);
 2924|    119|					break;
 2925|     89|				case FLAC__APODIZATION_BLACKMAN_HARRIS_4TERM_92DB_SIDELOBE:
  ------------------
  |  Branch (2925:5): [True: 89, False: 37.5k]
  ------------------
 2926|     89|					FLAC__window_blackman_harris_4term_92db_sidelobe(encoder->private_->window[i], new_blocksize);
 2927|     89|					break;
 2928|    200|				case FLAC__APODIZATION_CONNES:
  ------------------
  |  Branch (2928:5): [True: 200, False: 37.4k]
  ------------------
 2929|    200|					FLAC__window_connes(encoder->private_->window[i], new_blocksize);
 2930|    200|					break;
 2931|    117|				case FLAC__APODIZATION_FLATTOP:
  ------------------
  |  Branch (2931:5): [True: 117, False: 37.5k]
  ------------------
 2932|    117|					FLAC__window_flattop(encoder->private_->window[i], new_blocksize);
 2933|    117|					break;
 2934|    200|				case FLAC__APODIZATION_GAUSS:
  ------------------
  |  Branch (2934:5): [True: 200, False: 37.4k]
  ------------------
 2935|    200|					FLAC__window_gauss(encoder->private_->window[i], new_blocksize, encoder->protected_->apodizations[i].parameters.gauss.stddev);
 2936|    200|					break;
 2937|    284|				case FLAC__APODIZATION_HAMMING:
  ------------------
  |  Branch (2937:5): [True: 284, False: 37.3k]
  ------------------
 2938|    284|					FLAC__window_hamming(encoder->private_->window[i], new_blocksize);
 2939|    284|					break;
 2940|    491|				case FLAC__APODIZATION_HANN:
  ------------------
  |  Branch (2940:5): [True: 491, False: 37.1k]
  ------------------
 2941|    491|					FLAC__window_hann(encoder->private_->window[i], new_blocksize);
 2942|    491|					break;
 2943|    104|				case FLAC__APODIZATION_KAISER_BESSEL:
  ------------------
  |  Branch (2943:5): [True: 104, False: 37.5k]
  ------------------
 2944|    104|					FLAC__window_kaiser_bessel(encoder->private_->window[i], new_blocksize);
 2945|    104|					break;
 2946|    113|				case FLAC__APODIZATION_NUTTALL:
  ------------------
  |  Branch (2946:5): [True: 113, False: 37.5k]
  ------------------
 2947|    113|					FLAC__window_nuttall(encoder->private_->window[i], new_blocksize);
 2948|    113|					break;
 2949|    282|				case FLAC__APODIZATION_RECTANGLE:
  ------------------
  |  Branch (2949:5): [True: 282, False: 37.3k]
  ------------------
 2950|    282|					FLAC__window_rectangle(encoder->private_->window[i], new_blocksize);
 2951|    282|					break;
 2952|    684|				case FLAC__APODIZATION_TRIANGLE:
  ------------------
  |  Branch (2952:5): [True: 684, False: 36.9k]
  ------------------
 2953|    684|					FLAC__window_triangle(encoder->private_->window[i], new_blocksize);
 2954|    684|					break;
 2955|  12.5k|				case FLAC__APODIZATION_TUKEY:
  ------------------
  |  Branch (2955:5): [True: 12.5k, False: 25.0k]
  ------------------
 2956|  12.5k|					FLAC__window_tukey(encoder->private_->window[i], new_blocksize, encoder->protected_->apodizations[i].parameters.tukey.p);
 2957|  12.5k|					break;
 2958|  7.31k|				case FLAC__APODIZATION_PARTIAL_TUKEY:
  ------------------
  |  Branch (2958:5): [True: 7.31k, False: 30.3k]
  ------------------
 2959|  7.31k|					FLAC__window_partial_tukey(encoder->private_->window[i], new_blocksize, encoder->protected_->apodizations[i].parameters.multiple_tukey.p, encoder->protected_->apodizations[i].parameters.multiple_tukey.start, encoder->protected_->apodizations[i].parameters.multiple_tukey.end);
 2960|  7.31k|					break;
 2961|  10.4k|				case FLAC__APODIZATION_PUNCHOUT_TUKEY:
  ------------------
  |  Branch (2961:5): [True: 10.4k, False: 27.1k]
  ------------------
 2962|  10.4k|					FLAC__window_punchout_tukey(encoder->private_->window[i], new_blocksize, encoder->protected_->apodizations[i].parameters.multiple_tukey.p, encoder->protected_->apodizations[i].parameters.multiple_tukey.start, encoder->protected_->apodizations[i].parameters.multiple_tukey.end);
 2963|  10.4k|					break;
 2964|  3.44k|				case FLAC__APODIZATION_SUBDIVIDE_TUKEY:
  ------------------
  |  Branch (2964:5): [True: 3.44k, False: 34.2k]
  ------------------
 2965|  3.44k|					FLAC__window_tukey(encoder->private_->window[i], new_blocksize, encoder->protected_->apodizations[i].parameters.tukey.p);
 2966|  3.44k|					break;
 2967|    255|				case FLAC__APODIZATION_WELCH:
  ------------------
  |  Branch (2967:5): [True: 255, False: 37.3k]
  ------------------
 2968|    255|					FLAC__window_welch(encoder->private_->window[i], new_blocksize);
 2969|    255|					break;
 2970|      0|				default:
  ------------------
  |  Branch (2970:5): [True: 0, False: 37.6k]
  ------------------
 2971|      0|					FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 2972|       |					/* double protection */
 2973|      0|					FLAC__window_hann(encoder->private_->window[i], new_blocksize);
 2974|      0|					break;
 2975|  37.6k|			}
 2976|  37.6k|		}
 2977|  14.8k|	}
 2978|  18.2k|	if (new_blocksize <= FLAC__MAX_LPC_ORDER) {
  ------------------
  |  |  128|  18.2k|#define FLAC__MAX_LPC_ORDER (32u)
  ------------------
  |  Branch (2978:6): [True: 8.37k, False: 9.83k]
  ------------------
 2979|       |		/* intrinsics autocorrelation routines do not all handle cases in which lag might be
 2980|       |		 * larger than data_len. Lag is one larger than the LPC order */
 2981|  8.37k|		encoder->private_->local_lpc_compute_autocorrelation = FLAC__lpc_compute_autocorrelation;
 2982|  8.37k|	}
 2983|  18.2k|#endif
 2984|       |
 2985|       |	return true;
 2986|  18.2k|}
stream_encoder.c:write_bitbuffer_:
 2989|   276k|{
 2990|   276k|	const FLAC__byte *buffer;
 2991|   276k|	size_t bytes;
 2992|       |
 2993|   276k|	FLAC__ASSERT(FLAC__bitwriter_is_byte_aligned(threadtask->frame));
  ------------------
  |  |   38|   276k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 276k]
  |  |  ------------------
  ------------------
 2994|       |
 2995|   276k|	if(!FLAC__bitwriter_get_buffer(threadtask->frame, &buffer, &bytes)) {
  ------------------
  |  Branch (2995:5): [True: 0, False: 276k]
  ------------------
 2996|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 2997|      0|		return false;
 2998|      0|	}
 2999|       |
 3000|   276k|	if(encoder->protected_->verify) {
  ------------------
  |  Branch (3000:5): [True: 228k, False: 47.6k]
  ------------------
 3001|   228k|		encoder->private_->verify.output.data = buffer;
 3002|   228k|		encoder->private_->verify.output.bytes = bytes;
 3003|   228k|		if(encoder->private_->verify.state_hint == ENCODER_IN_MAGIC) {
  ------------------
  |  Branch (3003:6): [True: 8.32k, False: 220k]
  ------------------
 3004|  8.32k|			encoder->private_->verify.needs_magic_hack = true;
 3005|  8.32k|		}
 3006|   220k|		else {
 3007|   220k|			if(!FLAC__stream_decoder_process_single(encoder->private_->verify.decoder)
  ------------------
  |  Branch (3007:7): [True: 0, False: 220k]
  ------------------
 3008|   220k|			    || (!is_last_block
  ------------------
  |  Branch (3008:12): [True: 212k, False: 7.81k]
  ------------------
 3009|   212k|				    && (FLAC__stream_encoder_get_verify_decoder_state(encoder) == FLAC__STREAM_DECODER_END_OF_STREAM))
  ------------------
  |  Branch (3009:12): [True: 0, False: 212k]
  ------------------
 3010|   220k|			    || encoder->protected_->state == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR /* Happens when error callback was used */) {
  ------------------
  |  Branch (3010:11): [True: 0, False: 220k]
  ------------------
 3011|      0|				FLAC__bitwriter_release_buffer(threadtask->frame);
 3012|      0|				FLAC__bitwriter_clear(threadtask->frame);
 3013|      0|				if(encoder->protected_->state != FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA)
  ------------------
  |  Branch (3013:8): [True: 0, False: 0]
  ------------------
 3014|      0|					encoder->protected_->state = FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR;
 3015|      0|				return false;
 3016|      0|			}
 3017|   220k|		}
 3018|   228k|	}
 3019|       |
 3020|   276k|	if(write_frame_(encoder, buffer, bytes, samples, is_last_block) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
  ------------------
  |  Branch (3020:5): [True: 0, False: 276k]
  ------------------
 3021|      0|		FLAC__bitwriter_release_buffer(threadtask->frame);
 3022|      0|		FLAC__bitwriter_clear(threadtask->frame);
 3023|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3024|      0|		return false;
 3025|      0|	}
 3026|       |
 3027|   276k|	FLAC__bitwriter_release_buffer(threadtask->frame);
 3028|   276k|	FLAC__bitwriter_clear(threadtask->frame);
 3029|       |
 3030|   276k|	if(samples > 0) {
  ------------------
  |  Branch (3030:5): [True: 247k, False: 28.6k]
  ------------------
 3031|   247k|		encoder->private_->streaminfo.data.stream_info.min_framesize = flac_min(bytes, encoder->private_->streaminfo.data.stream_info.min_framesize);
  ------------------
  |  |   56|   247k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (3031:66): [True: 12.4k, False: 235k]
  ------------------
 3032|   247k|		encoder->private_->streaminfo.data.stream_info.max_framesize = flac_max(bytes, encoder->private_->streaminfo.data.stream_info.max_framesize);
  ------------------
  |  |   55|   247k|#define flac_max(a,b) MAX(a,b)
  ------------------
  |  Branch (3032:66): [True: 10.7k, False: 236k]
  ------------------
 3033|   247k|	}
 3034|       |
 3035|       |	return true;
 3036|   276k|}
stream_encoder.c:write_frame_:
 3039|   276k|{
 3040|   276k|	FLAC__StreamEncoderWriteStatus status;
 3041|   276k|	FLAC__uint64 output_position = 0;
 3042|       |
 3043|       |#if FLAC__HAS_OGG == 0
 3044|       |	(void)is_last_block;
 3045|       |#endif
 3046|       |
 3047|       |	/*
 3048|       |	 * Watch for the STREAMINFO block and first SEEKTABLE block to go by and store their offsets.
 3049|       |	 */
 3050|   276k|	if(samples == 0) {
  ------------------
  |  Branch (3050:5): [True: 28.6k, False: 247k]
  ------------------
 3051|  28.6k|		FLAC__MetadataType type = (buffer[0] & 0x7f);
 3052|       |
 3053|       |		/* FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED just means we didn't get the offset; no error */
 3054|  28.6k|		if(encoder->private_->tell_callback && encoder->private_->tell_callback(encoder, &output_position, encoder->private_->client_data) == FLAC__STREAM_ENCODER_TELL_STATUS_ERROR) {
  ------------------
  |  Branch (3054:6): [True: 28.6k, False: 0]
  |  Branch (3054:42): [True: 0, False: 28.6k]
  ------------------
 3055|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3056|      0|			return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
 3057|      0|		}
 3058|       |
 3059|  28.6k|		if(type == FLAC__METADATA_TYPE_STREAMINFO)
  ------------------
  |  Branch (3059:6): [True: 9.55k, False: 19.1k]
  ------------------
 3060|  9.55k|			encoder->protected_->streaminfo_offset = output_position;
 3061|  19.1k|		else if(type == FLAC__METADATA_TYPE_SEEKTABLE && encoder->protected_->seektable_offset == 0)
  ------------------
  |  Branch (3061:11): [True: 0, False: 19.1k]
  |  Branch (3061:52): [True: 0, False: 0]
  ------------------
 3062|      0|			encoder->protected_->seektable_offset = output_position;
 3063|  28.6k|	}
 3064|       |
 3065|       |	/*
 3066|       |	 * Mark the current seek point if hit (if audio_offset == 0 that
 3067|       |	 * means we're still writing metadata and haven't hit the first
 3068|       |	 * frame yet)
 3069|       |	 */
 3070|   276k|	if(0 != encoder->private_->seek_table && encoder->protected_->audio_offset > 0 && encoder->private_->seek_table->num_points > 0) {
  ------------------
  |  Branch (3070:5): [True: 0, False: 276k]
  |  Branch (3070:43): [True: 0, False: 0]
  |  Branch (3070:84): [True: 0, False: 0]
  ------------------
 3071|      0|		const uint32_t blocksize = FLAC__stream_encoder_get_blocksize(encoder);
 3072|      0|		const FLAC__uint64 frame_first_sample = encoder->private_->samples_written;
 3073|      0|		const FLAC__uint64 frame_last_sample = frame_first_sample + (FLAC__uint64)blocksize - 1;
 3074|      0|		FLAC__uint64 test_sample;
 3075|      0|		uint32_t i;
 3076|      0|		for(i = encoder->private_->first_seekpoint_to_check; i < encoder->private_->seek_table->num_points; i++) {
  ------------------
  |  Branch (3076:56): [True: 0, False: 0]
  ------------------
 3077|      0|			test_sample = encoder->private_->seek_table->points[i].sample_number;
 3078|      0|			if(test_sample > frame_last_sample) {
  ------------------
  |  Branch (3078:7): [True: 0, False: 0]
  ------------------
 3079|      0|				break;
 3080|      0|			}
 3081|      0|			else if(test_sample >= frame_first_sample) {
  ------------------
  |  Branch (3081:12): [True: 0, False: 0]
  ------------------
 3082|       |				/* FLAC__STREAM_ENCODER_TELL_STATUS_UNSUPPORTED just means we didn't get the offset; no error */
 3083|      0|				if(output_position == 0 && encoder->private_->tell_callback && encoder->private_->tell_callback(encoder, &output_position, encoder->private_->client_data) == FLAC__STREAM_ENCODER_TELL_STATUS_ERROR) {
  ------------------
  |  Branch (3083:8): [True: 0, False: 0]
  |  Branch (3083:32): [True: 0, False: 0]
  |  Branch (3083:68): [True: 0, False: 0]
  ------------------
 3084|      0|					encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3085|      0|					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
 3086|      0|				}
 3087|       |
 3088|      0|				encoder->private_->seek_table->points[i].sample_number = frame_first_sample;
 3089|      0|				encoder->private_->seek_table->points[i].stream_offset = output_position - encoder->protected_->audio_offset;
 3090|      0|				encoder->private_->seek_table->points[i].frame_samples = blocksize;
 3091|      0|				encoder->private_->first_seekpoint_to_check++;
 3092|       |				/* DO NOT: "break;" and here's why:
 3093|       |				 * The seektable template may contain more than one target
 3094|       |				 * sample for any given frame; we will keep looping, generating
 3095|       |				 * duplicate seekpoints for them, and we'll clean it up later,
 3096|       |				 * just before writing the seektable back to the metadata.
 3097|       |				 */
 3098|      0|			}
 3099|      0|			else {
 3100|      0|				encoder->private_->first_seekpoint_to_check++;
 3101|      0|			}
 3102|      0|		}
 3103|      0|	}
 3104|       |
 3105|   276k|#if FLAC__HAS_OGG
 3106|   276k|	if(encoder->private_->is_ogg) {
  ------------------
  |  Branch (3106:5): [True: 146k, False: 130k]
  ------------------
 3107|   146k|		status = FLAC__ogg_encoder_aspect_write_callback_wrapper(
 3108|   146k|			&encoder->protected_->ogg_encoder_aspect,
 3109|   146k|			buffer,
 3110|   146k|			bytes,
 3111|   146k|			samples,
 3112|   146k|			encoder->private_->current_frame_number,
 3113|   146k|			is_last_block,
 3114|   146k|			(FLAC__OggEncoderAspectWriteCallbackProxy)encoder->private_->write_callback,
 3115|   146k|			encoder,
 3116|   146k|			encoder->private_->client_data
 3117|   146k|		);
 3118|   146k|	}
 3119|   130k|	else
 3120|   130k|#endif
 3121|   130k|	status = encoder->private_->write_callback(encoder, buffer, bytes, samples, encoder->private_->current_frame_number, encoder->private_->client_data);
 3122|       |
 3123|   276k|	if(status == FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
  ------------------
  |  Branch (3123:5): [True: 276k, False: 0]
  ------------------
 3124|   276k|		encoder->private_->bytes_written += bytes;
 3125|   276k|		encoder->private_->samples_written += samples;
 3126|       |		/* we keep a high watermark on the number of frames written because
 3127|       |		 * when the encoder goes back to write metadata, 'current_frame'
 3128|       |		 * will drop back to 0.
 3129|       |		 */
 3130|   276k|		encoder->private_->frames_written = flac_max(encoder->private_->frames_written, encoder->private_->current_frame_number+1);
  ------------------
  |  |   55|   276k|#define flac_max(a,b) MAX(a,b)
  ------------------
  |  Branch (3130:39): [True: 0, False: 276k]
  ------------------
 3131|   276k|	}
 3132|      0|	else
 3133|      0|		encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3134|       |
 3135|   276k|	return status;
 3136|   276k|}
stream_encoder.c:update_metadata_:
 3140|  6.50k|{
 3141|  6.50k|	FLAC__byte b[flac_max(6u, FLAC__STREAM_METADATA_SEEKPOINT_LENGTH)];
 3142|  6.50k|	const FLAC__StreamMetadata *metadata = &encoder->private_->streaminfo;
 3143|  6.50k|	FLAC__uint64 samples = metadata->data.stream_info.total_samples;
 3144|  6.50k|	const uint32_t min_framesize = metadata->data.stream_info.min_framesize;
 3145|  6.50k|	const uint32_t max_framesize = metadata->data.stream_info.max_framesize;
 3146|  6.50k|	const uint32_t bps = metadata->data.stream_info.bits_per_sample;
 3147|  6.50k|	FLAC__StreamEncoderSeekStatus seek_status;
 3148|       |
 3149|  6.50k|	FLAC__ASSERT(metadata->type == FLAC__METADATA_TYPE_STREAMINFO);
  ------------------
  |  |   38|  6.50k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 6.50k]
  |  |  ------------------
  ------------------
 3150|       |
 3151|       |	/* All this is based on intimate knowledge of the stream header
 3152|       |	 * layout, but a change to the header format that would break this
 3153|       |	 * would also break all streams encoded in the previous format.
 3154|       |	 */
 3155|       |
 3156|       |	/*
 3157|       |	 * Write MD5 signature
 3158|       |	 */
 3159|  6.50k|	{
 3160|  6.50k|		const uint32_t md5_offset =
 3161|  6.50k|			FLAC__STREAM_METADATA_HEADER_LENGTH +
  ------------------
  |  |  872|  6.50k|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
 3162|  6.50k|			(
 3163|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN +
 3164|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN +
 3165|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN +
 3166|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN +
 3167|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN +
 3168|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN +
 3169|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN +
 3170|  6.50k|				FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN
 3171|  6.50k|			) / 8;
 3172|       |
 3173|  6.50k|		if((seek_status = encoder->private_->seek_callback(encoder, encoder->protected_->streaminfo_offset + md5_offset, encoder->private_->client_data)) != FLAC__STREAM_ENCODER_SEEK_STATUS_OK) {
  ------------------
  |  Branch (3173:6): [True: 6.50k, False: 0]
  ------------------
 3174|  6.50k|			if(seek_status == FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR)
  ------------------
  |  Branch (3174:7): [True: 0, False: 6.50k]
  ------------------
 3175|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3176|  6.50k|			return;
 3177|  6.50k|		}
 3178|      0|		if(encoder->private_->write_callback(encoder, metadata->data.stream_info.md5sum, 16, 0, 0, encoder->private_->client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
  ------------------
  |  Branch (3178:6): [True: 0, False: 0]
  ------------------
 3179|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3180|      0|			return;
 3181|      0|		}
 3182|      0|	}
 3183|       |
 3184|       |	/*
 3185|       |	 * Write total samples
 3186|       |	 */
 3187|      0|	{
 3188|      0|		const uint32_t total_samples_byte_offset =
 3189|      0|			FLAC__STREAM_METADATA_HEADER_LENGTH +
  ------------------
  |  |  872|      0|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
 3190|      0|			(
 3191|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN +
 3192|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN +
 3193|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN +
 3194|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN +
 3195|      0|				FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN +
 3196|      0|				FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN +
 3197|      0|				FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN
 3198|      0|				- 4
 3199|      0|			) / 8;
 3200|      0|		FLAC__uint64 samples_uint36 = samples;
 3201|      0|		if(samples > (FLAC__U64L(1) << FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN))
  ------------------
  |  |  102|      0|#define FLAC__U64L(x) x##ULL
  ------------------
  |  Branch (3201:6): [True: 0, False: 0]
  ------------------
 3202|      0|			samples_uint36 = 0;
 3203|       |
 3204|      0|		b[0] = ((FLAC__byte)(bps-1) << 4) | (FLAC__byte)((samples_uint36 >> 32) & 0x0F);
 3205|      0|		b[1] = (FLAC__byte)((samples_uint36 >> 24) & 0xFF);
 3206|      0|		b[2] = (FLAC__byte)((samples_uint36 >> 16) & 0xFF);
 3207|      0|		b[3] = (FLAC__byte)((samples_uint36 >> 8) & 0xFF);
 3208|      0|		b[4] = (FLAC__byte)(samples_uint36 & 0xFF);
 3209|      0|		if((seek_status = encoder->private_->seek_callback(encoder, encoder->protected_->streaminfo_offset + total_samples_byte_offset, encoder->private_->client_data)) != FLAC__STREAM_ENCODER_SEEK_STATUS_OK) {
  ------------------
  |  Branch (3209:6): [True: 0, False: 0]
  ------------------
 3210|      0|			if(seek_status == FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR)
  ------------------
  |  Branch (3210:7): [True: 0, False: 0]
  ------------------
 3211|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3212|      0|			return;
 3213|      0|		}
 3214|      0|		if(encoder->private_->write_callback(encoder, b, 5, 0, 0, encoder->private_->client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
  ------------------
  |  Branch (3214:6): [True: 0, False: 0]
  ------------------
 3215|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3216|      0|			return;
 3217|      0|		}
 3218|      0|	}
 3219|       |
 3220|       |	/*
 3221|       |	 * Write min/max framesize
 3222|       |	 */
 3223|      0|	{
 3224|      0|		const uint32_t min_framesize_offset =
 3225|      0|			FLAC__STREAM_METADATA_HEADER_LENGTH +
  ------------------
  |  |  872|      0|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
 3226|      0|			(
 3227|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN +
 3228|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN
 3229|      0|			) / 8;
 3230|       |
 3231|      0|		b[0] = (FLAC__byte)((min_framesize >> 16) & 0xFF);
 3232|      0|		b[1] = (FLAC__byte)((min_framesize >> 8) & 0xFF);
 3233|      0|		b[2] = (FLAC__byte)(min_framesize & 0xFF);
 3234|      0|		b[3] = (FLAC__byte)((max_framesize >> 16) & 0xFF);
 3235|      0|		b[4] = (FLAC__byte)((max_framesize >> 8) & 0xFF);
 3236|      0|		b[5] = (FLAC__byte)(max_framesize & 0xFF);
 3237|      0|		if((seek_status = encoder->private_->seek_callback(encoder, encoder->protected_->streaminfo_offset + min_framesize_offset, encoder->private_->client_data)) != FLAC__STREAM_ENCODER_SEEK_STATUS_OK) {
  ------------------
  |  Branch (3237:6): [True: 0, False: 0]
  ------------------
 3238|      0|			if(seek_status == FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR)
  ------------------
  |  Branch (3238:7): [True: 0, False: 0]
  ------------------
 3239|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3240|      0|			return;
 3241|      0|		}
 3242|      0|		if(encoder->private_->write_callback(encoder, b, 6, 0, 0, encoder->private_->client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
  ------------------
  |  Branch (3242:6): [True: 0, False: 0]
  ------------------
 3243|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3244|      0|			return;
 3245|      0|		}
 3246|      0|	}
 3247|       |
 3248|       |	/*
 3249|       |	 * Write seektable
 3250|       |	 */
 3251|      0|	if(0 != encoder->private_->seek_table && encoder->private_->seek_table->num_points > 0 && encoder->protected_->seektable_offset > 0) {
  ------------------
  |  Branch (3251:5): [True: 0, False: 0]
  |  Branch (3251:43): [True: 0, False: 0]
  |  Branch (3251:92): [True: 0, False: 0]
  ------------------
 3252|      0|		uint32_t i;
 3253|       |
 3254|       |		/* Convert unused seekpoints to placeholders */
 3255|      0|		for(i = 0; i < encoder->private_->seek_table->num_points; i++)
  ------------------
  |  Branch (3255:14): [True: 0, False: 0]
  ------------------
 3256|      0|			if(encoder->private_->seek_table->points[i].sample_number > samples)
  ------------------
  |  Branch (3256:7): [True: 0, False: 0]
  ------------------
 3257|      0|				encoder->private_->seek_table->points[i].sample_number = FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER;
 3258|       |
 3259|      0|		FLAC__format_seektable_sort(encoder->private_->seek_table);
 3260|       |
 3261|      0|		FLAC__ASSERT(FLAC__format_seektable_is_legal(encoder->private_->seek_table));
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3262|       |
 3263|      0|		if((seek_status = encoder->private_->seek_callback(encoder, encoder->protected_->seektable_offset + FLAC__STREAM_METADATA_HEADER_LENGTH, encoder->private_->client_data)) != FLAC__STREAM_ENCODER_SEEK_STATUS_OK) {
  ------------------
  |  |  872|      0|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
  |  Branch (3263:6): [True: 0, False: 0]
  ------------------
 3264|      0|			if(seek_status == FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR)
  ------------------
  |  Branch (3264:7): [True: 0, False: 0]
  ------------------
 3265|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3266|      0|			return;
 3267|      0|		}
 3268|       |
 3269|      0|		for(i = 0; i < encoder->private_->seek_table->num_points; i++) {
  ------------------
  |  Branch (3269:14): [True: 0, False: 0]
  ------------------
 3270|      0|			FLAC__uint64 xx;
 3271|      0|			uint32_t x;
 3272|      0|			xx = encoder->private_->seek_table->points[i].sample_number;
 3273|      0|			b[7] = (FLAC__byte)xx; xx >>= 8;
 3274|      0|			b[6] = (FLAC__byte)xx; xx >>= 8;
 3275|      0|			b[5] = (FLAC__byte)xx; xx >>= 8;
 3276|      0|			b[4] = (FLAC__byte)xx; xx >>= 8;
 3277|      0|			b[3] = (FLAC__byte)xx; xx >>= 8;
 3278|      0|			b[2] = (FLAC__byte)xx; xx >>= 8;
 3279|      0|			b[1] = (FLAC__byte)xx; xx >>= 8;
 3280|      0|			b[0] = (FLAC__byte)xx; xx >>= 8;
 3281|      0|			xx = encoder->private_->seek_table->points[i].stream_offset;
 3282|      0|			b[15] = (FLAC__byte)xx; xx >>= 8;
 3283|      0|			b[14] = (FLAC__byte)xx; xx >>= 8;
 3284|      0|			b[13] = (FLAC__byte)xx; xx >>= 8;
 3285|      0|			b[12] = (FLAC__byte)xx; xx >>= 8;
 3286|      0|			b[11] = (FLAC__byte)xx; xx >>= 8;
 3287|      0|			b[10] = (FLAC__byte)xx; xx >>= 8;
 3288|      0|			b[9] = (FLAC__byte)xx; xx >>= 8;
 3289|      0|			b[8] = (FLAC__byte)xx; xx >>= 8;
 3290|      0|			x = encoder->private_->seek_table->points[i].frame_samples;
 3291|      0|			b[17] = (FLAC__byte)x; x >>= 8;
 3292|      0|			b[16] = (FLAC__byte)x; x >>= 8;
 3293|      0|			if(encoder->private_->write_callback(encoder, b, 18, 0, 0, encoder->private_->client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
  ------------------
  |  Branch (3293:7): [True: 0, False: 0]
  ------------------
 3294|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
 3295|      0|				return;
 3296|      0|			}
 3297|      0|		}
 3298|      0|	}
 3299|      0|}
stream_encoder.c:update_ogg_metadata_:
 3304|  2.96k|{
 3305|       |	/* the # of bytes in the 1st packet that precede the STREAMINFO */
 3306|  2.96k|	static const uint32_t FIRST_OGG_PACKET_STREAMINFO_PREFIX_LENGTH =
 3307|  2.96k|		FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH +
  ------------------
  |  |   39|  2.96k|#define FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH (1u)
  ------------------
 3308|  2.96k|		FLAC__OGG_MAPPING_MAGIC_LENGTH +
  ------------------
  |  |   46|  2.96k|#define FLAC__OGG_MAPPING_MAGIC_LENGTH (4u)
  ------------------
 3309|  2.96k|		FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH +
  ------------------
  |  |   54|  2.96k|#define FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH (1u)
  ------------------
 3310|  2.96k|		FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH +
  ------------------
  |  |   57|  2.96k|#define FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH (1u)
  ------------------
 3311|  2.96k|		FLAC__OGG_MAPPING_NUM_HEADERS_LENGTH +
  ------------------
  |  |   62|  2.96k|#define FLAC__OGG_MAPPING_NUM_HEADERS_LENGTH (2u)
  ------------------
 3312|  2.96k|		FLAC__STREAM_SYNC_LENGTH
  ------------------
  |  |  179|  2.96k|#define FLAC__STREAM_SYNC_LENGTH (4u)
  ------------------
 3313|  2.96k|	;
 3314|  2.96k|	FLAC__byte b[flac_max(6u, FLAC__STREAM_METADATA_SEEKPOINT_LENGTH)];
 3315|  2.96k|	const FLAC__StreamMetadata *metadata = &encoder->private_->streaminfo;
 3316|  2.96k|	const FLAC__uint64 samples = metadata->data.stream_info.total_samples;
 3317|  2.96k|	const uint32_t min_framesize = metadata->data.stream_info.min_framesize;
 3318|  2.96k|	const uint32_t max_framesize = metadata->data.stream_info.max_framesize;
 3319|  2.96k|	ogg_page page;
 3320|       |
 3321|  2.96k|	FLAC__ASSERT(metadata->type == FLAC__METADATA_TYPE_STREAMINFO);
  ------------------
  |  |   38|  2.96k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 2.96k]
  |  |  ------------------
  ------------------
 3322|  2.96k|	FLAC__ASSERT(0 != encoder->private_->seek_callback);
  ------------------
  |  |   38|  2.96k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 2.96k]
  |  |  ------------------
  ------------------
 3323|       |
 3324|       |	/* Pre-check that client supports seeking, since we don't want the
 3325|       |	 * ogg_helper code to ever have to deal with this condition.
 3326|       |	 */
 3327|  2.96k|	if(encoder->private_->seek_callback(encoder, 0, encoder->private_->client_data) == FLAC__STREAM_ENCODER_SEEK_STATUS_UNSUPPORTED)
  ------------------
  |  Branch (3327:5): [True: 2.96k, False: 0]
  ------------------
 3328|  2.96k|		return;
 3329|       |
 3330|       |	/* All this is based on intimate knowledge of the stream header
 3331|       |	 * layout, but a change to the header format that would break this
 3332|       |	 * would also break all streams encoded in the previous format.
 3333|       |	 */
 3334|       |
 3335|       |	/**
 3336|       |	 ** Write STREAMINFO stats
 3337|       |	 **/
 3338|      0|	simple_ogg_page__init(&page);
 3339|      0|	if(!simple_ogg_page__get_at(encoder, encoder->protected_->streaminfo_offset, &page, encoder->private_->seek_callback, encoder->private_->read_callback, encoder->private_->client_data)) {
  ------------------
  |  Branch (3339:5): [True: 0, False: 0]
  ------------------
 3340|      0|		simple_ogg_page__clear(&page);
 3341|      0|		return; /* state already set */
 3342|      0|	}
 3343|       |
 3344|       |	/*
 3345|       |	 * Write MD5 signature
 3346|       |	 */
 3347|      0|	{
 3348|      0|		const uint32_t md5_offset =
 3349|      0|			FIRST_OGG_PACKET_STREAMINFO_PREFIX_LENGTH +
 3350|      0|			FLAC__STREAM_METADATA_HEADER_LENGTH +
  ------------------
  |  |  872|      0|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
 3351|      0|			(
 3352|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN +
 3353|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN +
 3354|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN +
 3355|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN +
 3356|      0|				FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN +
 3357|      0|				FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN +
 3358|      0|				FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN +
 3359|      0|				FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN
 3360|      0|			) / 8;
 3361|       |
 3362|      0|		if(md5_offset + 16 > (uint32_t)page.body_len) {
  ------------------
  |  Branch (3362:6): [True: 0, False: 0]
  ------------------
 3363|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
 3364|      0|			simple_ogg_page__clear(&page);
 3365|      0|			return;
 3366|      0|		}
 3367|      0|		memcpy(page.body + md5_offset, metadata->data.stream_info.md5sum, 16);
 3368|      0|	}
 3369|       |
 3370|       |	/*
 3371|       |	 * Write total samples
 3372|       |	 */
 3373|      0|	{
 3374|      0|		const uint32_t total_samples_byte_offset =
 3375|      0|			FIRST_OGG_PACKET_STREAMINFO_PREFIX_LENGTH +
 3376|      0|			FLAC__STREAM_METADATA_HEADER_LENGTH +
  ------------------
  |  |  872|      0|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
 3377|      0|			(
 3378|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN +
 3379|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN +
 3380|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN +
 3381|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN +
 3382|      0|				FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN +
 3383|      0|				FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN +
 3384|      0|				FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN
 3385|      0|				- 4
 3386|      0|			) / 8;
 3387|       |
 3388|      0|		if(total_samples_byte_offset + 5 > (uint32_t)page.body_len) {
  ------------------
  |  Branch (3388:6): [True: 0, False: 0]
  ------------------
 3389|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
 3390|      0|			simple_ogg_page__clear(&page);
 3391|      0|			return;
 3392|      0|		}
 3393|      0|		b[0] = (FLAC__byte)page.body[total_samples_byte_offset] & 0xF0;
 3394|      0|		b[0] |= (FLAC__byte)((samples >> 32) & 0x0F);
 3395|      0|		b[1] = (FLAC__byte)((samples >> 24) & 0xFF);
 3396|      0|		b[2] = (FLAC__byte)((samples >> 16) & 0xFF);
 3397|      0|		b[3] = (FLAC__byte)((samples >> 8) & 0xFF);
 3398|      0|		b[4] = (FLAC__byte)(samples & 0xFF);
 3399|      0|		memcpy(page.body + total_samples_byte_offset, b, 5);
 3400|      0|	}
 3401|       |
 3402|       |	/*
 3403|       |	 * Write min/max framesize
 3404|       |	 */
 3405|      0|	{
 3406|      0|		const uint32_t min_framesize_offset =
 3407|      0|			FIRST_OGG_PACKET_STREAMINFO_PREFIX_LENGTH +
 3408|      0|			FLAC__STREAM_METADATA_HEADER_LENGTH +
  ------------------
  |  |  872|      0|#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)
  ------------------
 3409|      0|			(
 3410|      0|				FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN +
 3411|      0|				FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN
 3412|      0|			) / 8;
 3413|       |
 3414|      0|		if(min_framesize_offset + 6 > (uint32_t)page.body_len) {
  ------------------
  |  Branch (3414:6): [True: 0, False: 0]
  ------------------
 3415|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
 3416|      0|			simple_ogg_page__clear(&page);
 3417|      0|			return;
 3418|      0|		}
 3419|      0|		b[0] = (FLAC__byte)((min_framesize >> 16) & 0xFF);
 3420|      0|		b[1] = (FLAC__byte)((min_framesize >> 8) & 0xFF);
 3421|      0|		b[2] = (FLAC__byte)(min_framesize & 0xFF);
 3422|      0|		b[3] = (FLAC__byte)((max_framesize >> 16) & 0xFF);
 3423|      0|		b[4] = (FLAC__byte)((max_framesize >> 8) & 0xFF);
 3424|      0|		b[5] = (FLAC__byte)(max_framesize & 0xFF);
 3425|      0|		memcpy(page.body + min_framesize_offset, b, 6);
 3426|      0|	}
 3427|      0|	if(!simple_ogg_page__set_at(encoder, encoder->protected_->streaminfo_offset, &page, encoder->private_->seek_callback, encoder->private_->write_callback, encoder->private_->client_data)) {
  ------------------
  |  Branch (3427:5): [True: 0, False: 0]
  ------------------
 3428|      0|		simple_ogg_page__clear(&page);
 3429|      0|		return; /* state already set */
 3430|      0|	}
 3431|      0|	simple_ogg_page__clear(&page);
 3432|      0|}
stream_encoder.c:process_frame_:
 3436|   247k|{
 3437|   247k|	FLAC__uint16 crc;
 3438|   247k|#ifdef FLAC__USE_THREADS
 3439|   247k|	uint32_t i;
 3440|   247k|#endif
 3441|   247k|	if(encoder->protected_->num_threads < 2 || is_last_block) {
  ------------------
  |  Branch (3441:5): [True: 150k, False: 96.9k]
  |  Branch (3441:45): [True: 763, False: 96.2k]
  ------------------
 3442|       |
 3443|   151k|		FLAC__ASSERT(encoder->protected_->state == FLAC__STREAM_ENCODER_OK);
  ------------------
  |  |   38|   151k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 151k]
  |  |  ------------------
  ------------------
 3444|       |
 3445|       |		/*
 3446|       |		 * Accumulate raw signal to the MD5 signature
 3447|       |		 */
 3448|   151k|		if(encoder->protected_->do_md5 && !FLAC__MD5Accumulate(&encoder->private_->md5context, (const FLAC__int32 * const *)encoder->private_->threadtask[0]->integer_signal, encoder->protected_->channels, encoder->protected_->blocksize, (encoder->protected_->bits_per_sample+7) / 8)) {
  ------------------
  |  Branch (3448:6): [True: 151k, False: 0]
  |  Branch (3448:37): [True: 0, False: 151k]
  ------------------
 3449|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 3450|      0|			return false;
 3451|      0|		}
 3452|       |
 3453|       |		/*
 3454|       |		 * Process the frame header and subframes into the frame bitbuffer
 3455|       |		 */
 3456|   151k|		encoder->private_->threadtask[0]->current_frame_number = encoder->private_->current_frame_number;
 3457|   151k|		if(!process_subframes_(encoder, encoder->private_->threadtask[0])) {
  ------------------
  |  Branch (3457:6): [True: 0, False: 151k]
  ------------------
 3458|       |			/* the above function sets the state for us in case of an error */
 3459|      0|			return false;
 3460|      0|		}
 3461|       |
 3462|       |		/*
 3463|       |		 * Zero-pad the frame to a byte_boundary
 3464|       |		 */
 3465|   151k|		if(!FLAC__bitwriter_zero_pad_to_byte_boundary(encoder->private_->threadtask[0]->frame)) {
  ------------------
  |  Branch (3465:6): [True: 0, False: 151k]
  ------------------
 3466|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 3467|      0|			return false;
 3468|      0|		}
 3469|       |
 3470|       |		/*
 3471|       |		 * CRC-16 the whole thing
 3472|       |		 */
 3473|   151k|		FLAC__ASSERT(FLAC__bitwriter_is_byte_aligned(encoder->private_->threadtask[0]->frame));
  ------------------
  |  |   38|   151k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 151k]
  |  |  ------------------
  ------------------
 3474|   151k|		if(
 3475|   151k|			!FLAC__bitwriter_get_write_crc16(encoder->private_->threadtask[0]->frame, &crc) ||
  ------------------
  |  Branch (3475:4): [True: 0, False: 151k]
  ------------------
 3476|   151k|			!FLAC__bitwriter_write_raw_uint32(encoder->private_->threadtask[0]->frame, crc, FLAC__FRAME_FOOTER_CRC_LEN)
  ------------------
  |  Branch (3476:4): [True: 0, False: 151k]
  ------------------
 3477|   151k|		) {
 3478|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
 3479|      0|			return false;
 3480|      0|		}
 3481|       |
 3482|       |		/*
 3483|       |		 * Write it
 3484|       |		 */
 3485|   151k|		if(!write_bitbuffer_(encoder, encoder->private_->threadtask[0], encoder->protected_->blocksize, is_last_block)) {
  ------------------
  |  Branch (3485:6): [True: 0, False: 151k]
  ------------------
 3486|       |			/* the above function sets the state for us in case of an error */
 3487|      0|			return false;
 3488|      0|		}
 3489|   151k|	}
 3490|  96.2k|	else {
 3491|  96.2k|#ifdef FLAC__USE_THREADS
 3492|       |		/* This bit is quite complicated, so here are some pointers:
 3493|       |		 *
 3494|       |		 * When this bit of code is reached for the first time, new threads are spawned and
 3495|       |		 * threadtasks are populated until the total number of threads equals the requested number
 3496|       |		 * of threads. Next, threadtasks are populated until they there are no more available.
 3497|       |		 * Next, this main thread checks whether the threadtask that is due chronologically is
 3498|       |		 * done. If it is, the bitbuffer is written and the threadtask memory reused for the next
 3499|       |		 * frame. If it is not done, the main thread checks whether there is enough work left in the
 3500|       |		 * queue. If there is a lot of work left, the main thread starts on some of it too.
 3501|       |		 * If not a lot of work is left, the main thread goes to sleep until the frame due first is
 3502|       |		 * finished.
 3503|       |		 *
 3504|       |		 * - encoder->private_->next_thread is the number of the next thread to be created or, when
 3505|       |		 *    the required number of threads is created, the next threadtask to be populated,
 3506|       |		 *    or, when all threadtasks have been populated once, the next threadtask that needs
 3507|       |		 *    to finish and thus reused.
 3508|       |		 * - encoder->private_->next_threadtask is the number of the next threadtask that a thread
 3509|       |		 *    can start work on.
 3510|       |		 *
 3511|       |		 * So, in effect, next_thread is (after startup) a pointer considering the chronological
 3512|       |		 * order, so input/output isn't shuffled. next_threadtask is a pointer to the next task that
 3513|       |		 * hasn't been picked up by a thread yet. This distinction enables threads to work on frames
 3514|       |		 * in a non-chronological order
 3515|       |		 *
 3516|       |		 * encoder->protected_->num_threads is the max number of threads that can be spawned
 3517|       |		 * encoder->private_->num_created_threads is the number of threads that has been spawned
 3518|       |		 * encoder->private_->num_threadtasks keeps track of how many threadtasks are available
 3519|       |		 * encoder->private_->num_started_threadtasks keeps track of how many threadtasks have been populated
 3520|       |		 *
 3521|       |		 * NOTE: thread no. 0 and threadtask no. 0 are reserved for non-threaded operations, so next_thread
 3522|       |		 * and next_threadtask start at 1
 3523|       |		 */
 3524|  96.2k|		if(encoder->private_->num_created_threads < encoder->protected_->num_threads) {
  ------------------
  |  Branch (3524:6): [True: 2.70k, False: 93.5k]
  ------------------
 3525|       |			/* Create a new thread */
 3526|  2.70k|			FLAC__thrd_create(&encoder->private_->thread[encoder->private_->next_thread],
  ------------------
  |  |   98|  2.70k|#define FLAC__thrd_create(thread, func, arg) pthread_create(thread, NULL, func, arg)
  ------------------
 3527|  2.70k|					process_frame_thread_, encoder);
 3528|  2.70k|			encoder->private_->num_created_threads++;
 3529|  2.70k|		}
 3530|  93.5k|		else if(encoder->private_->num_started_threadtasks == encoder->private_->num_threadtasks) {
  ------------------
  |  Branch (3530:11): [True: 90.7k, False: 2.80k]
  ------------------
 3531|       |			/* If the first task in the queue is still running, check whether there is enough work
 3532|       |			 * left in the queue. If there is, start on some
 3533|       |			 * First, check whether the mutex for the next due task is locked or free. If it is free (and thus acquired now) and
 3534|       |			 * the task is done, proceed to the next bit (writing the bitbuffer). If it is either currently locked or not yet
 3535|       |			 * processed, choose between starting on some work (if there is enough work in the queue) or waiting for the task
 3536|       |			 * to finish. Either way, release the mutex first, so it doesn't get interlocked with the work queue mutex  */
 3537|  90.7k|			int mutex_result = (FLAC__mtx_trylock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task) == FLAC__thrd_success) ? 0 : 1;
  ------------------
  |  |  104|  90.7k|#define FLAC__mtx_trylock(mutex)             ((pthread_mutex_trylock(mutex) == 0) ? FLAC__thrd_success : FLAC__thrd_busy)
  |  |  ------------------
  |  |  |  |   93|  85.8k|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__mtx_trylock(mutex)             ((pthread_mutex_trylock(mutex) == 0) ? FLAC__thrd_success : FLAC__thrd_busy)
  |  |  ------------------
  |  |  |  |   94|  90.7k|#define FLAC__thrd_busy                      EBUSY
  |  |  ------------------
  |  |  |  Branch (104:47): [True: 85.8k, False: 4.88k]
  |  |  ------------------
  ------------------
              			int mutex_result = (FLAC__mtx_trylock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task) == FLAC__thrd_success) ? 0 : 1;
  ------------------
  |  |   93|  90.7k|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (3537:23): [True: 85.8k, False: 4.88k]
  ------------------
 3538|   102k|			while(mutex_result || !encoder->private_->threadtask[encoder->private_->next_thread]->task_done) {
  ------------------
  |  Branch (3538:10): [True: 7.34k, False: 94.9k]
  |  Branch (3538:26): [True: 4.24k, False: 90.7k]
  ------------------
 3539|  11.5k|				if(!mutex_result)
  ------------------
  |  Branch (3539:8): [True: 4.24k, False: 7.34k]
  ------------------
 3540|  4.24k|					FLAC__mtx_unlock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  106|  4.24k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3541|       |
 3542|  11.5k|				FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|  11.5k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3543|  11.5k|				if(encoder->private_->num_available_threadtasks > (encoder->protected_->num_threads - 1)) {
  ------------------
  |  Branch (3543:8): [True: 10.7k, False: 849]
  ------------------
 3544|  10.7k|					FLAC__StreamEncoderThreadTask * task = NULL;
 3545|  10.7k|					task = encoder->private_->threadtask[encoder->private_->next_threadtask];
 3546|  10.7k|					encoder->private_->num_available_threadtasks--;
 3547|  10.7k|					encoder->private_->next_threadtask++;
 3548|  10.7k|					if(encoder->private_->next_threadtask == encoder->private_->num_threadtasks)
  ------------------
  |  Branch (3548:9): [True: 1.77k, False: 8.96k]
  ------------------
 3549|  1.77k|						encoder->private_->next_threadtask = 1;
 3550|  10.7k|					FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  10.7k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3551|  10.7k|					FLAC__mtx_lock(&task->mutex_this_task);
  ------------------
  |  |  105|  10.7k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3552|  10.7k|					process_frame_thread_inner_(encoder, task);
 3553|  10.7k|					mutex_result = (FLAC__mtx_trylock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task) == FLAC__thrd_success) ? 0 : 1;
  ------------------
  |  |  104|  10.7k|#define FLAC__mtx_trylock(mutex)             ((pthread_mutex_trylock(mutex) == 0) ? FLAC__thrd_success : FLAC__thrd_busy)
  |  |  ------------------
  |  |  |  |   93|  8.28k|#define FLAC__thrd_success                   0
  |  |  ------------------
  |  |               #define FLAC__mtx_trylock(mutex)             ((pthread_mutex_trylock(mutex) == 0) ? FLAC__thrd_success : FLAC__thrd_busy)
  |  |  ------------------
  |  |  |  |   94|  10.7k|#define FLAC__thrd_busy                      EBUSY
  |  |  ------------------
  |  |  |  Branch (104:47): [True: 8.28k, False: 2.46k]
  |  |  ------------------
  ------------------
              					mutex_result = (FLAC__mtx_trylock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task) == FLAC__thrd_success) ? 0 : 1;
  ------------------
  |  |   93|  10.7k|#define FLAC__thrd_success                   0
  ------------------
  |  Branch (3553:21): [True: 8.28k, False: 2.46k]
  ------------------
 3554|  10.7k|				}
 3555|    849|				else {
 3556|    849|					FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|    849|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3557|    849|					FLAC__mtx_lock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  105|    849|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3558|    855|					while(!encoder->private_->threadtask[encoder->private_->next_thread]->task_done)
  ------------------
  |  Branch (3558:12): [True: 6, False: 849]
  ------------------
 3559|      6|						FLAC__cnd_wait(&encoder->private_->threadtask[encoder->private_->next_thread]->cond_task_done,&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  113|      6|#define FLAC__cnd_wait(cv, mutex)            pthread_cond_wait(cv, mutex)
  ------------------
 3560|    849|					mutex_result = 0;
 3561|    849|				}
 3562|  11.5k|			}
 3563|       |			/* Task is finished, write bitbuffer */
 3564|  90.7k|			if(!encoder->private_->threadtask[encoder->private_->next_thread]->returnvalue) {
  ------------------
  |  Branch (3564:7): [True: 0, False: 90.7k]
  ------------------
 3565|      0|				FLAC__mtx_unlock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  106|      0|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3566|      0|				return false;
 3567|      0|			}
 3568|  90.7k|			if(!write_bitbuffer_(encoder, encoder->private_->threadtask[encoder->private_->next_thread], encoder->protected_->blocksize, is_last_block)) {
  ------------------
  |  Branch (3568:7): [True: 0, False: 90.7k]
  ------------------
 3569|       |				/* the above function sets the state for us in case of an error */
 3570|      0|				FLAC__mtx_unlock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  106|      0|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3571|      0|				return false;
 3572|      0|			}
 3573|  90.7k|			FLAC__mtx_unlock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  106|  90.7k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3574|  90.7k|		}
 3575|       |		/* Copy input data for MD5 calculation */
 3576|  96.2k|		if(encoder->protected_->do_md5) {
  ------------------
  |  Branch (3576:6): [True: 96.2k, False: 0]
  ------------------
 3577|  96.2k|			FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|  96.2k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3578|  96.5k|			while(encoder->private_->md5_fifo.tail + encoder->protected_->blocksize > encoder->private_->md5_fifo.size) {
  ------------------
  |  Branch (3578:10): [True: 340, False: 96.2k]
  ------------------
 3579|    340|				FLAC__cnd_wait(&encoder->private_->cond_md5_emptied,&encoder->private_->mutex_work_queue);
  ------------------
  |  |  113|    340|#define FLAC__cnd_wait(cv, mutex)            pthread_cond_wait(cv, mutex)
  ------------------
 3580|    340|			}
 3581|  96.2k|			FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  96.2k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3582|  96.2k|			FLAC__mtx_lock(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  105|  96.2k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3583|   198k|			for(i = 0; i < encoder->protected_->channels; i++)
  ------------------
  |  Branch (3583:15): [True: 102k, False: 96.2k]
  ------------------
 3584|   102k|				memcpy(encoder->private_->md5_fifo.data[i]+encoder->private_->md5_fifo.tail, encoder->private_->threadtask[0]->integer_signal[i], encoder->protected_->blocksize * sizeof(encoder->private_->threadtask[0]->integer_signal[i][0]));
 3585|  96.2k|			FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|  96.2k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3586|  96.2k|			encoder->private_->md5_fifo.tail += encoder->protected_->blocksize;
 3587|  96.2k|			FLAC__cnd_signal(&encoder->private_->cond_work_available);
  ------------------
  |  |  112|  96.2k|#define FLAC__cnd_signal(cv)                 pthread_cond_signal(cv)
  ------------------
 3588|  96.2k|			FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  96.2k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3589|  96.2k|			FLAC__mtx_unlock(&encoder->private_->mutex_md5_fifo);
  ------------------
  |  |  106|  96.2k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3590|  96.2k|		}
 3591|       |
 3592|       |		/* Copy input data for frame creation */
 3593|  96.2k|		FLAC__mtx_lock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  105|  96.2k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3594|   198k|		for(i = 0; i < encoder->protected_->channels; i++)
  ------------------
  |  Branch (3594:14): [True: 102k, False: 96.2k]
  ------------------
 3595|   102k|			memcpy(encoder->private_->threadtask[encoder->private_->next_thread]->integer_signal[i], encoder->private_->threadtask[0]->integer_signal[i], encoder->protected_->blocksize * sizeof(encoder->private_->threadtask[0]->integer_signal[i][0]));
 3596|       |
 3597|  96.2k|		encoder->private_->threadtask[encoder->private_->next_thread]->current_frame_number = encoder->private_->current_frame_number;
 3598|  96.2k|		FLAC__mtx_unlock(&encoder->private_->threadtask[encoder->private_->next_thread]->mutex_this_task);
  ------------------
  |  |  106|  96.2k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3599|       |
 3600|  96.2k|		FLAC__mtx_lock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  105|  96.2k|#define FLAC__mtx_lock(mutex)                pthread_mutex_lock(mutex)
  ------------------
 3601|  96.2k|		if(encoder->private_->num_started_threadtasks < encoder->private_->num_threadtasks)
  ------------------
  |  Branch (3601:6): [True: 5.51k, False: 90.7k]
  ------------------
 3602|  5.51k|			encoder->private_->num_started_threadtasks++;
 3603|  96.2k|		encoder->private_->num_available_threadtasks++;
 3604|  96.2k|		encoder->private_->threadtask[encoder->private_->next_thread]->task_done = false;
 3605|  96.2k|		FLAC__cnd_signal(&encoder->private_->cond_work_available);
  ------------------
  |  |  112|  96.2k|#define FLAC__cnd_signal(cv)                 pthread_cond_signal(cv)
  ------------------
 3606|  96.2k|		FLAC__mtx_unlock(&encoder->private_->mutex_work_queue);
  ------------------
  |  |  106|  96.2k|#define FLAC__mtx_unlock(mutex)              pthread_mutex_unlock(mutex)
  ------------------
 3607|       |
 3608|  96.2k|		encoder->private_->next_thread++;
 3609|  96.2k|		if(encoder->private_->next_thread == encoder->private_->num_threadtasks)
  ------------------
  |  Branch (3609:6): [True: 9.25k, False: 86.9k]
  ------------------
 3610|  9.25k|			encoder->private_->next_thread = 1;
 3611|       |#else
 3612|       |		FLAC__ASSERT(0);
 3613|       |#endif
 3614|  96.2k|	}
 3615|       |
 3616|       |	/*
 3617|       |	 * Get ready for the next frame
 3618|       |	 */
 3619|   247k|	encoder->private_->current_sample_number = 0;
 3620|   247k|	encoder->private_->current_frame_number++;
 3621|   247k|	encoder->private_->streaminfo.data.stream_info.total_samples += (FLAC__uint64)encoder->protected_->blocksize;
 3622|       |
 3623|       |	return true;
 3624|   247k|}
stream_encoder.c:process_subframes_:
 3748|   247k|{
 3749|   247k|	FLAC__FrameHeader frame_header;
 3750|   247k|	uint32_t channel, min_partition_order = encoder->protected_->min_residual_partition_order, max_partition_order;
 3751|   247k|	FLAC__bool do_independent, do_mid_side, all_subframes_constant = true;
 3752|       |
 3753|   247k|	threadtask->disable_constant_subframes = encoder->private_->disable_constant_subframes;
 3754|       |
 3755|       |	/*
 3756|       |	 * Calculate the min,max Rice partition orders
 3757|       |	 */
 3758|       |
 3759|   247k|	max_partition_order = FLAC__format_get_max_rice_partition_order_from_blocksize(encoder->protected_->blocksize);
 3760|   247k|	max_partition_order = flac_min(max_partition_order, encoder->protected_->max_residual_partition_order);
  ------------------
  |  |   56|   247k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (3760:24): [True: 158k, False: 89.0k]
  ------------------
 3761|   247k|	min_partition_order = flac_min(min_partition_order, max_partition_order);
  ------------------
  |  |   56|   247k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (3761:24): [True: 40.3k, False: 207k]
  ------------------
 3762|       |
 3763|       |	/*
 3764|       |	 * Setup the frame
 3765|       |	 */
 3766|   247k|	frame_header.blocksize = encoder->protected_->blocksize;
 3767|   247k|	frame_header.sample_rate = encoder->protected_->sample_rate;
 3768|   247k|	frame_header.channels = encoder->protected_->channels;
 3769|   247k|	frame_header.channel_assignment = FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT; /* the default unless the encoder determines otherwise */
 3770|   247k|	frame_header.bits_per_sample = encoder->protected_->bits_per_sample;
 3771|   247k|	frame_header.number_type = FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER;
 3772|   247k|	frame_header.number.frame_number = threadtask->current_frame_number;
 3773|       |
 3774|       |	/*
 3775|       |	 * Figure out what channel assignments to try
 3776|       |	 */
 3777|   247k|	if(encoder->protected_->do_mid_side_stereo) {
  ------------------
  |  Branch (3777:5): [True: 44.4k, False: 203k]
  ------------------
 3778|  44.4k|		if(encoder->protected_->loose_mid_side_stereo) {
  ------------------
  |  Branch (3778:6): [True: 4.22k, False: 40.1k]
  ------------------
 3779|  4.22k|			uint64_t sumAbsLR = 0, sumAbsMS = 0;
 3780|  4.22k|			uint32_t i;
 3781|  4.22k|			if(encoder->protected_->bits_per_sample < 25) {
  ------------------
  |  Branch (3781:7): [True: 2.12k, False: 2.10k]
  ------------------
 3782|  37.4k|				for(i = 1; i < encoder->protected_->blocksize; i++) {
  ------------------
  |  Branch (3782:16): [True: 35.3k, False: 2.12k]
  ------------------
 3783|  35.3k|					int32_t predictionLeft = threadtask->integer_signal[0][i] - threadtask->integer_signal[0][i-1];
 3784|  35.3k|					int32_t predictionRight = threadtask->integer_signal[1][i] - threadtask->integer_signal[1][i-1];
 3785|  35.3k|					sumAbsLR += abs(predictionLeft) + abs(predictionRight);
 3786|  35.3k|					sumAbsMS += abs((predictionLeft + predictionRight) >> 1) + abs(predictionLeft - predictionRight);
 3787|  35.3k|				}
 3788|  2.12k|			}
 3789|  2.10k|			else { /* bps 25 or higher */
 3790|  1.47M|				for(i = 1; i < encoder->protected_->blocksize; i++) {
  ------------------
  |  Branch (3790:16): [True: 1.46M, False: 2.10k]
  ------------------
 3791|  1.46M|					int64_t predictionLeft = (int64_t)threadtask->integer_signal[0][i] - (int64_t)threadtask->integer_signal[0][i-1];
 3792|  1.46M|					int64_t predictionRight = (int64_t)threadtask->integer_signal[1][i] - (int64_t)threadtask->integer_signal[1][i-1];
 3793|  1.46M|					sumAbsLR += local_abs64(predictionLeft) + local_abs64(predictionRight);
  ------------------
  |  |   87|  1.46M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (87:36): [True: 50.6k, False: 1.41M]
  |  |  ------------------
  ------------------
              					sumAbsLR += local_abs64(predictionLeft) + local_abs64(predictionRight);
  ------------------
  |  |   87|  1.46M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (87:36): [True: 51.1k, False: 1.41M]
  |  |  ------------------
  ------------------
 3794|  1.46M|					sumAbsMS += local_abs64((predictionLeft + predictionRight) >> 1) + local_abs64(predictionLeft - predictionRight);
  ------------------
  |  |   87|  1.46M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (87:36): [True: 59.0k, False: 1.41M]
  |  |  ------------------
  ------------------
              					sumAbsMS += local_abs64((predictionLeft + predictionRight) >> 1) + local_abs64(predictionLeft - predictionRight);
  ------------------
  |  |   87|  1.46M|#define local_abs64(x) ((uint64_t)((x)<0? -(x) : (x)))
  |  |  ------------------
  |  |  |  Branch (87:36): [True: 56.2k, False: 1.41M]
  |  |  ------------------
  ------------------
 3795|  1.46M|				}
 3796|  2.10k|			}
 3797|  4.22k|			if(sumAbsLR < sumAbsMS) {
  ------------------
  |  Branch (3797:7): [True: 1.38k, False: 2.84k]
  ------------------
 3798|  1.38k|				do_independent = true;
 3799|  1.38k|				do_mid_side = false;
 3800|  1.38k|				frame_header.channel_assignment = FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT;
 3801|  1.38k|			}
 3802|  2.84k|			else {
 3803|  2.84k|				do_independent = false;
 3804|  2.84k|				do_mid_side = true;
 3805|  2.84k|				frame_header.channel_assignment = FLAC__CHANNEL_ASSIGNMENT_MID_SIDE;
 3806|  2.84k|			}
 3807|  4.22k|		}
 3808|  40.1k|		else {
 3809|  40.1k|			do_independent = true;
 3810|  40.1k|			do_mid_side = true;
 3811|  40.1k|		}
 3812|  44.4k|	}
 3813|   203k|	else {
 3814|   203k|		do_independent = true;
 3815|   203k|		do_mid_side = false;
 3816|   203k|	}
 3817|       |
 3818|   247k|	FLAC__ASSERT(do_independent || do_mid_side);
  ------------------
  |  |   38|   250k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 244k, False: 2.84k]
  |  |  |  Branch (38:30): [True: 2.84k, False: 0]
  |  |  ------------------
  ------------------
 3819|       |
 3820|       |	/*
 3821|       |	 * Prepare mid-side signals if applicable
 3822|       |	 */
 3823|   247k|	if(do_mid_side) {
  ------------------
  |  Branch (3823:5): [True: 43.0k, False: 204k]
  ------------------
 3824|  43.0k|		uint32_t i;
 3825|  43.0k|		FLAC__ASSERT(encoder->protected_->channels == 2);
  ------------------
  |  |   38|  43.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.0k]
  |  |  ------------------
  ------------------
 3826|  43.0k|		if(encoder->protected_->bits_per_sample < 32)
  ------------------
  |  Branch (3826:6): [True: 14.5k, False: 28.5k]
  ------------------
 3827|   407k|			for(i = 0; i < encoder->protected_->blocksize; i++) {
  ------------------
  |  Branch (3827:15): [True: 392k, False: 14.5k]
  ------------------
 3828|   392k|				threadtask->integer_signal_mid_side[1][i] = threadtask->integer_signal[0][i] - threadtask->integer_signal[1][i];
 3829|   392k|				threadtask->integer_signal_mid_side[0][i] = (threadtask->integer_signal[0][i] + threadtask->integer_signal[1][i]) >> 1; /* NOTE: not the same as 'mid = (signal[0][j] + signal[1][j]) / 2' ! */
 3830|   392k|			}
 3831|  28.5k|		else
 3832|  4.00M|			for(i = 0; i <= encoder->protected_->blocksize; i++) {
  ------------------
  |  Branch (3832:15): [True: 3.97M, False: 28.5k]
  ------------------
 3833|  3.97M|				threadtask->integer_signal_33bit_side[i] = (FLAC__int64)threadtask->integer_signal[0][i] - (FLAC__int64)threadtask->integer_signal[1][i];
 3834|  3.97M|				threadtask->integer_signal_mid_side[0][i] = ((FLAC__int64)threadtask->integer_signal[0][i] + (FLAC__int64)threadtask->integer_signal[1][i]) >> 1; /* NOTE: not the same as 'mid = (signal[0][j] + signal[1][j]) / 2' ! */
 3835|  3.97M|			}
 3836|  43.0k|	}
 3837|       |
 3838|       |
 3839|       |	/*
 3840|       |	 * Check for wasted bits; set effective bps for each subframe
 3841|       |	 */
 3842|   247k|	if(do_independent) {
  ------------------
  |  Branch (3842:5): [True: 244k, False: 2.94k]
  ------------------
 3843|   555k|		for(channel = 0; channel < encoder->protected_->channels; channel++) {
  ------------------
  |  Branch (3843:20): [True: 311k, False: 244k]
  ------------------
 3844|   311k|			uint32_t w = get_wasted_bits_(threadtask->integer_signal[channel], encoder->protected_->blocksize);
 3845|   311k|			if (w > encoder->protected_->bits_per_sample) {
  ------------------
  |  Branch (3845:8): [True: 0, False: 311k]
  ------------------
 3846|      0|				w = encoder->protected_->bits_per_sample;
 3847|      0|			}
 3848|   311k|			threadtask->subframe_workspace[channel][0].wasted_bits = threadtask->subframe_workspace[channel][1].wasted_bits = w;
 3849|   311k|			threadtask->subframe_bps[channel] = encoder->protected_->bits_per_sample - w;
 3850|   311k|		}
 3851|   244k|	}
 3852|   247k|	if(do_mid_side) {
  ------------------
  |  Branch (3852:5): [True: 43.0k, False: 204k]
  ------------------
 3853|  43.0k|		FLAC__ASSERT(encoder->protected_->channels == 2);
  ------------------
  |  |   38|  43.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.0k]
  |  |  ------------------
  ------------------
 3854|   129k|		for(channel = 0; channel < 2; channel++) {
  ------------------
  |  Branch (3854:20): [True: 86.0k, False: 43.0k]
  ------------------
 3855|  86.0k|			uint32_t w;
 3856|  86.0k|			if(encoder->protected_->bits_per_sample < 32 || channel == 0)
  ------------------
  |  Branch (3856:7): [True: 29.0k, False: 57.0k]
  |  Branch (3856:52): [True: 28.5k, False: 28.5k]
  ------------------
 3857|  57.5k|				w = get_wasted_bits_(threadtask->integer_signal_mid_side[channel], encoder->protected_->blocksize);
 3858|  28.5k|			else
 3859|  28.5k|				w = get_wasted_bits_wide_(threadtask->integer_signal_33bit_side, threadtask->integer_signal_mid_side[channel], encoder->protected_->blocksize);
 3860|       |
 3861|  86.0k|			if (w > encoder->protected_->bits_per_sample) {
  ------------------
  |  Branch (3861:8): [True: 0, False: 86.0k]
  ------------------
 3862|      0|				w = encoder->protected_->bits_per_sample;
 3863|      0|			}
 3864|  86.0k|			threadtask->subframe_workspace_mid_side[channel][0].wasted_bits = threadtask->subframe_workspace_mid_side[channel][1].wasted_bits = w;
 3865|  86.0k|			threadtask->subframe_bps_mid_side[channel] = encoder->protected_->bits_per_sample - w + (channel==0? 0:1);
  ------------------
  |  Branch (3865:93): [True: 43.0k, False: 43.0k]
  ------------------
 3866|  86.0k|		}
 3867|  43.0k|	}
 3868|       |
 3869|       |	/*
 3870|       |	 * First do a normal encoding pass of each independent channel
 3871|       |	 */
 3872|   247k|	if(do_independent) {
  ------------------
  |  Branch (3872:5): [True: 244k, False: 3.46k]
  ------------------
 3873|   554k|		for(channel = 0; channel < encoder->protected_->channels; channel++) {
  ------------------
  |  Branch (3873:20): [True: 310k, False: 244k]
  ------------------
 3874|   310k|			if(encoder->protected_->limit_min_bitrate && all_subframes_constant && (channel + 1) == encoder->protected_->channels){
  ------------------
  |  Branch (3874:7): [True: 103k, False: 207k]
  |  Branch (3874:49): [True: 86.8k, False: 16.5k]
  |  Branch (3874:75): [True: 64.8k, False: 22.0k]
  ------------------
 3875|       |				/* This frame contains only constant subframes at this point.
 3876|       |				 * To prevent the frame from becoming too small, make sure
 3877|       |				 * the last subframe isn't constant */
 3878|  64.8k|				threadtask->disable_constant_subframes = true;
 3879|  64.8k|			}
 3880|   310k|			if(!
  ------------------
  |  Branch (3880:7): [True: 0, False: 310k]
  ------------------
 3881|   310k|				process_subframe_(
 3882|   310k|					encoder,
 3883|   310k|					threadtask,
 3884|   310k|					min_partition_order,
 3885|   310k|					max_partition_order,
 3886|   310k|					&frame_header,
 3887|   310k|					threadtask->subframe_bps[channel],
 3888|   310k|					threadtask->integer_signal[channel],
 3889|   310k|					threadtask->subframe_workspace_ptr[channel],
 3890|   310k|					threadtask->partitioned_rice_contents_workspace_ptr[channel],
 3891|   310k|					threadtask->residual_workspace[channel],
 3892|   310k|					threadtask->best_subframe+channel,
 3893|   310k|					threadtask->best_subframe_bits+channel
 3894|   310k|				)
 3895|   310k|			)
 3896|      0|				return false;
 3897|   310k|			if(threadtask->subframe_workspace[channel][threadtask->best_subframe[channel]].type != FLAC__SUBFRAME_TYPE_CONSTANT)
  ------------------
  |  Branch (3897:7): [True: 201k, False: 108k]
  ------------------
 3898|   201k|				all_subframes_constant = false;
 3899|   310k|		}
 3900|   244k|	}
 3901|       |
 3902|       |	/*
 3903|       |	 * Now do mid and side channels if requested
 3904|       |	 */
 3905|   247k|	if(do_mid_side) {
  ------------------
  |  Branch (3905:5): [True: 43.0k, False: 204k]
  ------------------
 3906|  43.0k|		FLAC__ASSERT(encoder->protected_->channels == 2);
  ------------------
  |  |   38|  43.0k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 43.0k]
  |  |  ------------------
  ------------------
 3907|       |
 3908|   129k|		for(channel = 0; channel < 2; channel++) {
  ------------------
  |  Branch (3908:20): [True: 86.0k, False: 43.0k]
  ------------------
 3909|  86.0k|			void *integer_signal_;
 3910|  86.0k|			if(threadtask->subframe_bps_mid_side[channel] <= 32)
  ------------------
  |  Branch (3910:7): [True: 73.0k, False: 12.9k]
  ------------------
 3911|  73.0k|				integer_signal_ = threadtask->integer_signal_mid_side[channel];
 3912|  12.9k|			else
 3913|  12.9k|				integer_signal_ = threadtask->integer_signal_33bit_side;
 3914|  86.0k|			if(!
  ------------------
  |  Branch (3914:7): [True: 0, False: 86.0k]
  ------------------
 3915|  86.0k|				process_subframe_(
 3916|  86.0k|					encoder,
 3917|  86.0k|					threadtask,
 3918|  86.0k|					min_partition_order,
 3919|  86.0k|					max_partition_order,
 3920|  86.0k|					&frame_header,
 3921|  86.0k|					threadtask->subframe_bps_mid_side[channel],
 3922|  86.0k|					integer_signal_,
 3923|  86.0k|					threadtask->subframe_workspace_ptr_mid_side[channel],
 3924|  86.0k|					threadtask->partitioned_rice_contents_workspace_ptr_mid_side[channel],
 3925|  86.0k|					threadtask->residual_workspace_mid_side[channel],
 3926|  86.0k|					threadtask->best_subframe_mid_side+channel,
 3927|  86.0k|					threadtask->best_subframe_bits_mid_side+channel
 3928|  86.0k|				)
 3929|  86.0k|			)
 3930|      0|				return false;
 3931|  86.0k|		}
 3932|  43.0k|	}
 3933|       |
 3934|       |	/*
 3935|       |	 * Compose the frame bitbuffer
 3936|       |	 */
 3937|   247k|	if((do_independent && do_mid_side) || encoder->protected_->loose_mid_side_stereo) {
  ------------------
  |  Branch (3937:6): [True: 244k, False: 3.23k]
  |  Branch (3937:24): [True: 40.1k, False: 204k]
  |  Branch (3937:40): [True: 4.21k, False: 202k]
  ------------------
 3938|  44.4k|		uint32_t left_bps = 0, right_bps = 0; /* initialized only to prevent superfluous compiler warning */
 3939|  44.4k|		FLAC__Subframe *left_subframe = 0, *right_subframe = 0; /* initialized only to prevent superfluous compiler warning */
 3940|  44.4k|		FLAC__ChannelAssignment channel_assignment;
 3941|       |
 3942|  44.4k|		FLAC__ASSERT(encoder->protected_->channels == 2);
  ------------------
  |  |   38|  44.4k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 44.4k]
  |  |  ------------------
  ------------------
 3943|       |
 3944|  44.4k|		if(!encoder->protected_->loose_mid_side_stereo) {
  ------------------
  |  Branch (3944:6): [True: 40.1k, False: 4.22k]
  ------------------
 3945|  40.1k|			uint32_t bits[4]; /* WATCHOUT - indexed by FLAC__ChannelAssignment */
 3946|  40.1k|			uint32_t min_bits;
 3947|  40.1k|			int ca;
 3948|       |
 3949|  40.1k|			FLAC__ASSERT(FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT == 0);
  ------------------
  |  |   38|  40.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 40.1k]
  |  |  ------------------
  ------------------
 3950|  40.1k|			FLAC__ASSERT(FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE   == 1);
  ------------------
  |  |   38|  40.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 40.1k]
  |  |  ------------------
  ------------------
 3951|  40.1k|			FLAC__ASSERT(FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE  == 2);
  ------------------
  |  |   38|  40.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 40.1k]
  |  |  ------------------
  ------------------
 3952|  40.1k|			FLAC__ASSERT(FLAC__CHANNEL_ASSIGNMENT_MID_SIDE    == 3);
  ------------------
  |  |   38|  40.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 40.1k]
  |  |  ------------------
  ------------------
 3953|       |
 3954|       |			/* We have to figure out which channel assignent results in the smallest frame */
 3955|  40.1k|			bits[FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT] = threadtask->best_subframe_bits         [0] + threadtask->best_subframe_bits         [1];
 3956|  40.1k|			bits[FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE  ] = threadtask->best_subframe_bits         [0] + threadtask->best_subframe_bits_mid_side[1];
 3957|  40.1k|			bits[FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE ] = threadtask->best_subframe_bits         [1] + threadtask->best_subframe_bits_mid_side[1];
 3958|  40.1k|			bits[FLAC__CHANNEL_ASSIGNMENT_MID_SIDE   ] = threadtask->best_subframe_bits_mid_side[0] + threadtask->best_subframe_bits_mid_side[1];
 3959|       |
 3960|  40.1k|			channel_assignment = FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT;
 3961|  40.1k|			min_bits = bits[channel_assignment];
 3962|       |
 3963|       |			/* When doing loose mid-side stereo, ignore left-side
 3964|       |			 * and right-side options */
 3965|   160k|			for(ca = 1; ca <= 3; ca++) {
  ------------------
  |  Branch (3965:16): [True: 120k, False: 40.1k]
  ------------------
 3966|   120k|				if(bits[ca] < min_bits) {
  ------------------
  |  Branch (3966:8): [True: 42.8k, False: 77.7k]
  ------------------
 3967|  42.8k|					min_bits = bits[ca];
 3968|  42.8k|					channel_assignment = (FLAC__ChannelAssignment)ca;
 3969|  42.8k|				}
 3970|   120k|			}
 3971|  40.1k|			frame_header.channel_assignment = channel_assignment;
 3972|  40.1k|		}
 3973|       |
 3974|  44.4k|		if(!FLAC__frame_add_header(&frame_header, threadtask->frame)) {
  ------------------
  |  Branch (3974:6): [True: 0, False: 44.4k]
  ------------------
 3975|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 3976|      0|			return false;
 3977|      0|		}
 3978|       |
 3979|  44.4k|		switch(frame_header.channel_assignment) {
 3980|  9.48k|			case FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT:
  ------------------
  |  Branch (3980:4): [True: 9.48k, False: 34.9k]
  ------------------
 3981|  9.48k|				left_subframe  = &threadtask->subframe_workspace         [0][threadtask->best_subframe         [0]];
 3982|  9.48k|				right_subframe = &threadtask->subframe_workspace         [1][threadtask->best_subframe         [1]];
 3983|  9.48k|				break;
 3984|  16.6k|			case FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE:
  ------------------
  |  Branch (3984:4): [True: 16.6k, False: 27.8k]
  ------------------
 3985|  16.6k|				left_subframe  = &threadtask->subframe_workspace         [0][threadtask->best_subframe         [0]];
 3986|  16.6k|				right_subframe = &threadtask->subframe_workspace_mid_side[1][threadtask->best_subframe_mid_side[1]];
 3987|  16.6k|				break;
 3988|  7.16k|			case FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE:
  ------------------
  |  Branch (3988:4): [True: 7.16k, False: 37.2k]
  ------------------
 3989|  7.16k|				left_subframe  = &threadtask->subframe_workspace_mid_side[1][threadtask->best_subframe_mid_side[1]];
 3990|  7.16k|				right_subframe = &threadtask->subframe_workspace         [1][threadtask->best_subframe         [1]];
 3991|  7.16k|				break;
 3992|  11.1k|			case FLAC__CHANNEL_ASSIGNMENT_MID_SIDE:
  ------------------
  |  Branch (3992:4): [True: 11.1k, False: 33.2k]
  ------------------
 3993|  11.1k|				left_subframe  = &threadtask->subframe_workspace_mid_side[0][threadtask->best_subframe_mid_side[0]];
 3994|  11.1k|				right_subframe = &threadtask->subframe_workspace_mid_side[1][threadtask->best_subframe_mid_side[1]];
 3995|  11.1k|				break;
 3996|      0|			default:
  ------------------
  |  Branch (3996:4): [True: 0, False: 44.4k]
  ------------------
 3997|      0|				FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 3998|  44.4k|		}
 3999|       |
 4000|  44.4k|		switch(frame_header.channel_assignment) {
 4001|  9.48k|			case FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT:
  ------------------
  |  Branch (4001:4): [True: 9.48k, False: 34.9k]
  ------------------
 4002|  9.48k|				left_bps  = threadtask->subframe_bps         [0];
 4003|  9.48k|				right_bps = threadtask->subframe_bps         [1];
 4004|  9.48k|				break;
 4005|  16.6k|			case FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE:
  ------------------
  |  Branch (4005:4): [True: 16.6k, False: 27.8k]
  ------------------
 4006|  16.6k|				left_bps  = threadtask->subframe_bps         [0];
 4007|  16.6k|				right_bps = threadtask->subframe_bps_mid_side[1];
 4008|  16.6k|				break;
 4009|  7.16k|			case FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE:
  ------------------
  |  Branch (4009:4): [True: 7.16k, False: 37.2k]
  ------------------
 4010|  7.16k|				left_bps  = threadtask->subframe_bps_mid_side[1];
 4011|  7.16k|				right_bps = threadtask->subframe_bps         [1];
 4012|  7.16k|				break;
 4013|  11.1k|			case FLAC__CHANNEL_ASSIGNMENT_MID_SIDE:
  ------------------
  |  Branch (4013:4): [True: 11.1k, False: 33.2k]
  ------------------
 4014|  11.1k|				left_bps  = threadtask->subframe_bps_mid_side[0];
 4015|  11.1k|				right_bps = threadtask->subframe_bps_mid_side[1];
 4016|  11.1k|				break;
 4017|      0|			default:
  ------------------
  |  Branch (4017:4): [True: 0, False: 44.4k]
  ------------------
 4018|      0|				FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 4019|  44.4k|		}
 4020|       |
 4021|       |		/* note that encoder_add_subframe_ sets the state for us in case of an error */
 4022|  44.4k|		if(!add_subframe_(encoder, frame_header.blocksize, left_bps , left_subframe , threadtask->frame))
  ------------------
  |  Branch (4022:6): [True: 0, False: 44.4k]
  ------------------
 4023|      0|			return false;
 4024|  44.4k|		if(!add_subframe_(encoder, frame_header.blocksize, right_bps, right_subframe, threadtask->frame))
  ------------------
  |  Branch (4024:6): [True: 0, False: 44.4k]
  ------------------
 4025|      0|			return false;
 4026|  44.4k|	}
 4027|   203k|	else {
 4028|   203k|		FLAC__ASSERT(do_independent);
  ------------------
  |  |   38|   203k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 203k]
  |  |  ------------------
  ------------------
 4029|   203k|		if(!FLAC__frame_add_header(&frame_header, threadtask->frame)) {
  ------------------
  |  Branch (4029:6): [True: 0, False: 203k]
  ------------------
 4030|      0|			encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 4031|      0|			return false;
 4032|      0|		}
 4033|       |
 4034|   430k|		for(channel = 0; channel < encoder->protected_->channels; channel++) {
  ------------------
  |  Branch (4034:20): [True: 227k, False: 203k]
  ------------------
 4035|   227k|			if(!add_subframe_(encoder, frame_header.blocksize, threadtask->subframe_bps[channel], &threadtask->subframe_workspace[channel][threadtask->best_subframe[channel]], threadtask->frame)) {
  ------------------
  |  Branch (4035:7): [True: 0, False: 227k]
  ------------------
 4036|       |				/* the above function sets the state for us in case of an error */
 4037|      0|				return false;
 4038|      0|			}
 4039|   227k|		}
 4040|   203k|	}
 4041|       |
 4042|   247k|	return true;
 4043|   247k|}
stream_encoder.c:get_wasted_bits_:
 5078|   368k|{
 5079|   368k|	uint32_t i, shift;
 5080|   368k|	FLAC__int32 x = 0;
 5081|       |
 5082|  1.19M|	for(i = 0; i < samples && !(x&1); i++)
  ------------------
  |  Branch (5082:13): [True: 1.17M, False: 25.3k]
  |  Branch (5082:28): [True: 827k, False: 343k]
  ------------------
 5083|   826k|		x |= signal[i];
 5084|       |
 5085|   368k|	if(x == 0) {
  ------------------
  |  Branch (5085:5): [True: 3.34k, False: 365k]
  ------------------
 5086|  3.34k|		shift = 0;
 5087|  3.34k|	}
 5088|   365k|	else {
 5089|   458k|		for(shift = 0; !(x&1); shift++)
  ------------------
  |  Branch (5089:18): [True: 93.1k, False: 365k]
  ------------------
 5090|  93.1k|			x >>= 1;
 5091|   365k|	}
 5092|       |
 5093|   368k|	if(shift > 0) {
  ------------------
  |  Branch (5093:5): [True: 19.3k, False: 349k]
  ------------------
 5094|   406k|		for(i = 0; i < samples; i++)
  ------------------
  |  Branch (5094:14): [True: 386k, False: 19.3k]
  ------------------
 5095|   386k|			 signal[i] >>= shift;
 5096|  19.3k|	}
 5097|       |
 5098|   368k|	return shift;
 5099|   368k|}
stream_encoder.c:get_wasted_bits_wide_:
 5102|  28.5k|{
 5103|  28.5k|	uint32_t i, shift;
 5104|  28.5k|	FLAC__int64 x = 0;
 5105|       |
 5106|   653k|	for(i = 0; i < samples && !(x&1); i++)
  ------------------
  |  Branch (5106:13): [True: 637k, False: 16.0k]
  |  Branch (5106:28): [True: 624k, False: 12.5k]
  ------------------
 5107|   624k|		x |= signal_wide[i];
 5108|       |
 5109|  28.5k|	if(x == 0) {
  ------------------
  |  Branch (5109:5): [True: 2.00k, False: 26.5k]
  ------------------
 5110|  2.00k|		shift = 1;
 5111|  2.00k|	}
 5112|  26.5k|	else {
 5113|   105k|		for(shift = 0; !(x&1); shift++)
  ------------------
  |  Branch (5113:18): [True: 79.0k, False: 26.5k]
  ------------------
 5114|  79.0k|			x >>= 1;
 5115|  26.5k|	}
 5116|       |
 5117|  28.5k|	if(shift > 0) {
  ------------------
  |  Branch (5117:5): [True: 15.5k, False: 12.9k]
  ------------------
 5118|   406k|		for(i = 0; i < samples; i++)
  ------------------
  |  Branch (5118:14): [True: 391k, False: 15.5k]
  ------------------
 5119|   391k|			 signal[i] = (FLAC__int32)(signal_wide[i] >> shift);
 5120|  15.5k|	}
 5121|       |
 5122|  28.5k|	return shift;
 5123|  28.5k|}
stream_encoder.c:process_subframe_:
 4059|   396k|{
 4060|   396k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 4061|   396k|	float fixed_residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1];
 4062|       |#else
 4063|       |	FLAC__fixedpoint fixed_residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1];
 4064|       |#endif
 4065|   396k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 4066|   396k|	double lpc_residual_bits_per_sample;
 4067|   396k|	apply_apodization_state_struct apply_apodization_state;
 4068|   396k|	double lpc_error[FLAC__MAX_LPC_ORDER];
 4069|   396k|	uint32_t min_lpc_order, max_lpc_order, lpc_order, guess_lpc_order;
 4070|   396k|	uint32_t min_qlp_coeff_precision, max_qlp_coeff_precision, qlp_coeff_precision;
 4071|   396k|#endif
 4072|   396k|	uint32_t min_fixed_order, max_fixed_order, guess_fixed_order, fixed_order;
 4073|   396k|	uint32_t _candidate_bits, _best_bits;
 4074|   396k|	uint32_t _best_subframe;
 4075|       |	/* only use RICE2 partitions if stream bps > 16 */
 4076|   396k|	const uint32_t rice_parameter_limit = FLAC__stream_encoder_get_bits_per_sample(encoder) > 16? FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER : FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER;
  ------------------
  |  Branch (4076:40): [True: 362k, False: 34.4k]
  ------------------
 4077|       |
 4078|   396k|	FLAC__ASSERT(frame_header->blocksize > 0);
  ------------------
  |  |   38|   396k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 396k]
  |  |  ------------------
  ------------------
 4079|       |
 4080|       |	/* verbatim subframe is the baseline against which we measure other compressed subframes */
 4081|   396k|	_best_subframe = 0;
 4082|   396k|	if(encoder->private_->disable_verbatim_subframes && frame_header->blocksize >= FLAC__MAX_FIXED_ORDER)
  ------------------
  |  |  145|      0|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
  |  Branch (4082:5): [True: 0, False: 396k]
  |  Branch (4082:54): [True: 0, False: 0]
  ------------------
 4083|      0|		_best_bits = UINT32_MAX;
 4084|   396k|	else
 4085|   396k|		_best_bits = evaluate_verbatim_subframe_(encoder, integer_signal, frame_header->blocksize, subframe_bps, subframe[_best_subframe]);
 4086|   396k|	*best_bits = _best_bits;
 4087|       |
 4088|   396k|	if(frame_header->blocksize > FLAC__MAX_FIXED_ORDER) {
  ------------------
  |  |  145|   396k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
  |  Branch (4088:5): [True: 392k, False: 4.59k]
  ------------------
 4089|   392k|		uint32_t signal_is_constant = false;
 4090|       |		/* The next formula determines when to use a 64-bit accumulator
 4091|       |		 * for the error of a fixed predictor, and when a 32-bit one. As
 4092|       |		 * the error of a 4th order predictor for a given sample is the
 4093|       |		 * sum of 17 sample values (1+4+6+4+1) and there are blocksize -
 4094|       |		 * order error values to be summed, the maximum total error is
 4095|       |		 * maximum_sample_value * (blocksize - order) * 17. As ilog2(x)
 4096|       |		 * calculates floor(2log(x)), the result must be 31 or lower
 4097|       |		 */
 4098|   392k|		if(subframe_bps < 28){
  ------------------
  |  Branch (4098:6): [True: 90.6k, False: 301k]
  ------------------
 4099|  90.6k|			if(subframe_bps + FLAC__bitmath_ilog2((frame_header->blocksize-FLAC__MAX_FIXED_ORDER)*17) < 32)
  ------------------
  |  |  145|  90.6k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
  |  Branch (4099:7): [True: 60.0k, False: 30.6k]
  ------------------
 4100|  60.0k|				guess_fixed_order = encoder->private_->local_fixed_compute_best_predictor(((FLAC__int32 *)integer_signal)+FLAC__MAX_FIXED_ORDER, frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|  60.0k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
              				guess_fixed_order = encoder->private_->local_fixed_compute_best_predictor(((FLAC__int32 *)integer_signal)+FLAC__MAX_FIXED_ORDER, frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|  60.0k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
 4101|  30.6k|			else
 4102|  30.6k|				guess_fixed_order = encoder->private_->local_fixed_compute_best_predictor_wide(((FLAC__int32 *)integer_signal)+FLAC__MAX_FIXED_ORDER, frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|  30.6k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
              				guess_fixed_order = encoder->private_->local_fixed_compute_best_predictor_wide(((FLAC__int32 *)integer_signal)+FLAC__MAX_FIXED_ORDER, frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|  30.6k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
 4103|  90.6k|		}
 4104|   301k|		else
 4105|   301k|			if(subframe_bps <= 32)
  ------------------
  |  Branch (4105:7): [True: 288k, False: 12.8k]
  ------------------
 4106|   288k|				guess_fixed_order = encoder->private_->local_fixed_compute_best_predictor_limit_residual(((FLAC__int32 *)integer_signal+FLAC__MAX_FIXED_ORDER),frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|   288k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
              				guess_fixed_order = encoder->private_->local_fixed_compute_best_predictor_limit_residual(((FLAC__int32 *)integer_signal+FLAC__MAX_FIXED_ORDER),frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|   288k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
 4107|  12.8k|			else
 4108|  12.8k|				guess_fixed_order = FLAC__fixed_compute_best_predictor_limit_residual_33bit(((FLAC__int64 *)integer_signal+FLAC__MAX_FIXED_ORDER),frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|  12.8k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
              				guess_fixed_order = FLAC__fixed_compute_best_predictor_limit_residual_33bit(((FLAC__int64 *)integer_signal+FLAC__MAX_FIXED_ORDER),frame_header->blocksize-FLAC__MAX_FIXED_ORDER, fixed_residual_bits_per_sample);
  ------------------
  |  |  145|  12.8k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
 4109|       |
 4110|       |		/* check for constant subframe */
 4111|   392k|		if(
 4112|   392k|			!threadtask->disable_constant_subframes &&
  ------------------
  |  Branch (4112:4): [True: 325k, False: 66.7k]
  ------------------
 4113|   325k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 4114|   325k|			fixed_residual_bits_per_sample[1] == 0.0
  ------------------
  |  Branch (4114:4): [True: 121k, False: 204k]
  ------------------
 4115|       |#else
 4116|       |			fixed_residual_bits_per_sample[1] == FLAC__FP_ZERO
 4117|       |#endif
 4118|   392k|		) {
 4119|       |			/* the above means it's possible all samples are the same value; now double-check it: */
 4120|   121k|			uint32_t i;
 4121|   121k|			signal_is_constant = true;
 4122|   121k|			if(subframe_bps <= 32){
  ------------------
  |  Branch (4122:7): [True: 120k, False: 862]
  ------------------
 4123|   120k|				const FLAC__int32 *integer_signal_ = integer_signal;
 4124|  2.06M|				for(i = 1; i < frame_header->blocksize; i++) {
  ------------------
  |  Branch (4124:16): [True: 1.94M, False: 116k]
  ------------------
 4125|  1.94M|					if(integer_signal_[0] != integer_signal_[i]) {
  ------------------
  |  Branch (4125:9): [True: 3.97k, False: 1.94M]
  ------------------
 4126|  3.97k|						signal_is_constant = false;
 4127|  3.97k|						break;
 4128|  3.97k|					}
 4129|  1.94M|				}
 4130|   120k|			}
 4131|    862|			else {
 4132|    862|				const FLAC__int64 *integer_signal_ = integer_signal;
 4133|  14.7k|				for(i = 1; i < frame_header->blocksize; i++) {
  ------------------
  |  Branch (4133:16): [True: 13.9k, False: 862]
  ------------------
 4134|  13.9k|					if(integer_signal_[0] != integer_signal_[i]) {
  ------------------
  |  Branch (4134:9): [True: 0, False: 13.9k]
  ------------------
 4135|      0|						signal_is_constant = false;
 4136|      0|						break;
 4137|      0|					}
 4138|  13.9k|				}
 4139|    862|			}
 4140|   121k|		}
 4141|   392k|		if(signal_is_constant) {
  ------------------
  |  Branch (4141:6): [True: 117k, False: 275k]
  ------------------
 4142|   117k|			if(subframe_bps <= 32)
  ------------------
  |  Branch (4142:7): [True: 116k, False: 867]
  ------------------
 4143|   116k|				_candidate_bits = evaluate_constant_subframe_(encoder, ((FLAC__int32 *)integer_signal)[0], frame_header->blocksize, subframe_bps, subframe[!_best_subframe]);
 4144|    867|			else
 4145|    867|				_candidate_bits = evaluate_constant_subframe_(encoder, ((FLAC__int64 *)integer_signal)[0], frame_header->blocksize, subframe_bps, subframe[!_best_subframe]);
 4146|       |
 4147|   117k|			if(_candidate_bits < _best_bits) {
  ------------------
  |  Branch (4147:7): [True: 117k, False: 12]
  ------------------
 4148|   117k|				_best_subframe = !_best_subframe;
 4149|   117k|				_best_bits = _candidate_bits;
 4150|   117k|			}
 4151|   117k|		}
 4152|   275k|		else {
 4153|   275k|			if(!encoder->private_->disable_fixed_subframes || (encoder->protected_->max_lpc_order == 0 && _best_bits == UINT_MAX)) {
  ------------------
  |  Branch (4153:7): [True: 275k, False: 0]
  |  Branch (4153:55): [True: 0, False: 0]
  |  Branch (4153:98): [True: 0, False: 0]
  ------------------
 4154|       |				/* encode fixed */
 4155|   275k|				if(encoder->protected_->do_exhaustive_model_search) {
  ------------------
  |  Branch (4155:8): [True: 197k, False: 78.3k]
  ------------------
 4156|   197k|					min_fixed_order = 0;
 4157|   197k|					max_fixed_order = FLAC__MAX_FIXED_ORDER;
  ------------------
  |  |  145|   197k|#define FLAC__MAX_FIXED_ORDER (4u)
  ------------------
 4158|   197k|				}
 4159|  78.3k|				else {
 4160|  78.3k|					min_fixed_order = max_fixed_order = guess_fixed_order;
 4161|  78.3k|				}
 4162|   275k|				if(max_fixed_order >= frame_header->blocksize)
  ------------------
  |  Branch (4162:8): [True: 0, False: 275k]
  ------------------
 4163|      0|					max_fixed_order = frame_header->blocksize - 1;
 4164|  1.33M|				for(fixed_order = min_fixed_order; fixed_order <= max_fixed_order; fixed_order++) {
  ------------------
  |  Branch (4164:40): [True: 1.06M, False: 275k]
  ------------------
 4165|  1.06M|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 4166|  1.06M|					if(fixed_residual_bits_per_sample[fixed_order] >= (float)subframe_bps)
  ------------------
  |  Branch (4166:9): [True: 278k, False: 782k]
  ------------------
 4167|   278k|						continue; /* don't even try */
 4168|       |#else
 4169|       |					if(FLAC__fixedpoint_trunc(fixed_residual_bits_per_sample[fixed_order]) >= (int)subframe_bps)
 4170|       |						continue; /* don't even try */
 4171|       |#endif
 4172|   782k|					_candidate_bits =
 4173|   782k|						evaluate_fixed_subframe_(
 4174|   782k|							encoder,
 4175|   782k|							threadtask,
 4176|   782k|							integer_signal,
 4177|   782k|							residual[!_best_subframe],
 4178|   782k|							threadtask->abs_residual_partition_sums,
 4179|   782k|							threadtask->raw_bits_per_partition,
 4180|   782k|							frame_header->blocksize,
 4181|   782k|							subframe_bps,
 4182|   782k|							fixed_order,
 4183|   782k|							rice_parameter_limit,
 4184|   782k|							min_partition_order,
 4185|   782k|							max_partition_order,
 4186|   782k|							encoder->protected_->do_escape_coding,
 4187|   782k|							encoder->protected_->rice_parameter_search_dist,
 4188|   782k|							subframe[!_best_subframe],
 4189|   782k|							partitioned_rice_contents[!_best_subframe]
 4190|   782k|						);
 4191|   782k|					if(_candidate_bits < _best_bits) {
  ------------------
  |  Branch (4191:9): [True: 235k, False: 547k]
  ------------------
 4192|   235k|						_best_subframe = !_best_subframe;
 4193|   235k|						_best_bits = _candidate_bits;
 4194|   235k|					}
 4195|   782k|				}
 4196|   275k|			}
 4197|       |
 4198|   275k|#ifndef FLAC__INTEGER_ONLY_LIBRARY
 4199|       |			/* encode lpc */
 4200|   275k|			if(encoder->protected_->max_lpc_order > 0) {
  ------------------
  |  Branch (4200:7): [True: 225k, False: 49.9k]
  ------------------
 4201|   225k|				if(encoder->protected_->max_lpc_order >= frame_header->blocksize)
  ------------------
  |  Branch (4201:8): [True: 13.0k, False: 211k]
  ------------------
 4202|  13.0k|					max_lpc_order = frame_header->blocksize-1;
 4203|   211k|				else
 4204|   211k|					max_lpc_order = encoder->protected_->max_lpc_order;
 4205|   225k|				if(max_lpc_order > 0) {
  ------------------
  |  Branch (4205:8): [True: 225k, False: 2]
  ------------------
 4206|   225k|					apply_apodization_state.a = 0;
 4207|   225k|					apply_apodization_state.b = 1;
 4208|   225k|					apply_apodization_state.c = 0;
 4209|   364M|					while (apply_apodization_state.a < encoder->protected_->num_apodizations) {
  ------------------
  |  Branch (4209:13): [True: 364M, False: 225k]
  ------------------
 4210|   364M|						uint32_t max_lpc_order_this_apodization = max_lpc_order;
 4211|       |
 4212|   364M|						if(!apply_apodization_(encoder, threadtask, &apply_apodization_state,
  ------------------
  |  Branch (4212:10): [True: 364M, False: 333k]
  ------------------
 4213|   364M|						                       frame_header->blocksize, lpc_error,
 4214|   364M|						                       &max_lpc_order_this_apodization,
 4215|   364M|						                       subframe_bps, integer_signal,
 4216|   364M|						                       &guess_lpc_order))
 4217|       |							/* If apply_apodization_ fails, try next apodization */
 4218|   364M|							continue;
 4219|       |
 4220|   333k|						if(encoder->protected_->do_exhaustive_model_search) {
  ------------------
  |  Branch (4220:10): [True: 240k, False: 92.4k]
  ------------------
 4221|   240k|							min_lpc_order = 1;
 4222|   240k|						}
 4223|  92.4k|						else {
 4224|  92.4k|							min_lpc_order = max_lpc_order_this_apodization = guess_lpc_order;
 4225|  92.4k|						}
 4226|  3.37M|						for(lpc_order = min_lpc_order; lpc_order <= max_lpc_order_this_apodization; lpc_order++) {
  ------------------
  |  Branch (4226:38): [True: 3.03M, False: 333k]
  ------------------
 4227|  3.03M|							lpc_residual_bits_per_sample = FLAC__lpc_compute_expected_bits_per_residual_sample(lpc_error[lpc_order-1], frame_header->blocksize-lpc_order);
 4228|  3.03M|							if(lpc_residual_bits_per_sample >= (double)subframe_bps)
  ------------------
  |  Branch (4228:11): [True: 25.3k, False: 3.01M]
  ------------------
 4229|  25.3k|								continue; /* don't even try */
 4230|  3.01M|							if(encoder->protected_->do_qlp_coeff_prec_search) {
  ------------------
  |  Branch (4230:11): [True: 1.81M, False: 1.19M]
  ------------------
 4231|  1.81M|								min_qlp_coeff_precision = FLAC__MIN_QLP_COEFF_PRECISION;
  ------------------
  |  |  137|  1.81M|#define FLAC__MIN_QLP_COEFF_PRECISION (5u)
  ------------------
 4232|       |								/* try to keep qlp coeff precision such that only 32-bit math is required for decode of <=16bps(+1bps for side channel) streams */
 4233|  1.81M|								if(subframe_bps <= 17) {
  ------------------
  |  Branch (4233:12): [True: 190k, False: 1.62M]
  ------------------
 4234|   190k|									max_qlp_coeff_precision = flac_min(32 - subframe_bps - FLAC__bitmath_ilog2(lpc_order), FLAC__MAX_QLP_COEFF_PRECISION);
  ------------------
  |  |   56|   190k|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (4234:36): [True: 106k, False: 84.0k]
  ------------------
 4235|   190k|									max_qlp_coeff_precision = flac_max(max_qlp_coeff_precision, min_qlp_coeff_precision);
  ------------------
  |  |   55|   190k|#define flac_max(a,b) MAX(a,b)
  ------------------
  |  Branch (4235:36): [True: 190k, False: 0]
  ------------------
 4236|   190k|								}
 4237|  1.62M|								else
 4238|  1.62M|									max_qlp_coeff_precision = FLAC__MAX_QLP_COEFF_PRECISION;
  ------------------
  |  |  142|  1.62M|#define FLAC__MAX_QLP_COEFF_PRECISION (15u)
  ------------------
 4239|  1.81M|							}
 4240|  1.19M|							else {
 4241|  1.19M|								min_qlp_coeff_precision = max_qlp_coeff_precision = encoder->protected_->qlp_coeff_precision;
 4242|  1.19M|							}
 4243|  23.6M|							for(qlp_coeff_precision = min_qlp_coeff_precision; qlp_coeff_precision <= max_qlp_coeff_precision; qlp_coeff_precision++) {
  ------------------
  |  Branch (4243:59): [True: 20.6M, False: 3.01M]
  ------------------
 4244|  20.6M|								_candidate_bits =
 4245|  20.6M|									evaluate_lpc_subframe_(
 4246|  20.6M|										encoder,
 4247|  20.6M|										threadtask,
 4248|  20.6M|										integer_signal,
 4249|  20.6M|										residual[!_best_subframe],
 4250|  20.6M|										threadtask->abs_residual_partition_sums,
 4251|  20.6M|										threadtask->raw_bits_per_partition,
 4252|  20.6M|										threadtask->lp_coeff[lpc_order-1],
 4253|  20.6M|										frame_header->blocksize,
 4254|  20.6M|										subframe_bps,
 4255|  20.6M|										lpc_order,
 4256|  20.6M|										qlp_coeff_precision,
 4257|  20.6M|										rice_parameter_limit,
 4258|  20.6M|										min_partition_order,
 4259|  20.6M|										max_partition_order,
 4260|  20.6M|										encoder->protected_->do_escape_coding,
 4261|  20.6M|										encoder->protected_->rice_parameter_search_dist,
 4262|  20.6M|										subframe[!_best_subframe],
 4263|  20.6M|										partitioned_rice_contents[!_best_subframe]
 4264|  20.6M|									);
 4265|  20.6M|								if(_candidate_bits > 0) { /* if == 0, there was a problem quantizing the lpcoeffs */
  ------------------
  |  Branch (4265:12): [True: 17.6M, False: 3.00M]
  ------------------
 4266|  17.6M|									if(_candidate_bits < _best_bits) {
  ------------------
  |  Branch (4266:13): [True: 36.9k, False: 17.6M]
  ------------------
 4267|  36.9k|										_best_subframe = !_best_subframe;
 4268|  36.9k|										_best_bits = _candidate_bits;
 4269|  36.9k|									}
 4270|  17.6M|								}
 4271|  20.6M|							}
 4272|  3.01M|						}
 4273|   333k|					}
 4274|   225k|				}
 4275|   225k|			}
 4276|   275k|#endif /* !defined FLAC__INTEGER_ONLY_LIBRARY */
 4277|   275k|		}
 4278|   392k|	}
 4279|       |
 4280|       |	/* under rare circumstances this can happen when all but lpc subframe types are disabled: */
 4281|   396k|	if(_best_bits == UINT32_MAX) {
  ------------------
  |  Branch (4281:5): [True: 0, False: 396k]
  ------------------
 4282|      0|		FLAC__ASSERT(_best_subframe == 0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4283|      0|		_best_bits = evaluate_verbatim_subframe_(encoder, integer_signal, frame_header->blocksize, subframe_bps, subframe[_best_subframe]);
 4284|      0|	}
 4285|       |
 4286|   396k|	*best_subframe = _best_subframe;
 4287|   396k|	*best_bits = _best_bits;
 4288|       |
 4289|       |	return true;
 4290|   396k|}
stream_encoder.c:evaluate_verbatim_subframe_:
 4676|   396k|{
 4677|   396k|	uint32_t estimate;
 4678|       |
 4679|   396k|	subframe->type = FLAC__SUBFRAME_TYPE_VERBATIM;
 4680|       |
 4681|   396k|	if(subframe_bps <= 32){
  ------------------
  |  Branch (4681:5): [True: 383k, False: 13.3k]
  ------------------
 4682|   383k|		subframe->data.verbatim.data_type = FLAC__VERBATIM_SUBFRAME_DATA_TYPE_INT32;
 4683|   383k|		subframe->data.verbatim.data.int32 = signal;
 4684|   383k|	}
 4685|  13.3k|	else {
 4686|  13.3k|		subframe->data.verbatim.data_type = FLAC__VERBATIM_SUBFRAME_DATA_TYPE_INT64;
 4687|  13.3k|		subframe->data.verbatim.data.int64 = signal;
 4688|  13.3k|	}
 4689|       |
 4690|   396k|	estimate = FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN + subframe->wasted_bits + (blocksize * subframe_bps);
 4691|       |
 4692|       |#if SPOTCHECK_ESTIMATE
 4693|       |	spotcheck_subframe_estimate_(encoder, blocksize, subframe_bps, subframe, estimate);
 4694|       |#else
 4695|   396k|	(void)encoder;
 4696|   396k|#endif
 4697|       |
 4698|   396k|	return estimate;
 4699|   396k|}
stream_encoder.c:evaluate_constant_subframe_:
 4473|   117k|{
 4474|   117k|	uint32_t estimate;
 4475|   117k|	subframe->type = FLAC__SUBFRAME_TYPE_CONSTANT;
 4476|   117k|	subframe->data.constant.value = signal;
 4477|       |
 4478|   117k|	estimate = FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN + subframe->wasted_bits + subframe_bps;
 4479|       |
 4480|       |#if SPOTCHECK_ESTIMATE
 4481|       |	spotcheck_subframe_estimate_(encoder, blocksize, subframe_bps, subframe, estimate);
 4482|       |#else
 4483|   117k|	(void)encoder, (void)blocksize;
 4484|   117k|#endif
 4485|       |
 4486|   117k|	return estimate;
 4487|   117k|}
stream_encoder.c:evaluate_fixed_subframe_:
 4507|   783k|{
 4508|   783k|	uint32_t i, residual_bits, estimate;
 4509|   783k|	const uint32_t residual_samples = blocksize - order;
 4510|       |
 4511|   783k|	if((subframe_bps + order) <= 32)
  ------------------
  |  Branch (4511:5): [True: 464k, False: 319k]
  ------------------
 4512|   464k|		FLAC__fixed_compute_residual(((FLAC__int32 *)signal)+order, residual_samples, order, residual);
 4513|   319k|	else if(subframe_bps <= 32)
  ------------------
  |  Branch (4513:10): [True: 305k, False: 13.5k]
  ------------------
 4514|   305k|		FLAC__fixed_compute_residual_wide(((FLAC__int32 *)signal)+order, residual_samples, order, residual);
 4515|  13.5k|	else
 4516|  13.5k|		FLAC__fixed_compute_residual_wide_33bit(((FLAC__int64 *)signal)+order, residual_samples, order, residual);
 4517|       |
 4518|   783k|	subframe->type = FLAC__SUBFRAME_TYPE_FIXED;
 4519|       |
 4520|   783k|	subframe->data.fixed.entropy_coding_method.type = FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE;
 4521|   783k|	subframe->data.fixed.entropy_coding_method.data.partitioned_rice.contents = partitioned_rice_contents;
 4522|   783k|	subframe->data.fixed.residual = residual;
 4523|       |
 4524|   783k|	residual_bits =
 4525|   783k|		find_best_partition_order_(
 4526|   783k|			encoder->private_,
 4527|   783k|			threadtask,
 4528|   783k|			residual,
 4529|   783k|			abs_residual_partition_sums,
 4530|   783k|			raw_bits_per_partition,
 4531|   783k|			residual_samples,
 4532|   783k|			order,
 4533|   783k|			rice_parameter_limit,
 4534|   783k|			min_partition_order,
 4535|   783k|			max_partition_order,
 4536|   783k|			subframe_bps,
 4537|   783k|			do_escape_coding,
 4538|   783k|			rice_parameter_search_dist,
 4539|   783k|			&subframe->data.fixed.entropy_coding_method
 4540|   783k|		);
 4541|       |
 4542|   783k|	subframe->data.fixed.order = order;
 4543|   783k|	if(subframe_bps <= 32)
  ------------------
  |  Branch (4543:5): [True: 768k, False: 14.9k]
  ------------------
 4544|  2.01M|		for(i = 0; i < order; i++)
  ------------------
  |  Branch (4544:14): [True: 1.25M, False: 768k]
  ------------------
 4545|  1.25M|			subframe->data.fixed.warmup[i] = ((FLAC__int32 *)signal)[i];
 4546|  14.9k|	else
 4547|  28.8k|		for(i = 0; i < order; i++)
  ------------------
  |  Branch (4547:14): [True: 13.9k, False: 14.9k]
  ------------------
 4548|  13.9k|			subframe->data.fixed.warmup[i] = ((FLAC__int64 *)signal)[i];
 4549|       |
 4550|   783k|	estimate = FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN + subframe->wasted_bits + (order * subframe_bps);
 4551|   783k|	if(residual_bits < UINT32_MAX - estimate) // To make sure estimate doesn't overflow
  ------------------
  |  Branch (4551:5): [True: 782k, False: 727]
  ------------------
 4552|   782k|		estimate += residual_bits;
 4553|    727|	else
 4554|    727|		estimate = UINT32_MAX;
 4555|       |
 4556|       |#if SPOTCHECK_ESTIMATE
 4557|       |	spotcheck_subframe_estimate_(encoder, blocksize, subframe_bps, subframe, estimate);
 4558|       |#endif
 4559|       |
 4560|   783k|	return estimate;
 4561|   783k|}
stream_encoder.c:find_best_partition_order_:
 4717|  18.2M|{
 4718|  18.2M|	uint32_t residual_bits, best_residual_bits = 0;
 4719|  18.2M|	uint32_t best_parameters_index = 0;
 4720|  18.2M|	uint32_t best_partition_order = 0;
 4721|  18.2M|	const uint32_t blocksize = residual_samples + predictor_order;
 4722|       |
 4723|  18.2M|	max_partition_order = FLAC__format_get_max_rice_partition_order_from_blocksize_limited_max_and_predictor_order(max_partition_order, blocksize, predictor_order);
 4724|  18.2M|	min_partition_order = flac_min(min_partition_order, max_partition_order);
  ------------------
  |  |   56|  18.2M|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (4724:24): [True: 323k, False: 17.8M]
  ------------------
 4725|       |
 4726|  18.2M|	private_->local_precompute_partition_info_sums(residual, abs_residual_partition_sums, residual_samples, predictor_order, min_partition_order, max_partition_order, bps);
 4727|       |
 4728|  18.2M|	if(do_escape_coding)
  ------------------
  |  Branch (4728:5): [True: 14.4M, False: 3.73M]
  ------------------
 4729|  14.4M|		precompute_partition_info_escapes_(residual, raw_bits_per_partition, residual_samples, predictor_order, min_partition_order, max_partition_order);
 4730|       |
 4731|  18.2M|	{
 4732|  18.2M|		int partition_order;
 4733|  18.2M|		uint32_t sum;
 4734|       |
 4735|  36.6M|		for(partition_order = (int)max_partition_order, sum = 0; partition_order >= (int)min_partition_order; partition_order--) {
  ------------------
  |  Branch (4735:60): [True: 18.4M, False: 18.2M]
  ------------------
 4736|  18.4M|			FLAC__ASSERT(do_escape_coding != /* XOR */ (raw_bits_per_partition == NULL));
  ------------------
  |  |   38|  18.4M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 18.4M]
  |  |  ------------------
  ------------------
 4737|  18.4M|			if(!
  ------------------
  |  Branch (4737:7): [True: 0, False: 18.4M]
  ------------------
 4738|  18.4M|				set_partitioned_rice_(
 4739|       |#ifdef EXACT_RICE_BITS_CALCULATION
 4740|       |					residual,
 4741|       |#endif
 4742|  18.4M|					abs_residual_partition_sums+sum,
 4743|  18.4M|					do_escape_coding ? raw_bits_per_partition+sum : NULL,
  ------------------
  |  Branch (4743:6): [True: 14.3M, False: 4.03M]
  ------------------
 4744|  18.4M|					residual_samples,
 4745|  18.4M|					predictor_order,
 4746|  18.4M|					rice_parameter_limit,
 4747|  18.4M|					rice_parameter_search_dist,
 4748|  18.4M|					(uint32_t)partition_order,
 4749|  18.4M|					do_escape_coding,
 4750|  18.4M|					&threadtask->partitioned_rice_contents_extra[!best_parameters_index],
 4751|  18.4M|					&residual_bits
 4752|  18.4M|				)
 4753|  18.4M|			)
 4754|      0|			{
 4755|      0|				FLAC__ASSERT(best_residual_bits != 0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4756|      0|				break;
 4757|      0|			}
 4758|  18.4M|			sum += 1u << partition_order;
 4759|  18.4M|			if(best_residual_bits == 0 || residual_bits < best_residual_bits) {
  ------------------
  |  Branch (4759:7): [True: 17.7M, False: 649k]
  |  Branch (4759:34): [True: 354k, False: 294k]
  ------------------
 4760|  18.4M|				best_residual_bits = residual_bits;
 4761|  18.4M|				best_parameters_index = !best_parameters_index;
 4762|  18.4M|				best_partition_order = partition_order;
 4763|  18.4M|			}
 4764|  18.4M|		}
 4765|  18.2M|	}
 4766|       |
 4767|  18.2M|	best_ecm->data.partitioned_rice.order = best_partition_order;
 4768|       |
 4769|  18.2M|	{
 4770|       |		/*
 4771|       |		 * We are allowed to de-const the pointer based on our special
 4772|       |		 * knowledge; it is const to the outside world.
 4773|       |		 */
 4774|  18.2M|		FLAC__EntropyCodingMethod_PartitionedRiceContents* prc = (FLAC__EntropyCodingMethod_PartitionedRiceContents*)best_ecm->data.partitioned_rice.contents;
 4775|  18.2M|		uint32_t partition;
 4776|       |
 4777|       |		/* save best parameters and raw_bits */
 4778|  18.2M|		memcpy(prc->parameters, threadtask->partitioned_rice_contents_extra[best_parameters_index].parameters, (uint32_t)sizeof(uint32_t)*(1<<(best_partition_order)));
 4779|  18.2M|		if(do_escape_coding)
  ------------------
  |  Branch (4779:6): [True: 14.3M, False: 3.89M]
  ------------------
 4780|  14.3M|			memcpy(prc->raw_bits, threadtask->partitioned_rice_contents_extra[best_parameters_index].raw_bits, (uint32_t)sizeof(uint32_t)*(1<<(best_partition_order)));
 4781|       |		/*
 4782|       |		 * Now need to check if the type should be changed to
 4783|       |		 * FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 based on the
 4784|       |		 * size of the rice parameters.
 4785|       |		 */
 4786|  27.7M|		for(partition = 0; partition < (1u<<best_partition_order); partition++) {
  ------------------
  |  Branch (4786:22): [True: 23.2M, False: 4.56M]
  ------------------
 4787|  23.2M|			if(prc->parameters[partition] >= FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER) {
  ------------------
  |  Branch (4787:7): [True: 13.6M, False: 9.57M]
  ------------------
 4788|  13.6M|				best_ecm->type = FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2;
 4789|  13.6M|				break;
 4790|  13.6M|			}
 4791|  23.2M|		}
 4792|  18.2M|	}
 4793|       |
 4794|  18.2M|	return best_residual_bits;
 4795|  18.2M|}
stream_encoder.c:precompute_partition_info_escapes_:
 4862|  14.4M|{
 4863|  14.4M|	int partition_order;
 4864|  14.4M|	uint32_t from_partition, to_partition = 0;
 4865|  14.4M|	const uint32_t blocksize = residual_samples + predictor_order;
 4866|       |
 4867|       |	/* first do max_partition_order */
 4868|  14.4M|	for(partition_order = (int)max_partition_order; partition_order >= 0; partition_order--) {
  ------------------
  |  Branch (4868:50): [True: 14.4M, False: 22.0k]
  ------------------
 4869|  14.4M|		FLAC__int32 r;
 4870|  14.4M|		FLAC__uint32 rmax;
 4871|  14.4M|		uint32_t partition, partition_sample, partition_samples, residual_sample;
 4872|  14.4M|		const uint32_t partitions = 1u << partition_order;
 4873|  14.4M|		const uint32_t default_partition_samples = blocksize >> partition_order;
 4874|       |
 4875|  14.4M|		FLAC__ASSERT(default_partition_samples > predictor_order);
  ------------------
  |  |   38|  14.4M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 14.4M]
  |  |  ------------------
  ------------------
 4876|       |
 4877|  46.7M|		for(partition = residual_sample = 0; partition < partitions; partition++) {
  ------------------
  |  Branch (4877:40): [True: 32.2M, False: 14.4M]
  ------------------
 4878|  32.2M|			partition_samples = default_partition_samples;
 4879|  32.2M|			if(partition == 0)
  ------------------
  |  Branch (4879:7): [True: 14.4M, False: 17.7M]
  ------------------
 4880|  14.4M|				partition_samples -= predictor_order;
 4881|  32.2M|			rmax = 0;
 4882|  1.79G|			for(partition_sample = 0; partition_sample < partition_samples; partition_sample++) {
  ------------------
  |  Branch (4882:30): [True: 1.76G, False: 32.2M]
  ------------------
 4883|  1.76G|				r = residual[residual_sample++];
 4884|       |				/* OPT: maybe faster: rmax |= r ^ (r>>31) */
 4885|  1.76G|				if(r < 0)
  ------------------
  |  Branch (4885:8): [True: 346M, False: 1.41G]
  ------------------
 4886|   346M|					rmax |= ~r;
 4887|  1.41G|				else
 4888|  1.41G|					rmax |= r;
 4889|  1.76G|			}
 4890|       |			/* now we know all residual values are in the range [-rmax-1,rmax] */
 4891|  32.2M|			raw_bits_per_partition[partition] = rmax? FLAC__bitmath_ilog2(rmax) + 2 : 1;
  ------------------
  |  Branch (4891:40): [True: 23.4M, False: 8.75M]
  ------------------
 4892|  32.2M|		}
 4893|  14.4M|		to_partition = partitions;
 4894|  14.4M|		break; /*@@@ yuck, should remove the 'for' loop instead */
 4895|  14.4M|	}
 4896|       |
 4897|       |	/* now merge partitions for lower orders */
 4898|  14.9M|	for(from_partition = 0, --partition_order; partition_order >= (int)min_partition_order; partition_order--) {
  ------------------
  |  Branch (4898:45): [True: 502k, False: 14.4M]
  ------------------
 4899|   502k|		uint32_t m;
 4900|   502k|		uint32_t i;
 4901|   502k|		const uint32_t partitions = 1u << partition_order;
 4902|  2.54M|		for(i = 0; i < partitions; i++) {
  ------------------
  |  Branch (4902:14): [True: 2.03M, False: 502k]
  ------------------
 4903|  2.03M|			m = raw_bits_per_partition[from_partition];
 4904|  2.03M|			from_partition++;
 4905|       |			raw_bits_per_partition[to_partition] = flac_max(m, raw_bits_per_partition[from_partition]);
  ------------------
  |  |   55|  2.03M|#define flac_max(a,b) MAX(a,b)
  ------------------
  |  Branch (4905:43): [True: 306k, False: 1.73M]
  ------------------
 4906|  2.03M|			from_partition++;
 4907|  2.03M|			to_partition++;
 4908|  2.03M|		}
 4909|   502k|	}
 4910|  14.4M|}
stream_encoder.c:set_partitioned_rice_:
 4969|  18.4M|{
 4970|  18.4M|	uint32_t rice_parameter, partition_bits;
 4971|  18.4M|	uint32_t best_partition_bits, best_rice_parameter = 0;
 4972|  18.4M|	uint32_t bits_ = FLAC__ENTROPY_CODING_METHOD_TYPE_LEN + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN;
 4973|  18.4M|	uint32_t *parameters, *raw_bits;
 4974|  18.4M|	uint32_t partition, residual_sample;
 4975|  18.4M|	uint32_t partition_samples, partition_samples_base;
 4976|  18.4M|	uint32_t partition_samples_fixed_point_divisor, partition_samples_fixed_point_divisor_base;
 4977|  18.4M|	const uint32_t partitions = 1u << partition_order;
 4978|  18.4M|	FLAC__uint64 mean;
 4979|       |#ifdef ENABLE_RICE_PARAMETER_SEARCH
 4980|       |	uint32_t min_rice_parameter, max_rice_parameter;
 4981|       |#else
 4982|  18.4M|	(void)rice_parameter_search_dist;
 4983|  18.4M|#endif
 4984|       |
 4985|  18.4M|	FLAC__ASSERT(rice_parameter_limit <= FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER);
  ------------------
  |  |   38|  18.4M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 18.4M]
  |  |  ------------------
  ------------------
 4986|       |
 4987|  18.4M|	parameters = partitioned_rice_contents->parameters;
 4988|  18.4M|	raw_bits = partitioned_rice_contents->raw_bits;
 4989|       |
 4990|  18.4M|	partition_samples_base = (residual_samples+predictor_order) >> partition_order;
 4991|       |
 4992|       |	/* Integer division is slow. To speed up things, precalculate a fixed point
 4993|       |	 * divisor, as all partitions except the first are the same size. 18 bits
 4994|       |	 * are taken because maximum block size is 65535, max partition size for
 4995|       |	 * partitions other than 0 is 32767 (15 bit), max abs residual is 2^31,
 4996|       |	 * which leaves 18 bit */
 4997|  18.4M|	partition_samples_fixed_point_divisor_base = 0x40000 / partition_samples_base;
 4998|       |
 4999|  61.5M|	for(partition = residual_sample = 0; partition < partitions; partition++) {
  ------------------
  |  Branch (4999:39): [True: 43.1M, False: 18.4M]
  ------------------
 5000|  43.1M|		partition_samples = partition_samples_base;
 5001|  43.1M|		if(partition > 0) {
  ------------------
  |  Branch (5001:6): [True: 25.0M, False: 18.0M]
  ------------------
 5002|  25.0M|			partition_samples_fixed_point_divisor = partition_samples_fixed_point_divisor_base;
 5003|  25.0M|		}
 5004|  18.0M|		else {
 5005|  18.0M|			if(partition_samples <= predictor_order)
  ------------------
  |  Branch (5005:7): [True: 0, False: 18.0M]
  ------------------
 5006|      0|				return false;
 5007|  18.0M|			else
 5008|  18.0M|				partition_samples -= predictor_order;
 5009|  18.0M|			partition_samples_fixed_point_divisor = 0x40000 / partition_samples;
 5010|  18.0M|		}
 5011|  43.1M|		mean = abs_residual_partition_sums[partition];
 5012|       |		/* 'mean' is not a good name for the variable, it is
 5013|       |		 * actually the sum of magnitudes of all residual values
 5014|       |		 * in the partition, so the actual mean is
 5015|       |		 * mean/partition_samples
 5016|       |		 */
 5017|  43.1M|		if(mean < 2 || (((mean - 1)*partition_samples_fixed_point_divisor)>>18) == 0)
  ------------------
  |  Branch (5017:6): [True: 8.95M, False: 34.1M]
  |  Branch (5017:18): [True: 3.64M, False: 30.5M]
  ------------------
 5018|  12.8M|			rice_parameter = 0;
 5019|  30.3M|		else
 5020|  30.3M|			rice_parameter = FLAC__bitmath_ilog2_wide(((mean - 1)*partition_samples_fixed_point_divisor)>>18) + 1;
 5021|       |
 5022|  43.1M|		if(rice_parameter >= rice_parameter_limit) {
  ------------------
  |  Branch (5022:6): [True: 1.80M, False: 41.3M]
  ------------------
 5023|  1.80M|			rice_parameter = rice_parameter_limit - 1;
 5024|  1.80M|		}
 5025|       |
 5026|  43.1M|		best_partition_bits = UINT32_MAX;
 5027|       |#ifdef ENABLE_RICE_PARAMETER_SEARCH
 5028|       |		if(rice_parameter_search_dist) {
 5029|       |			if(rice_parameter < rice_parameter_search_dist)
 5030|       |				min_rice_parameter = 0;
 5031|       |			else
 5032|       |				min_rice_parameter = rice_parameter - rice_parameter_search_dist;
 5033|       |			max_rice_parameter = rice_parameter + rice_parameter_search_dist;
 5034|       |			if(max_rice_parameter >= rice_parameter_limit) {
 5035|       |				max_rice_parameter = rice_parameter_limit - 1;
 5036|       |			}
 5037|       |		}
 5038|       |		else
 5039|       |			min_rice_parameter = max_rice_parameter = rice_parameter;
 5040|       |
 5041|       |		for(rice_parameter = min_rice_parameter; rice_parameter <= max_rice_parameter; rice_parameter++) {
 5042|       |#endif
 5043|       |#ifdef EXACT_RICE_BITS_CALCULATION
 5044|       |			partition_bits = count_rice_bits_in_partition_(rice_parameter, partition_samples, residual+residual_sample);
 5045|       |#else
 5046|  43.1M|			partition_bits = count_rice_bits_in_partition_(rice_parameter, partition_samples, abs_residual_partition_sums[partition]);
 5047|  43.1M|#endif
 5048|  43.3M|			if(partition_bits < best_partition_bits) {
  ------------------
  |  Branch (5048:7): [True: 43.3M, False: 18.4E]
  ------------------
 5049|  43.3M|				best_rice_parameter = rice_parameter;
 5050|  43.3M|				best_partition_bits = partition_bits;
 5051|  43.3M|			}
 5052|       |#ifdef ENABLE_RICE_PARAMETER_SEARCH
 5053|       |		}
 5054|       |#endif
 5055|  43.1M|		if(search_for_escapes) {
  ------------------
  |  Branch (5055:6): [True: 34.2M, False: 8.92M]
  ------------------
 5056|  34.2M|			partition_bits = FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN + FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN + raw_bits_per_partition[partition] * partition_samples;
 5057|  34.2M|			if(partition_bits <= best_partition_bits && raw_bits_per_partition[partition] < 32) {
  ------------------
  |  Branch (5057:7): [True: 3.88M, False: 30.3M]
  |  Branch (5057:48): [True: 3.72M, False: 160k]
  ------------------
 5058|  3.72M|				raw_bits[partition] = raw_bits_per_partition[partition];
 5059|  3.72M|				best_rice_parameter = 0; /* will be converted to appropriate escape parameter later */
 5060|  3.72M|				best_partition_bits = partition_bits;
 5061|  3.72M|			}
 5062|  30.4M|			else
 5063|  30.4M|				raw_bits[partition] = 0;
 5064|  34.2M|		}
 5065|  43.1M|		parameters[partition] = best_rice_parameter;
 5066|  43.1M|		if(best_partition_bits < UINT32_MAX - bits_) // To make sure _bits doesn't overflow
  ------------------
  |  Branch (5066:6): [True: 43.3M, False: 18.4E]
  ------------------
 5067|  43.3M|			bits_ += best_partition_bits;
 5068|  18.4E|		else
 5069|  18.4E|			bits_ = UINT32_MAX;
 5070|  43.1M|		residual_sample += partition_samples;
 5071|  43.1M|	}
 5072|       |
 5073|  18.4M|	*bits = bits_;
 5074|       |	return true;
 5075|  18.4M|}
stream_encoder.c:count_rice_bits_in_partition_:
 4934|  43.3M|{
 4935|  43.3M|	return (uint32_t)(flac_min( // To make sure the return value doesn't overflow
  ------------------
  |  |   56|  43.3M|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (4935:20): [True: 30.5M, False: 12.7M]
  |  Branch (4935:20): [True: 30.5M, False: 12.7M]
  |  Branch (4935:20): [True: 43.3M, False: 18.4E]
  ------------------
 4936|  43.3M|		FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN + /* actually could end up being FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN but err on side of 16bps */
 4937|  43.3M|		(1+rice_parameter) * partition_samples + /* 1 for unary stop bit + rice_parameter for the binary portion */
 4938|  43.3M|		(
 4939|  43.3M|			rice_parameter?
 4940|  43.3M|				(abs_residual_partition_sum >> (rice_parameter-1)) /* rice_parameter-1 because the real coder sign-folds instead of using a sign bit */
 4941|  43.3M|				: (abs_residual_partition_sum << 1) /* can't shift by negative number, so reverse */
 4942|  43.3M|		)
 4943|  43.3M|		- (partition_samples >> 1),UINT32_MAX));
 4944|       |		/* -(partition_samples>>1) to subtract out extra contributions to the abs_residual_partition_sum.
 4945|       |		 * The actual number of bits used is closer to the sum(for all i in the partition) of  abs(residual[i])>>(rice_parameter-1)
 4946|       |		 * By using the abs_residual_partition sum, we also add in bits in the LSBs that would normally be shifted out.
 4947|       |		 * So the subtraction term tries to guess how many extra bits were contributed.
 4948|       |		 * If the LSBs are randomly distributed, this should average to 0.5 extra bits per sample.
 4949|       |		 */
 4950|      0|	;
 4951|      0|}
stream_encoder.c:apply_apodization_:
 4327|   364M|{
 4328|   364M|	apply_apodization_state->current_apodization = &encoder->protected_->apodizations[apply_apodization_state->a];
 4329|       |
 4330|   364M|	if(apply_apodization_state->b == 1) {
  ------------------
  |  Branch (4330:5): [True: 254k, False: 364M]
  ------------------
 4331|       |		/* window full subblock */
 4332|   254k|		if(subframe_bps <= 32)
  ------------------
  |  Branch (4332:6): [True: 239k, False: 14.3k]
  ------------------
 4333|   239k|			FLAC__lpc_window_data(integer_signal, encoder->private_->window[apply_apodization_state->a], threadtask->windowed_signal, blocksize);
 4334|  14.3k|		else
 4335|  14.3k|			FLAC__lpc_window_data_wide(integer_signal, encoder->private_->window[apply_apodization_state->a], threadtask->windowed_signal, blocksize);
 4336|   254k|		encoder->private_->local_lpc_compute_autocorrelation(threadtask->windowed_signal, blocksize, (*max_lpc_order_this_apodization)+1, apply_apodization_state->autoc);
 4337|   254k|		if(apply_apodization_state->current_apodization->type == FLAC__APODIZATION_SUBDIVIDE_TUKEY){
  ------------------
  |  Branch (4337:6): [True: 3.49k, False: 250k]
  ------------------
 4338|  3.49k|			uint32_t i;
 4339|  33.3k|			for(i = 0; i < *max_lpc_order_this_apodization; i++)
  ------------------
  |  Branch (4339:15): [True: 29.9k, False: 3.49k]
  ------------------
 4340|  29.9k|			memcpy(apply_apodization_state->autoc_root, apply_apodization_state->autoc, *max_lpc_order_this_apodization*sizeof(apply_apodization_state->autoc[0]));
 4341|       |
 4342|  3.49k|			(apply_apodization_state->b)++;
 4343|   250k|		}else{
 4344|   250k|			(apply_apodization_state->a)++;
 4345|   250k|		}
 4346|   254k|	}
 4347|   364M|	else {
 4348|       |		/* window part of subblock */
 4349|   364M|		if(blocksize/apply_apodization_state->b <= FLAC__MAX_LPC_ORDER) {
  ------------------
  |  |  128|   364M|#define FLAC__MAX_LPC_ORDER (32u)
  ------------------
  |  Branch (4349:6): [True: 364M, False: 81.9k]
  ------------------
 4350|       |			/* intrinsics autocorrelation routines do not all handle cases in which lag might be
 4351|       |			 * larger than data_len, and some routines round lag up to the nearest multiple of 4
 4352|       |			 * As little gain is expected from using LPC on part of a signal as small as 32 samples
 4353|       |			 * and to enable widening this rounding up to larger values in the future, windowing
 4354|       |			 * parts smaller than or equal to FLAC__MAX_LPC_ORDER (which is 32) samples is not supported */
 4355|   364M|			set_next_subdivide_tukey(apply_apodization_state->current_apodization->parameters.subdivide_tukey.parts, &apply_apodization_state->a, &apply_apodization_state->b, &apply_apodization_state->c);
 4356|   364M|			return false;
 4357|   364M|		}
 4358|  81.9k|		if(!(apply_apodization_state->c % 2)) {
  ------------------
  |  Branch (4358:6): [True: 43.6k, False: 38.2k]
  ------------------
 4359|       |			/* on even c, evaluate the (c/2)th partial window of size blocksize/b  */
 4360|  43.6k|			if(subframe_bps <= 32)
  ------------------
  |  Branch (4360:7): [True: 40.4k, False: 3.17k]
  ------------------
 4361|  40.4k|				FLAC__lpc_window_data_partial(integer_signal, encoder->private_->window[apply_apodization_state->a], threadtask->windowed_signal, blocksize, blocksize/apply_apodization_state->b/2, (apply_apodization_state->c/2*blocksize)/apply_apodization_state->b);
 4362|  3.17k|			else
 4363|  3.17k|				FLAC__lpc_window_data_partial_wide(integer_signal, encoder->private_->window[apply_apodization_state->a], threadtask->windowed_signal, blocksize, blocksize/apply_apodization_state->b/2, (apply_apodization_state->c/2*blocksize)/apply_apodization_state->b);
 4364|  43.6k|			encoder->private_->local_lpc_compute_autocorrelation(threadtask->windowed_signal, blocksize/apply_apodization_state->b, (*max_lpc_order_this_apodization)+1, apply_apodization_state->autoc);
 4365|  43.6k|		}
 4366|  38.2k|		else {
 4367|       |			/* on uneven c, evaluate the root window (over the whole block) minus the previous partial window
 4368|       |			 * similar to tukey_punchout apodization but more efficient */
 4369|  38.2k|			uint32_t i;
 4370|   458k|			for(i = 0; i < *max_lpc_order_this_apodization; i++)
  ------------------
  |  Branch (4370:15): [True: 420k, False: 38.2k]
  ------------------
 4371|   420k|				apply_apodization_state->autoc[i] = apply_apodization_state->autoc_root[i] - apply_apodization_state->autoc[i];
 4372|  38.2k|		}
 4373|       |		/* Next function sets a, b and c appropriate for next iteration */
 4374|  81.9k|		set_next_subdivide_tukey(apply_apodization_state->current_apodization->parameters.subdivide_tukey.parts, &apply_apodization_state->a, &apply_apodization_state->b, &apply_apodization_state->c);
 4375|  81.9k|	}
 4376|       |
 4377|   336k|	if(apply_apodization_state->autoc[0] == 0.0) /* Signal seems to be constant, so we can't do lp. Constant detection is probably disabled */
  ------------------
  |  Branch (4377:5): [True: 2.96k, False: 333k]
  ------------------
 4378|  2.96k|		return false;
 4379|   333k|	FLAC__lpc_compute_lp_coefficients(apply_apodization_state->autoc, max_lpc_order_this_apodization, threadtask->lp_coeff, lpc_error);
 4380|   333k|	*guess_lpc_order =
 4381|   333k|	FLAC__lpc_compute_best_order(
 4382|   333k|		lpc_error,
 4383|   333k|		*max_lpc_order_this_apodization,
 4384|   333k|		blocksize,
 4385|   333k|		subframe_bps + (
 4386|   333k|			encoder->protected_->do_qlp_coeff_prec_search?
  ------------------
  |  Branch (4386:4): [True: 163k, False: 170k]
  ------------------
 4387|   163k|				FLAC__MIN_QLP_COEFF_PRECISION : /* have to guess; use the min possible size to avoid accidentally favoring lower orders */
  ------------------
  |  |  137|   163k|#define FLAC__MIN_QLP_COEFF_PRECISION (5u)
  ------------------
 4388|   333k|				encoder->protected_->qlp_coeff_precision
 4389|   333k|		)
 4390|   333k|	);
 4391|       |	return true;
 4392|   336k|}
stream_encoder.c:set_next_subdivide_tukey:
 4293|   364M|static inline void set_next_subdivide_tukey(FLAC__int32 parts, uint32_t * apodizations, uint32_t * current_depth, uint32_t * current_part){
 4294|       |	// current_part is interleaved: even are partial, odd are punchout
 4295|   364M|	if(*current_depth == 2){
  ------------------
  |  Branch (4295:5): [True: 6.98k, False: 364M]
  ------------------
 4296|       |		// For depth 2, we only do partial, no punchout as that is almost redundant
 4297|  6.98k|		if(*current_part == 0){
  ------------------
  |  Branch (4297:6): [True: 3.49k, False: 3.49k]
  ------------------
 4298|  3.49k|			*current_part = 2;
 4299|  3.49k|		}else{ /* *current_path == 2 */
 4300|  3.49k|			*current_part = 0;
 4301|  3.49k|			(*current_depth)++;
 4302|  3.49k|		}
 4303|   364M|	}else if((*current_part) < (2*(*current_depth)-1)){
  ------------------
  |  Branch (4303:11): [True: 364M, False: 73.2k]
  ------------------
 4304|   364M|		(*current_part)++;
 4305|   364M|	}else{ /* (*current_part) >= (2*(*current_depth)-1) */
 4306|  73.2k|		*current_part = 0;
 4307|  73.2k|		(*current_depth)++;
 4308|  73.2k|	}
 4309|       |
 4310|       |	/* Now check if we are done with this SUBDIVIDE_TUKEY apodization */
 4311|   364M|	if(*current_depth > (uint32_t) parts){
  ------------------
  |  Branch (4311:5): [True: 3.49k, False: 364M]
  ------------------
 4312|  3.49k|		(*apodizations)++;
 4313|  3.49k|		*current_depth = 1;
 4314|  3.49k|		*current_part = 0;
 4315|  3.49k|	}
 4316|   364M|}
stream_encoder.c:evaluate_lpc_subframe_:
 4584|  20.6M|{
 4585|  20.6M|	FLAC__int32 qlp_coeff[FLAC__MAX_LPC_ORDER]; /* WATCHOUT: the size is important; some x86 intrinsic routines need more than lpc order elements */
 4586|  20.6M|	uint32_t i, residual_bits, estimate;
 4587|  20.6M|	int quantization, ret;
 4588|  20.6M|	const uint32_t residual_samples = blocksize - order;
 4589|       |
 4590|       |	/* try to keep qlp coeff precision such that only 32-bit math is required for decode of <=16bps(+1bps for side channel) streams */
 4591|  20.6M|	if(subframe_bps <= 17) {
  ------------------
  |  Branch (4591:5): [True: 1.96M, False: 18.7M]
  ------------------
 4592|  1.96M|		FLAC__ASSERT(order > 0);
  ------------------
  |  |   38|  1.96M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.96M]
  |  |  ------------------
  ------------------
 4593|  1.96M|		FLAC__ASSERT(order <= FLAC__MAX_LPC_ORDER);
  ------------------
  |  |   38|  1.96M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 1.96M]
  |  |  ------------------
  ------------------
 4594|  1.96M|		qlp_coeff_precision = flac_min(qlp_coeff_precision, 32 - subframe_bps - FLAC__bitmath_ilog2(order));
  ------------------
  |  |   56|  1.96M|#define flac_min(a,b) MIN(a,b)
  ------------------
  |  Branch (4594:25): [True: 1.83M, False: 128k]
  ------------------
 4595|  1.96M|	}
 4596|       |
 4597|  20.6M|	ret = FLAC__lpc_quantize_coefficients(lp_coeff, order, qlp_coeff_precision, qlp_coeff, &quantization);
 4598|  20.6M|	if(ret != 0)
  ------------------
  |  Branch (4598:5): [True: 802k, False: 19.8M]
  ------------------
 4599|   802k|		return 0; /* this is a hack to indicate to the caller that we can't do lp at this order on this subframe */
 4600|       |
 4601|  19.8M|	if(FLAC__lpc_max_residual_bps(subframe_bps, qlp_coeff, order, quantization) > 32) {
  ------------------
  |  Branch (4601:5): [True: 12.9M, False: 6.91M]
  ------------------
 4602|  12.9M|		if(subframe_bps <= 32){
  ------------------
  |  Branch (4602:6): [True: 11.8M, False: 1.11M]
  ------------------
 4603|  11.8M|			if(!FLAC__lpc_compute_residual_from_qlp_coefficients_limit_residual(((FLAC__int32 *)signal)+order, residual_samples, qlp_coeff, order, quantization, residual))
  ------------------
  |  Branch (4603:7): [True: 1.90M, False: 9.94M]
  ------------------
 4604|  1.90M|				return 0;
 4605|  11.8M|		}
 4606|  1.11M|		else
 4607|  1.11M|			if(!FLAC__lpc_compute_residual_from_qlp_coefficients_limit_residual_33bit(((FLAC__int64 *)signal)+order, residual_samples, qlp_coeff, order, quantization, residual))
  ------------------
  |  Branch (4607:7): [True: 365k, False: 753k]
  ------------------
 4608|   365k|				return 0;
 4609|  12.9M|	}
 4610|  6.91M|	else
 4611|  6.91M|		if(FLAC__lpc_max_prediction_before_shift_bps(subframe_bps, qlp_coeff, order) <= 32)
  ------------------
  |  Branch (4611:6): [True: 3.63M, False: 3.27M]
  ------------------
 4612|  3.63M|			if(subframe_bps <= 16 && qlp_coeff_precision <= 16)
  ------------------
  |  Branch (4612:7): [True: 1.66M, False: 1.97M]
  |  Branch (4612:29): [True: 1.66M, False: 0]
  ------------------
 4613|  1.66M|				encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_16bit(((FLAC__int32 *)signal)+order, residual_samples, qlp_coeff, order, quantization, residual);
 4614|  1.97M|			else
 4615|  1.97M|				encoder->private_->local_lpc_compute_residual_from_qlp_coefficients(((FLAC__int32 *)signal)+order, residual_samples, qlp_coeff, order, quantization, residual);
 4616|  3.27M|		else
 4617|  3.27M|			encoder->private_->local_lpc_compute_residual_from_qlp_coefficients_64bit(((FLAC__int32 *)signal)+order, residual_samples, qlp_coeff, order, quantization, residual);
 4618|       |
 4619|  17.6M|	subframe->type = FLAC__SUBFRAME_TYPE_LPC;
 4620|       |
 4621|  17.6M|	subframe->data.lpc.entropy_coding_method.type = FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE;
 4622|  17.6M|	subframe->data.lpc.entropy_coding_method.data.partitioned_rice.contents = partitioned_rice_contents;
 4623|  17.6M|	subframe->data.lpc.residual = residual;
 4624|       |
 4625|  17.6M|	residual_bits =
 4626|  17.6M|		find_best_partition_order_(
 4627|  17.6M|			encoder->private_,
 4628|  17.6M|			threadtask,
 4629|  17.6M|			residual,
 4630|  17.6M|			abs_residual_partition_sums,
 4631|  17.6M|			raw_bits_per_partition,
 4632|  17.6M|			residual_samples,
 4633|  17.6M|			order,
 4634|  17.6M|			rice_parameter_limit,
 4635|  17.6M|			min_partition_order,
 4636|  17.6M|			max_partition_order,
 4637|  17.6M|			subframe_bps,
 4638|  17.6M|			do_escape_coding,
 4639|  17.6M|			rice_parameter_search_dist,
 4640|  17.6M|			&subframe->data.lpc.entropy_coding_method
 4641|  17.6M|		);
 4642|       |
 4643|  17.6M|	subframe->data.lpc.order = order;
 4644|  17.6M|	subframe->data.lpc.qlp_coeff_precision = qlp_coeff_precision;
 4645|  17.6M|	subframe->data.lpc.quantization_level = quantization;
 4646|  17.6M|	memcpy(subframe->data.lpc.qlp_coeff, qlp_coeff, sizeof(FLAC__int32)*FLAC__MAX_LPC_ORDER);
  ------------------
  |  |  128|  17.6M|#define FLAC__MAX_LPC_ORDER (32u)
  ------------------
 4647|  17.6M|	if(subframe_bps <= 32)
  ------------------
  |  Branch (4647:5): [True: 16.6M, False: 912k]
  ------------------
 4648|   151M|		for(i = 0; i < order; i++)
  ------------------
  |  Branch (4648:14): [True: 134M, False: 16.6M]
  ------------------
 4649|   134M|			subframe->data.lpc.warmup[i] = ((FLAC__int32 *)signal)[i];
 4650|   912k|	else
 4651|  7.78M|		for(i = 0; i < order; i++)
  ------------------
  |  Branch (4651:14): [True: 6.87M, False: 912k]
  ------------------
 4652|  6.87M|			subframe->data.lpc.warmup[i] = ((FLAC__int64 *)signal)[i];
 4653|       |
 4654|       |
 4655|  17.6M|	estimate = FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN + subframe->wasted_bits + FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN + FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN + (order * (qlp_coeff_precision + subframe_bps));
 4656|  17.6M|	if(residual_bits < UINT32_MAX - estimate) // To make sure estimate doesn't overflow
  ------------------
  |  Branch (4656:5): [True: 17.6M, False: 18.4E]
  ------------------
 4657|  17.6M|		estimate += residual_bits;
 4658|  18.4E|	else
 4659|  18.4E|		estimate = UINT32_MAX;
 4660|       |
 4661|       |#if SPOTCHECK_ESTIMATE
 4662|       |	spotcheck_subframe_estimate_(encoder, blocksize, subframe_bps, subframe, estimate);
 4663|       |#endif
 4664|       |
 4665|  17.6M|	return estimate;
 4666|  19.8M|}
stream_encoder.c:add_subframe_:
 4402|   316k|{
 4403|   316k|	switch(subframe->type) {
 4404|   112k|		case FLAC__SUBFRAME_TYPE_CONSTANT:
  ------------------
  |  Branch (4404:3): [True: 112k, False: 203k]
  ------------------
 4405|   112k|			if(!FLAC__subframe_add_constant(&(subframe->data.constant), subframe_bps, subframe->wasted_bits, frame)) {
  ------------------
  |  Branch (4405:7): [True: 0, False: 112k]
  ------------------
 4406|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 4407|      0|				return false;
 4408|      0|			}
 4409|   112k|			break;
 4410|   146k|		case FLAC__SUBFRAME_TYPE_FIXED:
  ------------------
  |  Branch (4410:3): [True: 146k, False: 170k]
  ------------------
 4411|   146k|			if(!FLAC__subframe_add_fixed(&(subframe->data.fixed), blocksize - subframe->data.fixed.order, subframe_bps, subframe->wasted_bits, frame)) {
  ------------------
  |  Branch (4411:7): [True: 0, False: 146k]
  ------------------
 4412|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 4413|      0|				return false;
 4414|      0|			}
 4415|   146k|			break;
 4416|   146k|		case FLAC__SUBFRAME_TYPE_LPC:
  ------------------
  |  Branch (4416:3): [True: 18.6k, False: 297k]
  ------------------
 4417|  18.6k|			if(!FLAC__subframe_add_lpc(&(subframe->data.lpc), blocksize - subframe->data.lpc.order, subframe_bps, subframe->wasted_bits, frame)) {
  ------------------
  |  Branch (4417:7): [True: 0, False: 18.6k]
  ------------------
 4418|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 4419|      0|				return false;
 4420|      0|			}
 4421|  18.6k|			break;
 4422|  39.0k|		case FLAC__SUBFRAME_TYPE_VERBATIM:
  ------------------
  |  Branch (4422:3): [True: 39.0k, False: 277k]
  ------------------
 4423|  39.0k|			if(!FLAC__subframe_add_verbatim(&(subframe->data.verbatim), blocksize, subframe_bps, subframe->wasted_bits, frame)) {
  ------------------
  |  Branch (4423:7): [True: 0, False: 39.0k]
  ------------------
 4424|      0|				encoder->protected_->state = FLAC__STREAM_ENCODER_FRAMING_ERROR;
 4425|      0|				return false;
 4426|      0|			}
 4427|  39.0k|			break;
 4428|  39.0k|		default:
  ------------------
  |  Branch (4428:3): [True: 0, False: 316k]
  ------------------
 4429|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
 4430|   316k|	}
 4431|       |
 4432|   316k|	return true;
 4433|   316k|}
stream_encoder.c:append_to_verify_fifo_interleaved_:
 5139|   380k|{
 5140|   380k|	uint32_t channel;
 5141|   380k|	uint32_t sample, wide_sample;
 5142|   380k|	uint32_t tail = fifo->tail;
 5143|       |
 5144|   380k|	sample = input_offset * channels;
 5145|  22.8M|	for(wide_sample = 0; wide_sample < wide_samples; wide_sample++) {
  ------------------
  |  Branch (5145:23): [True: 22.4M, False: 380k]
  ------------------
 5146|  50.9M|		for(channel = 0; channel < channels; channel++)
  ------------------
  |  Branch (5146:20): [True: 28.4M, False: 22.4M]
  ------------------
 5147|  28.4M|			fifo->data[channel][tail] = input[sample++];
 5148|  22.4M|		tail++;
 5149|  22.4M|	}
 5150|   380k|	fifo->tail = tail;
 5151|       |
 5152|   380k|	FLAC__ASSERT(fifo->tail <= fifo->size);
  ------------------
  |  |   38|   380k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 380k]
  |  |  ------------------
  ------------------
 5153|   380k|}

FLAC__add_metadata_block:
   48|  19.1k|{
   49|  19.1k|	uint32_t i, j, metadata_length;
   50|  19.1k|	const uint32_t vendor_string_length = (uint32_t)strlen(FLAC__VENDOR_STRING);
   51|  19.1k|	const uint32_t start_bits = FLAC__bitwriter_get_input_bits_unconsumed(bw);
   52|       |
   53|  19.1k|	FLAC__ASSERT(FLAC__bitwriter_is_byte_aligned(bw));
  ------------------
  |  |   38|  19.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
   54|       |
   55|  19.1k|	if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->is_last, FLAC__STREAM_METADATA_IS_LAST_LEN))
  ------------------
  |  Branch (55:5): [True: 0, False: 19.1k]
  ------------------
   56|      0|		return false;
   57|       |
   58|  19.1k|	if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->type, FLAC__STREAM_METADATA_TYPE_LEN))
  ------------------
  |  Branch (58:5): [True: 0, False: 19.1k]
  ------------------
   59|      0|		return false;
   60|       |
   61|       |	/*
   62|       |	 * First, for VORBIS_COMMENTs, adjust the length to reflect our vendor string
   63|       |	 */
   64|  19.1k|	metadata_length = metadata->length;
   65|  19.1k|	if(metadata->type == FLAC__METADATA_TYPE_VORBIS_COMMENT && update_vendor_string) {
  ------------------
  |  Branch (65:5): [True: 9.55k, False: 9.55k]
  |  Branch (65:61): [True: 9.55k, False: 0]
  ------------------
   66|  9.55k|		FLAC__ASSERT(metadata->data.vorbis_comment.vendor_string.length == 0 || 0 != metadata->data.vorbis_comment.vendor_string.entry);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 9.55k, False: 0]
  |  |  |  Branch (38:30): [True: 0, False: 0]
  |  |  ------------------
  ------------------
   67|  9.55k|		metadata_length -= metadata->data.vorbis_comment.vendor_string.length;
   68|  9.55k|		metadata_length += vendor_string_length;
   69|  9.55k|	}
   70|  19.1k|	FLAC__ASSERT(metadata_length < (1u << FLAC__STREAM_METADATA_LENGTH_LEN));
  ------------------
  |  |   38|  19.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
   71|       |	/* double protection */
   72|  19.1k|	if(metadata_length >= (1u << FLAC__STREAM_METADATA_LENGTH_LEN))
  ------------------
  |  Branch (72:5): [True: 0, False: 19.1k]
  ------------------
   73|      0|		return false;
   74|  19.1k|	if(!FLAC__bitwriter_write_raw_uint32(bw, metadata_length, FLAC__STREAM_METADATA_LENGTH_LEN))
  ------------------
  |  Branch (74:5): [True: 0, False: 19.1k]
  ------------------
   75|      0|		return false;
   76|       |
   77|  19.1k|	switch(metadata->type) {
   78|  9.55k|		case FLAC__METADATA_TYPE_STREAMINFO:
  ------------------
  |  Branch (78:3): [True: 9.55k, False: 9.55k]
  ------------------
   79|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.min_blocksize < (1u << FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN));
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   80|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.stream_info.min_blocksize, FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN))
  ------------------
  |  Branch (80:7): [True: 0, False: 9.55k]
  ------------------
   81|      0|				return false;
   82|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.max_blocksize < (1u << FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN));
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   83|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.stream_info.max_blocksize, FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN))
  ------------------
  |  Branch (83:7): [True: 0, False: 9.55k]
  ------------------
   84|      0|				return false;
   85|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.min_framesize < (1u << FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN));
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   86|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.stream_info.min_framesize, FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN))
  ------------------
  |  Branch (86:7): [True: 0, False: 9.55k]
  ------------------
   87|      0|				return false;
   88|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.max_framesize < (1u << FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN));
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   89|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.stream_info.max_framesize, FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN))
  ------------------
  |  Branch (89:7): [True: 0, False: 9.55k]
  ------------------
   90|      0|				return false;
   91|  9.55k|			FLAC__ASSERT(FLAC__format_sample_rate_is_valid(metadata->data.stream_info.sample_rate));
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   92|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.stream_info.sample_rate, FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN))
  ------------------
  |  Branch (92:7): [True: 0, False: 9.55k]
  ------------------
   93|      0|				return false;
   94|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.channels > 0);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   95|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.channels <= (1u << FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN));
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   96|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.stream_info.channels-1, FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN))
  ------------------
  |  Branch (96:7): [True: 0, False: 9.55k]
  ------------------
   97|      0|				return false;
   98|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.bits_per_sample > 0);
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
   99|  9.55k|			FLAC__ASSERT(metadata->data.stream_info.bits_per_sample <= (1u << FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN));
  ------------------
  |  |   38|  9.55k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 9.55k]
  |  |  ------------------
  ------------------
  100|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.stream_info.bits_per_sample-1, FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN))
  ------------------
  |  Branch (100:7): [True: 0, False: 9.55k]
  ------------------
  101|      0|				return false;
  102|  9.55k|			if(metadata->data.stream_info.total_samples >= (FLAC__U64L(1) << FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN)){
  ------------------
  |  |  102|  9.55k|#define FLAC__U64L(x) x##ULL
  ------------------
  |  Branch (102:7): [True: 0, False: 9.55k]
  ------------------
  103|      0|				if(!FLAC__bitwriter_write_raw_uint64(bw, 0, FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN))
  ------------------
  |  Branch (103:8): [True: 0, False: 0]
  ------------------
  104|      0|					return false;
  105|  9.55k|			}else{
  106|  9.55k|				if(!FLAC__bitwriter_write_raw_uint64(bw, metadata->data.stream_info.total_samples, FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN))
  ------------------
  |  Branch (106:8): [True: 0, False: 9.55k]
  ------------------
  107|      0|					return false;
  108|  9.55k|			}
  109|  9.55k|			if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.stream_info.md5sum, 16))
  ------------------
  |  Branch (109:7): [True: 0, False: 9.55k]
  ------------------
  110|      0|				return false;
  111|  9.55k|			break;
  112|  9.55k|		case FLAC__METADATA_TYPE_PADDING:
  ------------------
  |  Branch (112:3): [True: 0, False: 19.1k]
  ------------------
  113|      0|			if(!FLAC__bitwriter_write_zeroes(bw, metadata->length * 8))
  ------------------
  |  Branch (113:7): [True: 0, False: 0]
  ------------------
  114|      0|				return false;
  115|      0|			break;
  116|      0|		case FLAC__METADATA_TYPE_APPLICATION:
  ------------------
  |  Branch (116:3): [True: 0, False: 19.1k]
  ------------------
  117|      0|			if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.application.id, FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8))
  ------------------
  |  Branch (117:7): [True: 0, False: 0]
  ------------------
  118|      0|				return false;
  119|      0|			if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.application.data, metadata->length - (FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8)))
  ------------------
  |  Branch (119:7): [True: 0, False: 0]
  ------------------
  120|      0|				return false;
  121|      0|			break;
  122|      0|		case FLAC__METADATA_TYPE_SEEKTABLE:
  ------------------
  |  Branch (122:3): [True: 0, False: 19.1k]
  ------------------
  123|      0|			for(i = 0; i < metadata->data.seek_table.num_points; i++) {
  ------------------
  |  Branch (123:15): [True: 0, False: 0]
  ------------------
  124|      0|				if(!FLAC__bitwriter_write_raw_uint64(bw, metadata->data.seek_table.points[i].sample_number, FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN))
  ------------------
  |  Branch (124:8): [True: 0, False: 0]
  ------------------
  125|      0|					return false;
  126|      0|				if(!FLAC__bitwriter_write_raw_uint64(bw, metadata->data.seek_table.points[i].stream_offset, FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN))
  ------------------
  |  Branch (126:8): [True: 0, False: 0]
  ------------------
  127|      0|					return false;
  128|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.seek_table.points[i].frame_samples, FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN))
  ------------------
  |  Branch (128:8): [True: 0, False: 0]
  ------------------
  129|      0|					return false;
  130|      0|			}
  131|      0|			break;
  132|  9.55k|		case FLAC__METADATA_TYPE_VORBIS_COMMENT:
  ------------------
  |  Branch (132:3): [True: 9.55k, False: 9.55k]
  ------------------
  133|  9.55k|			if(update_vendor_string) {
  ------------------
  |  Branch (133:7): [True: 9.55k, False: 0]
  ------------------
  134|  9.55k|				if(!FLAC__bitwriter_write_raw_uint32_little_endian(bw, vendor_string_length))
  ------------------
  |  Branch (134:8): [True: 0, False: 9.55k]
  ------------------
  135|      0|					return false;
  136|  9.55k|				if(!FLAC__bitwriter_write_byte_block(bw, (const FLAC__byte*)FLAC__VENDOR_STRING, vendor_string_length))
  ------------------
  |  Branch (136:8): [True: 0, False: 9.55k]
  ------------------
  137|      0|					return false;
  138|  9.55k|			}
  139|      0|			else {
  140|      0|				if(!FLAC__bitwriter_write_raw_uint32_little_endian(bw, metadata->data.vorbis_comment.vendor_string.length))
  ------------------
  |  Branch (140:8): [True: 0, False: 0]
  ------------------
  141|      0|					return false;
  142|      0|				if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.vorbis_comment.vendor_string.entry, metadata->data.vorbis_comment.vendor_string.length))
  ------------------
  |  Branch (142:8): [True: 0, False: 0]
  ------------------
  143|      0|					return false;
  144|      0|			}
  145|  9.55k|			if(!FLAC__bitwriter_write_raw_uint32_little_endian(bw, metadata->data.vorbis_comment.num_comments))
  ------------------
  |  Branch (145:7): [True: 0, False: 9.55k]
  ------------------
  146|      0|				return false;
  147|  9.55k|			for(i = 0; i < metadata->data.vorbis_comment.num_comments; i++) {
  ------------------
  |  Branch (147:15): [True: 0, False: 9.55k]
  ------------------
  148|      0|				if(!FLAC__bitwriter_write_raw_uint32_little_endian(bw, metadata->data.vorbis_comment.comments[i].length))
  ------------------
  |  Branch (148:8): [True: 0, False: 0]
  ------------------
  149|      0|					return false;
  150|      0|				if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.vorbis_comment.comments[i].entry, metadata->data.vorbis_comment.comments[i].length))
  ------------------
  |  Branch (150:8): [True: 0, False: 0]
  ------------------
  151|      0|					return false;
  152|      0|			}
  153|  9.55k|			break;
  154|  9.55k|		case FLAC__METADATA_TYPE_CUESHEET:
  ------------------
  |  Branch (154:3): [True: 0, False: 19.1k]
  ------------------
  155|      0|			FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN % 8 == 0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  156|      0|			if(!FLAC__bitwriter_write_byte_block(bw, (const FLAC__byte*)metadata->data.cue_sheet.media_catalog_number, FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN/8))
  ------------------
  |  Branch (156:7): [True: 0, False: 0]
  ------------------
  157|      0|				return false;
  158|      0|			if(!FLAC__bitwriter_write_raw_uint64(bw, metadata->data.cue_sheet.lead_in, FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN))
  ------------------
  |  Branch (158:7): [True: 0, False: 0]
  ------------------
  159|      0|				return false;
  160|      0|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.cue_sheet.is_cd? 1 : 0, FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN))
  ------------------
  |  Branch (160:7): [True: 0, False: 0]
  |  Branch (160:45): [True: 0, False: 0]
  ------------------
  161|      0|				return false;
  162|      0|			if(!FLAC__bitwriter_write_zeroes(bw, FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN))
  ------------------
  |  Branch (162:7): [True: 0, False: 0]
  ------------------
  163|      0|				return false;
  164|      0|			if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.cue_sheet.num_tracks, FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN))
  ------------------
  |  Branch (164:7): [True: 0, False: 0]
  ------------------
  165|      0|				return false;
  166|      0|			for(i = 0; i < metadata->data.cue_sheet.num_tracks; i++) {
  ------------------
  |  Branch (166:15): [True: 0, False: 0]
  ------------------
  167|      0|				const FLAC__StreamMetadata_CueSheet_Track *track = metadata->data.cue_sheet.tracks + i;
  168|       |
  169|      0|				if(!FLAC__bitwriter_write_raw_uint64(bw, track->offset, FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN))
  ------------------
  |  Branch (169:8): [True: 0, False: 0]
  ------------------
  170|      0|					return false;
  171|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, track->number, FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN))
  ------------------
  |  Branch (171:8): [True: 0, False: 0]
  ------------------
  172|      0|					return false;
  173|      0|				FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN % 8 == 0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  174|      0|				if(!FLAC__bitwriter_write_byte_block(bw, (const FLAC__byte*)track->isrc, FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN/8))
  ------------------
  |  Branch (174:8): [True: 0, False: 0]
  ------------------
  175|      0|					return false;
  176|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, track->type, FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN))
  ------------------
  |  Branch (176:8): [True: 0, False: 0]
  ------------------
  177|      0|					return false;
  178|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, track->pre_emphasis, FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN))
  ------------------
  |  Branch (178:8): [True: 0, False: 0]
  ------------------
  179|      0|					return false;
  180|      0|				if(!FLAC__bitwriter_write_zeroes(bw, FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN))
  ------------------
  |  Branch (180:8): [True: 0, False: 0]
  ------------------
  181|      0|					return false;
  182|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, track->num_indices, FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN))
  ------------------
  |  Branch (182:8): [True: 0, False: 0]
  ------------------
  183|      0|					return false;
  184|      0|				for(j = 0; j < track->num_indices; j++) {
  ------------------
  |  Branch (184:16): [True: 0, False: 0]
  ------------------
  185|      0|					const FLAC__StreamMetadata_CueSheet_Index *indx = track->indices + j;
  186|       |
  187|      0|					if(!FLAC__bitwriter_write_raw_uint64(bw, indx->offset, FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN))
  ------------------
  |  Branch (187:9): [True: 0, False: 0]
  ------------------
  188|      0|						return false;
  189|      0|					if(!FLAC__bitwriter_write_raw_uint32(bw, indx->number, FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN))
  ------------------
  |  Branch (189:9): [True: 0, False: 0]
  ------------------
  190|      0|						return false;
  191|      0|					if(!FLAC__bitwriter_write_zeroes(bw, FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN))
  ------------------
  |  Branch (191:9): [True: 0, False: 0]
  ------------------
  192|      0|						return false;
  193|      0|				}
  194|      0|			}
  195|      0|			break;
  196|      0|		case FLAC__METADATA_TYPE_PICTURE:
  ------------------
  |  Branch (196:3): [True: 0, False: 19.1k]
  ------------------
  197|      0|			{
  198|      0|				size_t len;
  199|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.picture.type, FLAC__STREAM_METADATA_PICTURE_TYPE_LEN))
  ------------------
  |  Branch (199:8): [True: 0, False: 0]
  ------------------
  200|      0|					return false;
  201|      0|				len = strlen(metadata->data.picture.mime_type);
  202|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, len, FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN))
  ------------------
  |  Branch (202:8): [True: 0, False: 0]
  ------------------
  203|      0|					return false;
  204|      0|				if(!FLAC__bitwriter_write_byte_block(bw, (const FLAC__byte*)metadata->data.picture.mime_type, len))
  ------------------
  |  Branch (204:8): [True: 0, False: 0]
  ------------------
  205|      0|					return false;
  206|      0|				len = strlen((const char *)metadata->data.picture.description);
  207|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, len, FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN))
  ------------------
  |  Branch (207:8): [True: 0, False: 0]
  ------------------
  208|      0|					return false;
  209|      0|				if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.picture.description, len))
  ------------------
  |  Branch (209:8): [True: 0, False: 0]
  ------------------
  210|      0|					return false;
  211|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.picture.width, FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN))
  ------------------
  |  Branch (211:8): [True: 0, False: 0]
  ------------------
  212|      0|					return false;
  213|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.picture.height, FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN))
  ------------------
  |  Branch (213:8): [True: 0, False: 0]
  ------------------
  214|      0|					return false;
  215|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.picture.depth, FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN))
  ------------------
  |  Branch (215:8): [True: 0, False: 0]
  ------------------
  216|      0|					return false;
  217|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.picture.colors, FLAC__STREAM_METADATA_PICTURE_COLORS_LEN))
  ------------------
  |  Branch (217:8): [True: 0, False: 0]
  ------------------
  218|      0|					return false;
  219|      0|				if(!FLAC__bitwriter_write_raw_uint32(bw, metadata->data.picture.data_length, FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN))
  ------------------
  |  Branch (219:8): [True: 0, False: 0]
  ------------------
  220|      0|					return false;
  221|      0|				if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.picture.data, metadata->data.picture.data_length))
  ------------------
  |  Branch (221:8): [True: 0, False: 0]
  ------------------
  222|      0|					return false;
  223|      0|			}
  224|      0|			break;
  225|      0|		default:
  ------------------
  |  Branch (225:3): [True: 0, False: 19.1k]
  ------------------
  226|      0|			if(!FLAC__bitwriter_write_byte_block(bw, metadata->data.unknown.data, metadata->length))
  ------------------
  |  Branch (226:7): [True: 0, False: 0]
  ------------------
  227|      0|				return false;
  228|      0|			break;
  229|  19.1k|	}
  230|       |
  231|       |	/* Now check whether metadata block length was correct */
  232|  19.1k|	{
  233|  19.1k|		uint32_t length_in_bits = FLAC__bitwriter_get_input_bits_unconsumed(bw);
  234|  19.1k|		if(length_in_bits < start_bits)
  ------------------
  |  Branch (234:6): [True: 0, False: 19.1k]
  ------------------
  235|      0|			return false;
  236|  19.1k|		length_in_bits -= start_bits;
  237|  19.1k|		if(length_in_bits % 8 != 0 || length_in_bits != (metadata_length*8+32))
  ------------------
  |  Branch (237:6): [True: 0, False: 19.1k]
  |  Branch (237:33): [True: 0, False: 19.1k]
  ------------------
  238|      0|			return false;
  239|  19.1k|	}
  240|       |
  241|  19.1k|	FLAC__ASSERT(FLAC__bitwriter_is_byte_aligned(bw));
  ------------------
  |  |   38|  19.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 19.1k]
  |  |  ------------------
  ------------------
  242|       |	return true;
  243|  19.1k|}
FLAC__frame_add_header:
  246|   247k|{
  247|   247k|	uint32_t u, blocksize_hint, sample_rate_hint;
  248|   247k|	FLAC__byte crc;
  249|       |
  250|   247k|	FLAC__ASSERT(FLAC__bitwriter_is_byte_aligned(bw));
  ------------------
  |  |   38|   247k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 247k]
  |  |  ------------------
  ------------------
  251|       |
  252|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, FLAC__FRAME_HEADER_SYNC, FLAC__FRAME_HEADER_SYNC_LEN))
  ------------------
  |  Branch (252:5): [True: 0, False: 247k]
  ------------------
  253|      0|		return false;
  254|       |
  255|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, 0, FLAC__FRAME_HEADER_RESERVED_LEN))
  ------------------
  |  Branch (255:5): [True: 0, False: 247k]
  ------------------
  256|      0|		return false;
  257|       |
  258|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, (header->number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER)? 0 : 1, FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN))
  ------------------
  |  Branch (258:5): [True: 0, False: 247k]
  |  Branch (258:43): [True: 247k, False: 23]
  ------------------
  259|      0|		return false;
  260|       |
  261|   247k|	FLAC__ASSERT(header->blocksize > 0 && header->blocksize <= FLAC__MAX_BLOCK_SIZE);
  ------------------
  |  |   38|   494k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 247k, False: 18.4E]
  |  |  |  Branch (38:30): [True: 247k, False: 18.4E]
  |  |  ------------------
  ------------------
  262|       |	/* when this assertion holds true, any legal blocksize can be expressed in the frame header */
  263|   247k|	FLAC__ASSERT(FLAC__MAX_BLOCK_SIZE <= 65535u);
  ------------------
  |  |   38|   247k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [Folded, False: 247k]
  |  |  ------------------
  ------------------
  264|   247k|	blocksize_hint = 0;
  265|   247k|	switch(header->blocksize) {
  266|    195|		case   192: u = 1; break;
  ------------------
  |  Branch (266:3): [True: 195, False: 247k]
  ------------------
  267|    195|		case   576: u = 2; break;
  ------------------
  |  Branch (267:3): [True: 195, False: 247k]
  ------------------
  268|    139|		case  1152: u = 3; break;
  ------------------
  |  Branch (268:3): [True: 139, False: 247k]
  ------------------
  269|     68|		case  2304: u = 4; break;
  ------------------
  |  Branch (269:3): [True: 68, False: 247k]
  ------------------
  270|     50|		case  4608: u = 5; break;
  ------------------
  |  Branch (270:3): [True: 50, False: 247k]
  ------------------
  271|    308|		case   256: u = 8; break;
  ------------------
  |  Branch (271:3): [True: 308, False: 246k]
  ------------------
  272|    248|		case   512: u = 9; break;
  ------------------
  |  Branch (272:3): [True: 248, False: 247k]
  ------------------
  273|    132|		case  1024: u = 10; break;
  ------------------
  |  Branch (273:3): [True: 132, False: 247k]
  ------------------
  274|     99|		case  2048: u = 11; break;
  ------------------
  |  Branch (274:3): [True: 99, False: 247k]
  ------------------
  275|    168|		case  4096: u = 12; break;
  ------------------
  |  Branch (275:3): [True: 168, False: 247k]
  ------------------
  276|     27|		case  8192: u = 13; break;
  ------------------
  |  Branch (276:3): [True: 27, False: 247k]
  ------------------
  277|     29|		case 16384: u = 14; break;
  ------------------
  |  Branch (277:3): [True: 29, False: 247k]
  ------------------
  278|     22|		case 32768: u = 15; break;
  ------------------
  |  Branch (278:3): [True: 22, False: 247k]
  ------------------
  279|   245k|		default:
  ------------------
  |  Branch (279:3): [True: 245k, False: 1.68k]
  ------------------
  280|   245k|			if(header->blocksize <= 0x100)
  ------------------
  |  Branch (280:7): [True: 243k, False: 1.91k]
  ------------------
  281|   243k|				blocksize_hint = u = 6;
  282|  1.91k|			else
  283|  1.91k|				blocksize_hint = u = 7;
  284|   245k|			break;
  285|   247k|	}
  286|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, u, FLAC__FRAME_HEADER_BLOCK_SIZE_LEN))
  ------------------
  |  Branch (286:5): [True: 0, False: 247k]
  ------------------
  287|      0|		return false;
  288|       |
  289|   247k|	FLAC__ASSERT(FLAC__format_sample_rate_is_valid(header->sample_rate));
  ------------------
  |  |   38|   247k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 247k]
  |  |  ------------------
  ------------------
  290|   247k|	sample_rate_hint = 0;
  291|   247k|	switch(header->sample_rate) {
  292|    426|		case  88200: u = 1; break;
  ------------------
  |  Branch (292:3): [True: 426, False: 246k]
  ------------------
  293|    477|		case 176400: u = 2; break;
  ------------------
  |  Branch (293:3): [True: 477, False: 246k]
  ------------------
  294|  1.43k|		case 192000: u = 3; break;
  ------------------
  |  Branch (294:3): [True: 1.43k, False: 245k]
  ------------------
  295|  1.36k|		case   8000: u = 4; break;
  ------------------
  |  Branch (295:3): [True: 1.36k, False: 245k]
  ------------------
  296|    219|		case  16000: u = 5; break;
  ------------------
  |  Branch (296:3): [True: 219, False: 247k]
  ------------------
  297|  2.31k|		case  22050: u = 6; break;
  ------------------
  |  Branch (297:3): [True: 2.31k, False: 244k]
  ------------------
  298|    354|		case  24000: u = 7; break;
  ------------------
  |  Branch (298:3): [True: 354, False: 246k]
  ------------------
  299|    817|		case  32000: u = 8; break;
  ------------------
  |  Branch (299:3): [True: 817, False: 246k]
  ------------------
  300|  49.0k|		case  44100: u = 9; break;
  ------------------
  |  Branch (300:3): [True: 49.0k, False: 198k]
  ------------------
  301|    299|		case  48000: u = 10; break;
  ------------------
  |  Branch (301:3): [True: 299, False: 246k]
  ------------------
  302|  3.22k|		case  96000: u = 11; break;
  ------------------
  |  Branch (302:3): [True: 3.22k, False: 244k]
  ------------------
  303|   187k|		default:
  ------------------
  |  Branch (303:3): [True: 187k, False: 59.9k]
  ------------------
  304|   187k|			if(header->sample_rate <= 255000 && header->sample_rate % 1000 == 0)
  ------------------
  |  Branch (304:7): [True: 172k, False: 14.9k]
  |  Branch (304:40): [True: 40.0k, False: 132k]
  ------------------
  305|  40.0k|				sample_rate_hint = u = 12;
  306|   147k|			else if(header->sample_rate <= 655350 && header->sample_rate % 10 == 0)
  ------------------
  |  Branch (306:12): [True: 142k, False: 4.73k]
  |  Branch (306:45): [True: 45.6k, False: 96.8k]
  ------------------
  307|  45.6k|				sample_rate_hint = u = 14;
  308|   101k|			else if(header->sample_rate <= 0xffff)
  ------------------
  |  Branch (308:12): [True: 72.4k, False: 29.1k]
  ------------------
  309|  72.4k|				sample_rate_hint = u = 13;
  310|  29.1k|			else
  311|  29.1k|				u = 0;
  312|   187k|			break;
  313|   247k|	}
  314|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, u, FLAC__FRAME_HEADER_SAMPLE_RATE_LEN))
  ------------------
  |  Branch (314:5): [True: 0, False: 247k]
  ------------------
  315|      0|		return false;
  316|       |
  317|   247k|	FLAC__ASSERT(header->channels > 0 && header->channels <= (1u << FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN) && header->channels <= FLAC__MAX_CHANNELS);
  ------------------
  |  |   38|   988k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 247k, False: 13]
  |  |  |  Branch (38:30): [True: 247k, False: 38]
  |  |  |  Branch (38:30): [True: 247k, False: 18.4E]
  |  |  ------------------
  ------------------
  318|   247k|	switch(header->channel_assignment) {
  319|   212k|		case FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT:
  ------------------
  |  Branch (319:3): [True: 212k, False: 34.9k]
  ------------------
  320|   212k|			u = header->channels - 1;
  321|   212k|			break;
  322|  16.6k|		case FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE:
  ------------------
  |  Branch (322:3): [True: 16.6k, False: 230k]
  ------------------
  323|  16.6k|			FLAC__ASSERT(header->channels == 2);
  ------------------
  |  |   38|  16.6k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 16.6k]
  |  |  ------------------
  ------------------
  324|  16.6k|			u = 8;
  325|  16.6k|			break;
  326|  7.16k|		case FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE:
  ------------------
  |  Branch (326:3): [True: 7.16k, False: 240k]
  ------------------
  327|  7.16k|			FLAC__ASSERT(header->channels == 2);
  ------------------
  |  |   38|  7.16k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 7.16k]
  |  |  ------------------
  ------------------
  328|  7.16k|			u = 9;
  329|  7.16k|			break;
  330|  11.1k|		case FLAC__CHANNEL_ASSIGNMENT_MID_SIDE:
  ------------------
  |  Branch (330:3): [True: 11.1k, False: 236k]
  ------------------
  331|  11.1k|			FLAC__ASSERT(header->channels == 2);
  ------------------
  |  |   38|  11.1k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 11.1k]
  |  |  ------------------
  ------------------
  332|  11.1k|			u = 10;
  333|  11.1k|			break;
  334|      0|		default:
  ------------------
  |  Branch (334:3): [True: 0, False: 247k]
  ------------------
  335|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  336|   247k|	}
  337|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, u, FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN))
  ------------------
  |  Branch (337:5): [True: 0, False: 247k]
  ------------------
  338|      0|		return false;
  339|       |
  340|   247k|	FLAC__ASSERT(header->bits_per_sample > 0 && header->bits_per_sample <= (1u << FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN));
  ------------------
  |  |   38|   494k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:30): [True: 247k, False: 18.4E]
  |  |  |  Branch (38:30): [True: 247k, False: 98]
  |  |  ------------------
  ------------------
  341|   247k|	switch(header->bits_per_sample) {
  342|  3.19k|		case 8 : u = 1; break;
  ------------------
  |  Branch (342:3): [True: 3.19k, False: 244k]
  ------------------
  343|    254|		case 12: u = 2; break;
  ------------------
  |  Branch (343:3): [True: 254, False: 246k]
  ------------------
  344|  7.08k|		case 16: u = 4; break;
  ------------------
  |  Branch (344:3): [True: 7.08k, False: 240k]
  ------------------
  345|    470|		case 20: u = 5; break;
  ------------------
  |  Branch (345:3): [True: 470, False: 246k]
  ------------------
  346|  11.5k|		case 24: u = 6; break;
  ------------------
  |  Branch (346:3): [True: 11.5k, False: 235k]
  ------------------
  347|   219k|		case 32: u = 7; break;
  ------------------
  |  Branch (347:3): [True: 219k, False: 27.3k]
  ------------------
  348|  4.81k|		default: u = 0; break;
  ------------------
  |  Branch (348:3): [True: 4.81k, False: 242k]
  ------------------
  349|   247k|	}
  350|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, u, FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN))
  ------------------
  |  Branch (350:5): [True: 0, False: 247k]
  ------------------
  351|      0|		return false;
  352|       |
  353|   247k|	if(!FLAC__bitwriter_write_raw_uint32(bw, 0, FLAC__FRAME_HEADER_ZERO_PAD_LEN))
  ------------------
  |  Branch (353:5): [True: 0, False: 247k]
  ------------------
  354|      0|		return false;
  355|       |
  356|   247k|	if(header->number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER) {
  ------------------
  |  Branch (356:5): [True: 247k, False: 12]
  ------------------
  357|   247k|		if(!FLAC__bitwriter_write_utf8_uint32(bw, header->number.frame_number))
  ------------------
  |  Branch (357:6): [True: 0, False: 247k]
  ------------------
  358|      0|			return false;
  359|   247k|	}
  360|     12|	else {
  361|     12|		if(!FLAC__bitwriter_write_utf8_uint64(bw, header->number.sample_number))
  ------------------
  |  Branch (361:6): [True: 0, False: 12]
  ------------------
  362|      0|			return false;
  363|     12|	}
  364|       |
  365|   247k|	if(blocksize_hint)
  ------------------
  |  Branch (365:5): [True: 245k, False: 1.61k]
  ------------------
  366|   245k|		if(!FLAC__bitwriter_write_raw_uint32(bw, header->blocksize-1, (blocksize_hint==6)? 8:16))
  ------------------
  |  Branch (366:6): [True: 0, False: 245k]
  |  Branch (366:65): [True: 243k, False: 1.85k]
  ------------------
  367|      0|			return false;
  368|       |
  369|   247k|	switch(sample_rate_hint) {
  ------------------
  |  Branch (369:9): [True: 158k, False: 89.0k]
  ------------------
  370|  40.0k|		case 12:
  ------------------
  |  Branch (370:3): [True: 40.0k, False: 207k]
  ------------------
  371|  40.0k|			if(!FLAC__bitwriter_write_raw_uint32(bw, header->sample_rate / 1000, 8))
  ------------------
  |  Branch (371:7): [True: 0, False: 40.0k]
  ------------------
  372|      0|				return false;
  373|  40.0k|			break;
  374|  72.4k|		case 13:
  ------------------
  |  Branch (374:3): [True: 72.4k, False: 174k]
  ------------------
  375|  72.4k|			if(!FLAC__bitwriter_write_raw_uint32(bw, header->sample_rate, 16))
  ------------------
  |  Branch (375:7): [True: 0, False: 72.4k]
  ------------------
  376|      0|				return false;
  377|  72.4k|			break;
  378|  72.4k|		case 14:
  ------------------
  |  Branch (378:3): [True: 45.6k, False: 201k]
  ------------------
  379|  45.6k|			if(!FLAC__bitwriter_write_raw_uint32(bw, header->sample_rate / 10, 16))
  ------------------
  |  Branch (379:7): [True: 0, False: 45.6k]
  ------------------
  380|      0|				return false;
  381|  45.6k|			break;
  382|   247k|	}
  383|       |
  384|       |	/* write the CRC */
  385|   246k|	if(!FLAC__bitwriter_get_write_crc8(bw, &crc))
  ------------------
  |  Branch (385:5): [True: 0, False: 246k]
  ------------------
  386|      0|		return false;
  387|   246k|	if(!FLAC__bitwriter_write_raw_uint32(bw, crc, FLAC__FRAME_HEADER_CRC_LEN))
  ------------------
  |  Branch (387:5): [True: 0, False: 246k]
  ------------------
  388|      0|		return false;
  389|       |
  390|   246k|	return true;
  391|   246k|}
FLAC__subframe_add_constant:
  394|   112k|{
  395|   112k|	FLAC__bool ok;
  396|       |
  397|   112k|	ok =
  398|   112k|		FLAC__bitwriter_write_raw_uint32(bw, FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK | (wasted_bits? 1:0), FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN) &&
  ------------------
  |  Branch (398:3): [True: 112k, False: 18.4E]
  |  Branch (398:90): [True: 1.20k, False: 111k]
  ------------------
  399|   112k|		(wasted_bits? FLAC__bitwriter_write_unary_unsigned(bw, wasted_bits-1) : true) &&
  ------------------
  |  Branch (399:3): [True: 112k, False: 18.4E]
  |  Branch (399:4): [True: 1.20k, False: 111k]
  ------------------
  400|   112k|		FLAC__bitwriter_write_raw_int64(bw, subframe->value, subframe_bps)
  ------------------
  |  Branch (400:3): [True: 112k, False: 18.4E]
  ------------------
  401|   112k|	;
  402|       |
  403|   112k|	return ok;
  404|   112k|}
FLAC__subframe_add_fixed:
  407|   146k|{
  408|   146k|	uint32_t i;
  409|       |
  410|   146k|	if(!FLAC__bitwriter_write_raw_uint32(bw, FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK | (subframe->order<<1) | (wasted_bits? 1:0), FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN))
  ------------------
  |  Branch (410:5): [True: 0, False: 146k]
  |  Branch (410:113): [True: 22.2k, False: 124k]
  ------------------
  411|      0|		return false;
  412|   146k|	if(wasted_bits)
  ------------------
  |  Branch (412:5): [True: 22.2k, False: 124k]
  ------------------
  413|  22.2k|		if(!FLAC__bitwriter_write_unary_unsigned(bw, wasted_bits-1))
  ------------------
  |  Branch (413:6): [True: 0, False: 22.2k]
  ------------------
  414|      0|			return false;
  415|       |
  416|   253k|	for(i = 0; i < subframe->order; i++)
  ------------------
  |  Branch (416:13): [True: 107k, False: 146k]
  ------------------
  417|   107k|		if(!FLAC__bitwriter_write_raw_int64(bw, subframe->warmup[i], subframe_bps))
  ------------------
  |  Branch (417:6): [True: 0, False: 107k]
  ------------------
  418|      0|			return false;
  419|       |
  420|   146k|	if(!add_entropy_coding_method_(bw, &subframe->entropy_coding_method))
  ------------------
  |  Branch (420:5): [True: 0, False: 146k]
  ------------------
  421|      0|		return false;
  422|   146k|	switch(subframe->entropy_coding_method.type) {
  423|  66.9k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE:
  ------------------
  |  Branch (423:3): [True: 66.9k, False: 79.4k]
  ------------------
  424|   146k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2:
  ------------------
  |  Branch (424:3): [True: 79.5k, False: 66.7k]
  ------------------
  425|   146k|			if(!add_residual_partitioned_rice_(
  ------------------
  |  Branch (425:7): [True: 0, False: 146k]
  ------------------
  426|   146k|				bw,
  427|   146k|				subframe->residual,
  428|   146k|				residual_samples,
  429|   146k|				subframe->order,
  430|   146k|				subframe->entropy_coding_method.data.partitioned_rice.contents->parameters,
  431|   146k|				subframe->entropy_coding_method.data.partitioned_rice.contents->raw_bits,
  432|   146k|				subframe->entropy_coding_method.data.partitioned_rice.order,
  433|   146k|				/*is_extended=*/subframe->entropy_coding_method.type == FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2
  434|   146k|			))
  435|      0|				return false;
  436|   146k|			break;
  437|   146k|		default:
  ------------------
  |  Branch (437:3): [True: 0, False: 146k]
  ------------------
  438|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  439|   146k|	}
  440|       |
  441|   146k|	return true;
  442|   146k|}
FLAC__subframe_add_lpc:
  445|  18.6k|{
  446|  18.6k|	uint32_t i;
  447|       |
  448|  18.6k|	if(!FLAC__bitwriter_write_raw_uint32(bw, FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK | ((subframe->order-1)<<1) | (wasted_bits? 1:0), FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN))
  ------------------
  |  Branch (448:5): [True: 0, False: 18.6k]
  |  Branch (448:115): [True: 5.18k, False: 13.5k]
  ------------------
  449|      0|		return false;
  450|  18.6k|	if(wasted_bits)
  ------------------
  |  Branch (450:5): [True: 5.18k, False: 13.5k]
  ------------------
  451|  5.18k|		if(!FLAC__bitwriter_write_unary_unsigned(bw, wasted_bits-1))
  ------------------
  |  Branch (451:6): [True: 0, False: 5.18k]
  ------------------
  452|      0|			return false;
  453|       |
  454|   123k|	for(i = 0; i < subframe->order; i++)
  ------------------
  |  Branch (454:13): [True: 104k, False: 18.6k]
  ------------------
  455|   104k|		if(!FLAC__bitwriter_write_raw_int64(bw, subframe->warmup[i], subframe_bps))
  ------------------
  |  Branch (455:6): [True: 0, False: 104k]
  ------------------
  456|      0|			return false;
  457|       |
  458|  18.6k|	if(!FLAC__bitwriter_write_raw_uint32(bw, subframe->qlp_coeff_precision-1, FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN))
  ------------------
  |  Branch (458:5): [True: 0, False: 18.6k]
  ------------------
  459|      0|		return false;
  460|  18.6k|	if(!FLAC__bitwriter_write_raw_int32(bw, subframe->quantization_level, FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN))
  ------------------
  |  Branch (460:5): [True: 0, False: 18.6k]
  ------------------
  461|      0|		return false;
  462|   123k|	for(i = 0; i < subframe->order; i++)
  ------------------
  |  Branch (462:13): [True: 104k, False: 18.6k]
  ------------------
  463|   104k|		if(!FLAC__bitwriter_write_raw_int32(bw, subframe->qlp_coeff[i], subframe->qlp_coeff_precision))
  ------------------
  |  Branch (463:6): [True: 0, False: 104k]
  ------------------
  464|      0|			return false;
  465|       |
  466|  18.6k|	if(!add_entropy_coding_method_(bw, &subframe->entropy_coding_method))
  ------------------
  |  Branch (466:5): [True: 0, False: 18.6k]
  ------------------
  467|      0|		return false;
  468|  18.6k|	switch(subframe->entropy_coding_method.type) {
  469|  13.1k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE:
  ------------------
  |  Branch (469:3): [True: 13.1k, False: 5.56k]
  ------------------
  470|  18.6k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2:
  ------------------
  |  Branch (470:3): [True: 5.56k, False: 13.1k]
  ------------------
  471|  18.6k|			if(!add_residual_partitioned_rice_(
  ------------------
  |  Branch (471:7): [True: 0, False: 18.6k]
  ------------------
  472|  18.6k|				bw,
  473|  18.6k|				subframe->residual,
  474|  18.6k|				residual_samples,
  475|  18.6k|				subframe->order,
  476|  18.6k|				subframe->entropy_coding_method.data.partitioned_rice.contents->parameters,
  477|  18.6k|				subframe->entropy_coding_method.data.partitioned_rice.contents->raw_bits,
  478|  18.6k|				subframe->entropy_coding_method.data.partitioned_rice.order,
  479|  18.6k|				/*is_extended=*/subframe->entropy_coding_method.type == FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2
  480|  18.6k|			))
  481|      0|				return false;
  482|  18.6k|			break;
  483|  18.6k|		default:
  ------------------
  |  Branch (483:3): [True: 0, False: 18.6k]
  ------------------
  484|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  485|  18.6k|	}
  486|       |
  487|  18.6k|	return true;
  488|  18.6k|}
FLAC__subframe_add_verbatim:
  491|  39.0k|{
  492|  39.0k|	uint32_t i;
  493|       |
  494|  39.0k|	if(!FLAC__bitwriter_write_raw_uint32(bw, FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK | (wasted_bits? 1:0), FLAC__SUBFRAME_ZERO_PAD_LEN + FLAC__SUBFRAME_TYPE_LEN + FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN))
  ------------------
  |  Branch (494:5): [True: 0, False: 39.0k]
  |  Branch (494:93): [True: 1.94k, False: 37.0k]
  ------------------
  495|      0|		return false;
  496|  39.0k|	if(wasted_bits)
  ------------------
  |  Branch (496:5): [True: 1.94k, False: 37.0k]
  ------------------
  497|  1.94k|		if(!FLAC__bitwriter_write_unary_unsigned(bw, wasted_bits-1))
  ------------------
  |  Branch (497:6): [True: 0, False: 1.94k]
  ------------------
  498|      0|			return false;
  499|       |
  500|  39.0k|	if(subframe->data_type == FLAC__VERBATIM_SUBFRAME_DATA_TYPE_INT32) {
  ------------------
  |  Branch (500:5): [True: 38.3k, False: 603]
  ------------------
  501|  38.3k|		const FLAC__int32 *signal = subframe->data.int32;
  502|       |
  503|  38.3k|		FLAC__ASSERT(subframe_bps < 33);
  ------------------
  |  |   38|  38.3k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 38.3k]
  |  |  ------------------
  ------------------
  504|       |
  505|  2.93M|		for(i = 0; i < samples; i++)
  ------------------
  |  Branch (505:14): [True: 2.89M, False: 38.3k]
  ------------------
  506|  2.89M|			if(!FLAC__bitwriter_write_raw_int32(bw, signal[i], subframe_bps))
  ------------------
  |  Branch (506:7): [True: 0, False: 2.89M]
  ------------------
  507|      0|				return false;
  508|  38.3k|	}
  509|    603|	else {
  510|    603|		const FLAC__int64 *signal = subframe->data.int64;
  511|       |
  512|    603|		FLAC__ASSERT(subframe_bps == 33);
  ------------------
  |  |   38|    603|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 603]
  |  |  ------------------
  ------------------
  513|       |
  514|  1.47M|		for(i = 0; i < samples; i++)
  ------------------
  |  Branch (514:14): [True: 1.47M, False: 603]
  ------------------
  515|  1.47M|			if(!FLAC__bitwriter_write_raw_int64(bw, (FLAC__int64)signal[i], subframe_bps))
  ------------------
  |  Branch (515:7): [True: 0, False: 1.47M]
  ------------------
  516|      0|				return false;
  517|    603|	}
  518|       |
  519|  39.0k|	return true;
  520|  39.0k|}
stream_encoder_framing.c:add_entropy_coding_method_:
  523|   165k|{
  524|   165k|	if(!FLAC__bitwriter_write_raw_uint32(bw, method->type, FLAC__ENTROPY_CODING_METHOD_TYPE_LEN))
  ------------------
  |  Branch (524:5): [True: 0, False: 165k]
  ------------------
  525|      0|		return false;
  526|   165k|	switch(method->type) {
  527|  80.0k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE:
  ------------------
  |  Branch (527:3): [True: 80.0k, False: 85.1k]
  ------------------
  528|   165k|		case FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2:
  ------------------
  |  Branch (528:3): [True: 85.1k, False: 80.0k]
  ------------------
  529|   165k|			if(!FLAC__bitwriter_write_raw_uint32(bw, method->data.partitioned_rice.order, FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN))
  ------------------
  |  Branch (529:7): [True: 0, False: 165k]
  ------------------
  530|      0|				return false;
  531|   165k|			break;
  532|   165k|		default:
  ------------------
  |  Branch (532:3): [True: 0, False: 165k]
  ------------------
  533|      0|			FLAC__ASSERT(0);
  ------------------
  |  |   38|      0|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, Folded]
  |  |  ------------------
  ------------------
  534|   165k|	}
  535|   165k|	return true;
  536|   165k|}
stream_encoder_framing.c:add_residual_partitioned_rice_:
  539|   165k|{
  540|   165k|	const uint32_t plen = is_extended? FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN : FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN;
  ------------------
  |  Branch (540:24): [True: 85.1k, False: 79.9k]
  ------------------
  541|   165k|	const uint32_t pesc = is_extended? FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER : FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER;
  ------------------
  |  Branch (541:24): [True: 85.1k, False: 79.9k]
  ------------------
  542|       |
  543|   165k|	if(partition_order == 0) {
  ------------------
  |  Branch (543:5): [True: 113k, False: 51.5k]
  ------------------
  544|   113k|		uint32_t i;
  545|       |
  546|   113k|		if(raw_bits[0] == 0) {
  ------------------
  |  Branch (546:6): [True: 104k, False: 8.67k]
  ------------------
  547|   104k|			if(!FLAC__bitwriter_write_raw_uint32(bw, rice_parameters[0], plen))
  ------------------
  |  Branch (547:7): [True: 0, False: 104k]
  ------------------
  548|      0|				return false;
  549|   104k|			if(!FLAC__bitwriter_write_rice_signed_block(bw, residual, residual_samples, rice_parameters[0]))
  ------------------
  |  Branch (549:7): [True: 0, False: 104k]
  ------------------
  550|      0|				return false;
  551|   104k|		}
  552|  8.67k|		else {
  553|  8.67k|			FLAC__ASSERT(rice_parameters[0] == 0);
  ------------------
  |  |   38|  8.67k|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 8.67k]
  |  |  ------------------
  ------------------
  554|  8.67k|			if(!FLAC__bitwriter_write_raw_uint32(bw, pesc, plen))
  ------------------
  |  Branch (554:7): [True: 0, False: 8.67k]
  ------------------
  555|      0|				return false;
  556|  8.67k|			if(!FLAC__bitwriter_write_raw_uint32(bw, raw_bits[0], FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN))
  ------------------
  |  Branch (556:7): [True: 0, False: 8.67k]
  ------------------
  557|      0|				return false;
  558|   175k|			for(i = 0; i < residual_samples; i++) {
  ------------------
  |  Branch (558:15): [True: 166k, False: 8.67k]
  ------------------
  559|   166k|				if(!FLAC__bitwriter_write_raw_int32(bw, residual[i], raw_bits[0]))
  ------------------
  |  Branch (559:8): [True: 0, False: 166k]
  ------------------
  560|      0|					return false;
  561|   166k|			}
  562|  8.67k|		}
  563|   113k|		return true;
  564|   113k|	}
  565|  51.5k|	else {
  566|  51.5k|		uint32_t i, j, k = 0, k_last = 0;
  567|  51.5k|		uint32_t partition_samples;
  568|  51.5k|		const uint32_t default_partition_samples = (residual_samples+predictor_order) >> partition_order;
  569|  1.31M|		for(i = 0; i < (1u<<partition_order); i++) {
  ------------------
  |  Branch (569:14): [True: 1.26M, False: 51.5k]
  ------------------
  570|  1.26M|			partition_samples = default_partition_samples;
  571|  1.26M|			if(i == 0)
  ------------------
  |  Branch (571:7): [True: 51.5k, False: 1.21M]
  ------------------
  572|  51.5k|				partition_samples -= predictor_order;
  573|  1.26M|			k += partition_samples;
  574|  1.26M|			if(raw_bits[i] == 0) {
  ------------------
  |  Branch (574:7): [True: 1.24M, False: 16.7k]
  ------------------
  575|  1.24M|				if(!FLAC__bitwriter_write_raw_uint32(bw, rice_parameters[i], plen))
  ------------------
  |  Branch (575:8): [True: 0, False: 1.24M]
  ------------------
  576|      0|					return false;
  577|  1.24M|				if(!FLAC__bitwriter_write_rice_signed_block(bw, residual+k_last, k-k_last, rice_parameters[i]))
  ------------------
  |  Branch (577:8): [True: 0, False: 1.24M]
  ------------------
  578|      0|					return false;
  579|  1.24M|			}
  580|  16.7k|			else {
  581|  16.7k|				if(!FLAC__bitwriter_write_raw_uint32(bw, pesc, plen))
  ------------------
  |  Branch (581:8): [True: 0, False: 16.7k]
  ------------------
  582|      0|					return false;
  583|  16.7k|				if(!FLAC__bitwriter_write_raw_uint32(bw, raw_bits[i], FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN))
  ------------------
  |  Branch (583:8): [True: 0, False: 16.7k]
  ------------------
  584|      0|					return false;
  585|   558k|				for(j = k_last; j < k; j++) {
  ------------------
  |  Branch (585:21): [True: 542k, False: 16.7k]
  ------------------
  586|   542k|					if(!FLAC__bitwriter_write_raw_int32(bw, residual[j], raw_bits[i]))
  ------------------
  |  Branch (586:9): [True: 0, False: 542k]
  ------------------
  587|      0|						return false;
  588|   542k|				}
  589|  16.7k|			}
  590|  1.26M|			k_last = k;
  591|  1.26M|		}
  592|  51.5k|		return true;
  593|  51.5k|	}
  594|   165k|}

FLAC__precompute_partition_info_sums_intrin_avx2:
   52|  18.2M|{
   53|  18.2M|	const uint32_t default_partition_samples = (residual_samples + predictor_order) >> max_partition_order;
   54|  18.2M|	uint32_t partitions = 1u << max_partition_order;
   55|       |
   56|  18.2M|	FLAC__ASSERT(default_partition_samples > predictor_order);
  ------------------
  |  |   38|  18.2M|#define FLAC__ASSERT(x) if(!(x)) __builtin_abort();
  |  |  ------------------
  |  |  |  Branch (38:28): [True: 0, False: 18.2M]
  |  |  ------------------
  ------------------
   57|       |
   58|       |	/* first do max_partition_order */
   59|  18.2M|	{
   60|  18.2M|		const uint32_t threshold = 32 - FLAC__bitmath_ilog2(default_partition_samples);
   61|  18.2M|		uint32_t partition, residual_sample, end = (uint32_t)(-(int32_t)predictor_order);
   62|       |
   63|  18.2M|		if(bps + FLAC__MAX_EXTRA_RESIDUAL_BPS < threshold) {
  ------------------
  |  |   44|  18.2M|#define FLAC__MAX_EXTRA_RESIDUAL_BPS 4
  ------------------
  |  Branch (63:6): [True: 2.81M, False: 15.4M]
  ------------------
   64|  11.2M|			for(partition = residual_sample = 0; partition < partitions; partition++) {
  ------------------
  |  Branch (64:41): [True: 8.46M, False: 2.81M]
  ------------------
   65|  8.46M|				__m256i sum256 = _mm256_setzero_si256();
   66|  8.46M|				__m128i sum128;
   67|  8.46M|				end += default_partition_samples;
   68|       |
   69|  62.4M|				for( ; (int)residual_sample < (int)end-7; residual_sample+=8) {
  ------------------
  |  Branch (69:12): [True: 53.9M, False: 8.46M]
  ------------------
   70|  53.9M|					__m256i res256 = _mm256_abs_epi32(_mm256_loadu_si256((const __m256i*)(const void*)(residual+residual_sample)));
   71|  53.9M|					sum256 = _mm256_add_epi32(sum256, res256);
   72|  53.9M|				}
   73|       |
   74|  8.46M|				sum128 = _mm_add_epi32(_mm256_extracti128_si256(sum256, 1), _mm256_castsi256_si128(sum256));
   75|       |
   76|  11.5M|				for( ; (int)residual_sample < (int)end-3; residual_sample+=4) {
  ------------------
  |  Branch (76:12): [True: 3.05M, False: 8.46M]
  ------------------
   77|  3.05M|					__m128i res128 = _mm_abs_epi32(_mm_loadu_si128((const __m128i*)(const void*)(residual+residual_sample)));
   78|  3.05M|					sum128 = _mm_add_epi32(sum128, res128);
   79|  3.05M|				}
   80|       |
   81|  17.8M|				for( ; residual_sample < end; residual_sample++) {
  ------------------
  |  Branch (81:12): [True: 9.33M, False: 8.46M]
  ------------------
   82|  9.33M|					__m128i res128 = _mm_abs_epi32(_mm_cvtsi32_si128(residual[residual_sample]));
   83|  9.33M|					sum128 = _mm_add_epi32(sum128, res128);
   84|  9.33M|				}
   85|       |
   86|  8.46M|				sum128 = _mm_add_epi32(sum128, _mm_shuffle_epi32(sum128, _MM_SHUFFLE(1,0,3,2)));
   87|  8.46M|				sum128 = _mm_add_epi32(sum128, _mm_shufflelo_epi16(sum128, _MM_SHUFFLE(1,0,3,2)));
   88|  8.46M|				abs_residual_partition_sums[partition] = (FLAC__uint32)_mm_cvtsi128_si32(sum128);
   89|       |/* workaround for MSVC bugs (at least versions 2015 and 2017 are affected) */
   90|       |#if (defined _MSC_VER) && (defined FLAC__CPU_X86_64)
   91|       |				abs_residual_partition_sums[partition] &= 0xFFFFFFFF; /**/
   92|       |#endif
   93|  8.46M|			}
   94|  2.81M|		}
   95|  15.4M|		else { /* have to pessimistically use 64 bits for accumulator */
   96|  48.6M|			for(partition = residual_sample = 0; partition < partitions; partition++) {
  ------------------
  |  Branch (96:41): [True: 33.2M, False: 15.4M]
  ------------------
   97|  33.2M|				__m256i sum256 = _mm256_setzero_si256();
   98|  33.2M|				__m128i sum128;
   99|  33.2M|				end += default_partition_samples;
  100|       |
  101|   441M|				for( ; (int)residual_sample < (int)end-3; residual_sample+=4) {
  ------------------
  |  Branch (101:12): [True: 408M, False: 33.2M]
  ------------------
  102|   408M|					__m128i res128 = _mm_abs_epi32(_mm_loadu_si128((const __m128i*)(const void*)(residual+residual_sample)));
  103|   408M|					__m256i res256 = _mm256_cvtepu32_epi64(res128);
  104|   408M|					sum256 = _mm256_add_epi64(sum256, res256);
  105|   408M|				}
  106|       |
  107|  33.2M|				sum128 = _mm_add_epi64(_mm256_extracti128_si256(sum256, 1), _mm256_castsi256_si128(sum256));
  108|       |
  109|  46.6M|				for( ; (int)residual_sample < (int)end-1; residual_sample+=2) {
  ------------------
  |  Branch (109:12): [True: 13.4M, False: 33.2M]
  ------------------
  110|  13.4M|					__m128i res128 = _mm_abs_epi32(_mm_loadl_epi64((const __m128i*)(const void*)(residual+residual_sample)));
  111|  13.4M|					res128 = _mm_cvtepu32_epi64(res128);
  112|  13.4M|					sum128 = _mm_add_epi64(sum128, res128);
  113|  13.4M|				}
  114|       |
  115|  46.8M|				for( ; residual_sample < end; residual_sample++) {
  ------------------
  |  Branch (115:12): [True: 13.6M, False: 33.2M]
  ------------------
  116|  13.6M|					__m128i res128 = _mm_abs_epi32(_mm_cvtsi32_si128(residual[residual_sample]));
  117|  13.6M|					sum128 = _mm_add_epi64(sum128, res128);
  118|  13.6M|				}
  119|       |
  120|  33.2M|				sum128 = _mm_add_epi64(sum128, _mm_srli_si128(sum128, 8));
  121|  33.2M|				_mm_storel_epi64((__m128i*)(void*)(abs_residual_partition_sums+partition), sum128);
  122|  33.2M|			}
  123|  15.4M|		}
  124|  18.2M|	}
  125|       |
  126|       |	/* now merge partitions for lower orders */
  127|  18.2M|	{
  128|  18.2M|		uint32_t from_partition = 0, to_partition = partitions;
  129|  18.2M|		int partition_order;
  130|  18.9M|		for(partition_order = (int)max_partition_order - 1; partition_order >= (int)min_partition_order; partition_order--) {
  ------------------
  |  Branch (130:55): [True: 649k, False: 18.2M]
  ------------------
  131|   649k|			uint32_t i;
  132|   649k|			partitions >>= 1;
  133|  3.28M|			for(i = 0; i < partitions; i++) {
  ------------------
  |  Branch (133:15): [True: 2.63M, False: 649k]
  ------------------
  134|  2.63M|				abs_residual_partition_sums[to_partition++] =
  135|  2.63M|					abs_residual_partition_sums[from_partition  ] +
  136|  2.63M|					abs_residual_partition_sums[from_partition+1];
  137|  2.63M|				from_partition += 2;
  138|  2.63M|			}
  139|   649k|		}
  140|  18.2M|	}
  141|  18.2M|	_mm256_zeroupper();
  142|  18.2M|}

FLAC__window_bartlett:
   51|    786|{
   52|    786|	const FLAC__int32 N = L - 1;
   53|    786|	FLAC__int32 n;
   54|       |
   55|    786|	if (L & 1) {
  ------------------
  |  Branch (55:6): [True: 400, False: 386]
  ------------------
   56|  2.63M|		for (n = 0; n <= N/2; n++)
  ------------------
  |  Branch (56:15): [True: 2.63M, False: 400]
  ------------------
   57|  2.63M|			window[n] = 2.0f * n / (float)N;
   58|  2.63M|		for (; n <= N; n++)
  ------------------
  |  Branch (58:10): [True: 2.62M, False: 400]
  ------------------
   59|  2.62M|			window[n] = 2.0f - 2.0f * n / (float)N;
   60|    400|	}
   61|    386|	else {
   62|  2.68M|		for (n = 0; n <= L/2-1; n++)
  ------------------
  |  Branch (62:15): [True: 2.68M, False: 386]
  ------------------
   63|  2.68M|			window[n] = 2.0f * n / (float)N;
   64|  2.68M|		for (; n <= N; n++)
  ------------------
  |  Branch (64:10): [True: 2.68M, False: 386]
  ------------------
   65|  2.68M|			window[n] = 2.0f - 2.0f * n / (float)N;
   66|    386|	}
   67|    786|}
FLAC__window_bartlett_hann:
   70|    104|{
   71|    104|	const FLAC__int32 N = L - 1;
   72|    104|	FLAC__int32 n;
   73|       |
   74|   755k|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (74:14): [True: 754k, False: 104]
  ------------------
   75|   754k|		window[n] = (FLAC__real)(0.62f - 0.48f * fabsf((float)n/(float)N-0.5f) - 0.38f * cosf(2.0f * M_PI * ((float)n/(float)N)));
   76|    104|}
FLAC__window_blackman:
   79|    119|{
   80|    119|	const FLAC__int32 N = L - 1;
   81|    119|	FLAC__int32 n;
   82|       |
   83|  1.22M|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (83:14): [True: 1.22M, False: 119]
  ------------------
   84|  1.22M|		window[n] = (FLAC__real)(0.42f - 0.5f * cosf(2.0f * M_PI * n / N) + 0.08f * cosf(4.0f * M_PI * n / N));
   85|    119|}
FLAC__window_blackman_harris_4term_92db_sidelobe:
   89|     89|{
   90|     89|	const FLAC__int32 N = L - 1;
   91|     89|	FLAC__int32 n;
   92|       |
   93|   999k|	for (n = 0; n <= N; n++)
  ------------------
  |  Branch (93:14): [True: 999k, False: 89]
  ------------------
   94|   999k|		window[n] = (FLAC__real)(0.35875f - 0.48829f * cosf(2.0f * M_PI * n / N) + 0.14128f * cosf(4.0f * M_PI * n / N) - 0.01168f * cosf(6.0f * M_PI * n / N));
   95|     89|}
FLAC__window_connes:
   98|    200|{
   99|    200|	const FLAC__int32 N = L - 1;
  100|    200|	const double N2 = (double)N / 2.;
  101|    200|	FLAC__int32 n;
  102|       |
  103|  5.35M|	for (n = 0; n <= N; n++) {
  ------------------
  |  Branch (103:14): [True: 5.35M, False: 200]
  ------------------
  104|  5.35M|		double k = ((double)n - N2) / N2;
  105|  5.35M|		k = 1.0f - k * k;
  106|  5.35M|		window[n] = (FLAC__real)(k * k);
  107|  5.35M|	}
  108|    200|}
FLAC__window_flattop:
  111|    117|{
  112|    117|	const FLAC__int32 N = L - 1;
  113|    117|	FLAC__int32 n;
  114|       |
  115|  1.90M|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (115:14): [True: 1.90M, False: 117]
  ------------------
  116|  1.90M|		window[n] = (FLAC__real)(0.21557895f - 0.41663158f * cosf(2.0f * M_PI * n / N) + 0.277263158f * cosf(4.0f * M_PI * n / N) - 0.083578947f * cosf(6.0f * M_PI * n / N) + 0.006947368f * cosf(8.0f * M_PI * n / N));
  117|    117|}
FLAC__window_gauss:
  120|    200|{
  121|    200|	const FLAC__int32 N = L - 1;
  122|    200|	const double N2 = (double)N / 2.;
  123|    200|	FLAC__int32 n;
  124|       |
  125|    200|	if(!(stddev > 0.0f && stddev <= 0.5f))
  ------------------
  |  Branch (125:7): [True: 200, False: 0]
  |  Branch (125:24): [True: 200, False: 0]
  ------------------
  126|       |		/* stddev is not between 0 and 0.5, might be NaN.
  127|       |		 * Default to 0.5 */
  128|      0|		FLAC__window_gauss(window, L, 0.25f);
  129|    200|	else {
  130|  2.31M|		for (n = 0; n <= N; n++) {
  ------------------
  |  Branch (130:15): [True: 2.31M, False: 200]
  ------------------
  131|  2.31M|			const double k = ((double)n - N2) / (stddev * N2);
  132|  2.31M|			window[n] = (FLAC__real)exp(-0.5f * k * k);
  133|  2.31M|		}
  134|    200|	}
  135|    200|}
FLAC__window_hamming:
  138|    284|{
  139|    284|	const FLAC__int32 N = L - 1;
  140|    284|	FLAC__int32 n;
  141|       |
  142|  2.96M|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (142:14): [True: 2.96M, False: 284]
  ------------------
  143|  2.96M|		window[n] = (FLAC__real)(0.54f - 0.46f * cosf(2.0f * M_PI * n / N));
  144|    284|}
FLAC__window_hann:
  147|    671|{
  148|    671|	const FLAC__int32 N = L - 1;
  149|    671|	FLAC__int32 n;
  150|       |
  151|  13.2M|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (151:14): [True: 13.2M, False: 671]
  ------------------
  152|  13.2M|		window[n] = (FLAC__real)(0.5f - 0.5f * cosf(2.0f * M_PI * n / N));
  153|    671|}
FLAC__window_kaiser_bessel:
  156|    104|{
  157|    104|	const FLAC__int32 N = L - 1;
  158|    104|	FLAC__int32 n;
  159|       |
  160|  2.70M|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (160:14): [True: 2.70M, False: 104]
  ------------------
  161|  2.70M|		window[n] = (FLAC__real)(0.402f - 0.498f * cosf(2.0f * M_PI * n / N) + 0.098f * cosf(4.0f * M_PI * n / N) - 0.001f * cosf(6.0f * M_PI * n / N));
  162|    104|}
FLAC__window_nuttall:
  165|    113|{
  166|    113|	const FLAC__int32 N = L - 1;
  167|    113|	FLAC__int32 n;
  168|       |
  169|  1.47M|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (169:14): [True: 1.47M, False: 113]
  ------------------
  170|  1.47M|		window[n] = (FLAC__real)(0.3635819f - 0.4891775f*cosf(2.0f*M_PI*n/N) + 0.1365995f*cosf(4.0f*M_PI*n/N) - 0.0106411f*cosf(6.0f*M_PI*n/N));
  171|    113|}
FLAC__window_rectangle:
  174|  16.1k|{
  175|  16.1k|	FLAC__int32 n;
  176|       |
  177|   216M|	for (n = 0; n < L; n++)
  ------------------
  |  Branch (177:14): [True: 216M, False: 16.1k]
  ------------------
  178|   216M|		window[n] = 1.0f;
  179|  16.1k|}
FLAC__window_triangle:
  182|    684|{
  183|    684|	FLAC__int32 n;
  184|       |
  185|    684|	if (L & 1) {
  ------------------
  |  Branch (185:6): [True: 337, False: 347]
  ------------------
  186|  2.05M|		for (n = 1; n <= (L+1)/2; n++)
  ------------------
  |  Branch (186:15): [True: 2.05M, False: 337]
  ------------------
  187|  2.05M|			window[n-1] = 2.0f * n / ((float)L + 1.0f);
  188|  2.05M|		for (; n <= L; n++)
  ------------------
  |  Branch (188:10): [True: 2.05M, False: 337]
  ------------------
  189|  2.05M|			window[n-1] = (float)(2 * (L - n + 1)) / ((float)L + 1.0f);
  190|    337|	}
  191|    347|	else {
  192|  2.91M|		for (n = 1; n <= L/2; n++)
  ------------------
  |  Branch (192:15): [True: 2.91M, False: 347]
  ------------------
  193|  2.91M|			window[n-1] = 2.0f * n / ((float)L + 1.0f);
  194|  2.91M|		for (; n <= L; n++)
  ------------------
  |  Branch (194:10): [True: 2.91M, False: 347]
  ------------------
  195|  2.91M|			window[n-1] = (float)(2 * (L - n + 1)) / ((float)L + 1.0f);
  196|    347|	}
  197|    684|}
FLAC__window_tukey:
  200|  16.3k|{
  201|  16.3k|	if (p <= 0.0)
  ------------------
  |  Branch (201:6): [True: 1.03k, False: 15.3k]
  ------------------
  202|  1.03k|		FLAC__window_rectangle(window, L);
  203|  15.3k|	else if (p >= 1.0)
  ------------------
  |  Branch (203:11): [True: 180, False: 15.1k]
  ------------------
  204|    180|		FLAC__window_hann(window, L);
  205|  15.1k|	else if (!(p > 0.0f && p < 1.0f))
  ------------------
  |  Branch (205:13): [True: 14.8k, False: 336]
  |  Branch (205:25): [True: 14.8k, False: 0]
  ------------------
  206|       |		/* p is not between 0 and 1, probably NaN.
  207|       |		 * Default to 0.5 */
  208|    336|		FLAC__window_tukey(window, L, 0.5f);
  209|  14.8k|	else {
  210|  14.8k|		const FLAC__int32 Np = (FLAC__int32)(p / 2.0f * L) - 1;
  211|  14.8k|		FLAC__int32 n;
  212|       |		/* start with rectangle... */
  213|  14.8k|		FLAC__window_rectangle(window, L);
  214|       |		/* ...replace ends with hann */
  215|  14.8k|		if (Np > 0) {
  ------------------
  |  Branch (215:7): [True: 12.6k, False: 2.18k]
  ------------------
  216|  47.3M|			for (n = 0; n <= Np; n++) {
  ------------------
  |  Branch (216:16): [True: 47.3M, False: 12.6k]
  ------------------
  217|  47.3M|				window[n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * n / Np));
  218|       |				window[L-Np-1+n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * (n+Np) / Np));
  219|  47.3M|			}
  220|  12.6k|		}
  221|  14.8k|	}
  222|  16.3k|}
FLAC__window_partial_tukey:
  225|  10.1k|{
  226|  10.1k|	const FLAC__int32 start_n = (FLAC__int32)(start * L);
  227|  10.1k|	const FLAC__int32 end_n = (FLAC__int32)(end * L);
  228|  10.1k|	const FLAC__int32 N = end_n - start_n;
  229|  10.1k|	FLAC__int32 Np, n, i;
  230|       |
  231|  10.1k|	if (p <= 0.0f)
  ------------------
  |  Branch (231:6): [True: 1.59k, False: 8.51k]
  ------------------
  232|  1.59k|		FLAC__window_partial_tukey(window, L, 0.05f, start, end);
  233|  8.51k|	else if (p >= 1.0f)
  ------------------
  |  Branch (233:11): [True: 764, False: 7.75k]
  ------------------
  234|    764|		FLAC__window_partial_tukey(window, L, 0.95f, start, end);
  235|  7.75k|	else if (!(p > 0.0f && p < 1.0f))
  ------------------
  |  Branch (235:13): [True: 7.31k, False: 439]
  |  Branch (235:25): [True: 7.31k, False: 0]
  ------------------
  236|       |		/* p is not between 0 and 1, probably NaN.
  237|       |		 * Default to 0.5 */
  238|    439|		FLAC__window_partial_tukey(window, L, 0.5f, start, end);
  239|  7.31k|	else {
  240|       |
  241|  7.31k|		Np = (FLAC__int32)(p / 2.0f * N);
  242|       |
  243|  31.4M|		for (n = 0; n < start_n && n < L; n++)
  ------------------
  |  Branch (243:15): [True: 31.4M, False: 7.31k]
  |  Branch (243:30): [True: 31.4M, False: 0]
  ------------------
  244|  31.4M|			window[n] = 0.0f;
  245|  1.93M|		for (i = 1; n < (start_n+Np) && n < L; n++, i++)
  ------------------
  |  Branch (245:15): [True: 1.92M, False: 7.31k]
  |  Branch (245:35): [True: 1.92M, False: 0]
  ------------------
  246|  1.92M|			window[n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * i / Np));
  247|  10.7M|		for (; n < (end_n-Np) && n < L; n++)
  ------------------
  |  Branch (247:10): [True: 10.7M, False: 7.31k]
  |  Branch (247:28): [True: 10.7M, False: 0]
  ------------------
  248|  10.7M|			window[n] = 1.0f;
  249|  1.93M|		for (i = Np; n < end_n && n < L; n++, i--)
  ------------------
  |  Branch (249:16): [True: 1.92M, False: 7.31k]
  |  Branch (249:29): [True: 1.92M, False: 0]
  ------------------
  250|  1.92M|			window[n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * i / Np));
  251|  31.4M|		for (; n < L; n++)
  ------------------
  |  Branch (251:10): [True: 31.4M, False: 7.31k]
  ------------------
  252|  31.4M|			window[n] = 0.0f;
  253|  7.31k|	}
  254|  10.1k|}
FLAC__window_punchout_tukey:
  257|  10.9k|{
  258|  10.9k|	const FLAC__int32 start_n = (FLAC__int32)(start * L);
  259|  10.9k|	const FLAC__int32 end_n = (FLAC__int32)(end * L);
  260|  10.9k|	FLAC__int32 Ns, Ne, n, i;
  261|       |
  262|  10.9k|	if (p <= 0.0f)
  ------------------
  |  Branch (262:6): [True: 220, False: 10.7k]
  ------------------
  263|    220|		FLAC__window_punchout_tukey(window, L, 0.05f, start, end);
  264|  10.7k|	else if (p >= 1.0f)
  ------------------
  |  Branch (264:11): [True: 160, False: 10.5k]
  ------------------
  265|    160|		FLAC__window_punchout_tukey(window, L, 0.95f, start, end);
  266|  10.5k|	else if (!(p > 0.0f && p < 1.0f))
  ------------------
  |  Branch (266:13): [True: 10.4k, False: 71]
  |  Branch (266:25): [True: 10.4k, False: 0]
  ------------------
  267|       |		/* p is not between 0 and 1, probably NaN.
  268|       |		 * Default to 0.5 */
  269|     71|		FLAC__window_punchout_tukey(window, L, 0.5f, start, end);
  270|  10.4k|	else {
  271|       |
  272|  10.4k|		Ns = (FLAC__int32)(p / 2.0f * start_n);
  273|  10.4k|		Ne = (FLAC__int32)(p / 2.0f * (L - end_n));
  274|       |
  275|  9.19M|		for (n = 0, i = 1; n < Ns && n < L; n++, i++)
  ------------------
  |  Branch (275:22): [True: 9.18M, False: 10.4k]
  |  Branch (275:32): [True: 9.18M, False: 0]
  ------------------
  276|  9.18M|			window[n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * i / Ns));
  277|  69.2M|		for (; n < start_n-Ns && n < L; n++)
  ------------------
  |  Branch (277:10): [True: 69.2M, False: 10.4k]
  |  Branch (277:28): [True: 69.2M, False: 0]
  ------------------
  278|  69.2M|			window[n] = 1.0f;
  279|  9.19M|		for (i = Ns; n < start_n && n < L; n++, i--)
  ------------------
  |  Branch (279:16): [True: 9.18M, False: 10.4k]
  |  Branch (279:31): [True: 9.18M, False: 0]
  ------------------
  280|  9.18M|			window[n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * i / Ns));
  281|  14.3M|		for (; n < end_n && n < L; n++)
  ------------------
  |  Branch (281:10): [True: 14.3M, False: 10.4k]
  |  Branch (281:23): [True: 14.3M, False: 0]
  ------------------
  282|  14.3M|			window[n] = 0.0f;
  283|  9.20M|		for (i = 1; n < end_n+Ne && n < L; n++, i++)
  ------------------
  |  Branch (283:15): [True: 9.19M, False: 10.4k]
  |  Branch (283:31): [True: 9.19M, False: 0]
  ------------------
  284|  9.19M|			window[n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * i / Ne));
  285|  69.2M|		for (; n < L - (Ne) && n < L; n++)
  ------------------
  |  Branch (285:10): [True: 69.2M, False: 10.4k]
  |  Branch (285:26): [True: 69.2M, False: 0]
  ------------------
  286|  69.2M|			window[n] = 1.0f;
  287|  9.20M|		for (i = Ne; n < L; n++, i--)
  ------------------
  |  Branch (287:16): [True: 9.19M, False: 10.4k]
  ------------------
  288|  9.19M|			window[n] = (FLAC__real)(0.5f - 0.5f * cosf(M_PI * i / Ne));
  289|  10.4k|	}
  290|  10.9k|}
FLAC__window_welch:
  293|    255|{
  294|    255|	const FLAC__int32 N = L - 1;
  295|    255|	const double N2 = (double)N / 2.;
  296|    255|	FLAC__int32 n;
  297|       |
  298|  3.08M|	for (n = 0; n <= N; n++) {
  ------------------
  |  Branch (298:14): [True: 3.08M, False: 255]
  ------------------
  299|  3.08M|		const double k = ((double)n - N2) / N2;
  300|  3.08M|		window[n] = (FLAC__real)(1.0f - k * k);
  301|  3.08M|	}
  302|    255|}

ogg_page_granulepos:
   49|  10.3k|ogg_int64_t ogg_page_granulepos(const ogg_page *og){
   50|  10.3k|  unsigned char *page=og->header;
   51|  10.3k|  ogg_uint64_t granulepos=page[13]&(0xff);
   52|  10.3k|  granulepos= (granulepos<<8)|(page[12]&0xff);
   53|  10.3k|  granulepos= (granulepos<<8)|(page[11]&0xff);
   54|  10.3k|  granulepos= (granulepos<<8)|(page[10]&0xff);
   55|  10.3k|  granulepos= (granulepos<<8)|(page[9]&0xff);
   56|  10.3k|  granulepos= (granulepos<<8)|(page[8]&0xff);
   57|  10.3k|  granulepos= (granulepos<<8)|(page[7]&0xff);
   58|  10.3k|  granulepos= (granulepos<<8)|(page[6]&0xff);
   59|  10.3k|  return((ogg_int64_t)granulepos);
   60|  10.3k|}
ogg_stream_init:
  133|  2.98k|int ogg_stream_init(ogg_stream_state *os,int serialno){
  134|  2.98k|  if(os){
  ------------------
  |  Branch (134:6): [True: 2.98k, False: 0]
  ------------------
  135|  2.98k|    memset(os,0,sizeof(*os));
  136|  2.98k|    os->body_storage=16*1024;
  137|  2.98k|    os->lacing_storage=1024;
  138|       |
  139|  2.98k|    os->body_data=_ogg_malloc(os->body_storage*sizeof(*os->body_data));
  ------------------
  |  |   21|  2.98k|#define _ogg_malloc  malloc
  ------------------
  140|  2.98k|    os->lacing_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->lacing_vals));
  ------------------
  |  |   21|  2.98k|#define _ogg_malloc  malloc
  ------------------
  141|  2.98k|    os->granule_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->granule_vals));
  ------------------
  |  |   21|  2.98k|#define _ogg_malloc  malloc
  ------------------
  142|       |
  143|  2.98k|    if(!os->body_data || !os->lacing_vals || !os->granule_vals){
  ------------------
  |  Branch (143:8): [True: 0, False: 2.98k]
  |  Branch (143:26): [True: 0, False: 2.98k]
  |  Branch (143:46): [True: 0, False: 2.98k]
  ------------------
  144|      0|      ogg_stream_clear(os);
  145|      0|      return -1;
  146|      0|    }
  147|       |
  148|  2.98k|    os->serialno=serialno;
  149|       |
  150|  2.98k|    return(0);
  151|  2.98k|  }
  152|      0|  return(-1);
  153|  2.98k|}
ogg_stream_check:
  156|   438k|int ogg_stream_check(ogg_stream_state *os){
  157|   438k|  if(!os || !os->body_data) return -1;
  ------------------
  |  Branch (157:6): [True: 0, False: 438k]
  |  Branch (157:13): [True: 0, False: 438k]
  ------------------
  158|   438k|  return 0;
  159|   438k|}
ogg_stream_clear:
  162|  2.98k|int ogg_stream_clear(ogg_stream_state *os){
  163|  2.98k|  if(os){
  ------------------
  |  Branch (163:6): [True: 2.98k, False: 0]
  ------------------
  164|  2.98k|    if(os->body_data)_ogg_free(os->body_data);
  ------------------
  |  |   24|  2.98k|#define _ogg_free    free
  ------------------
  |  Branch (164:8): [True: 2.98k, False: 0]
  ------------------
  165|  2.98k|    if(os->lacing_vals)_ogg_free(os->lacing_vals);
  ------------------
  |  |   24|  2.98k|#define _ogg_free    free
  ------------------
  |  Branch (165:8): [True: 2.98k, False: 0]
  ------------------
  166|  2.98k|    if(os->granule_vals)_ogg_free(os->granule_vals);
  ------------------
  |  |   24|  2.98k|#define _ogg_free    free
  ------------------
  |  Branch (166:8): [True: 2.98k, False: 0]
  ------------------
  167|       |
  168|  2.98k|    memset(os,0,sizeof(*os));
  169|  2.98k|  }
  170|  2.98k|  return(0);
  171|  2.98k|}
ogg_page_checksum_set:
  255|  10.3k|void ogg_page_checksum_set(ogg_page *og){
  256|  10.3k|  if(og){
  ------------------
  |  Branch (256:6): [True: 10.3k, False: 0]
  ------------------
  257|  10.3k|    ogg_uint32_t crc_reg=0;
  258|       |
  259|       |    /* safety; needed for API behavior, but not framing code */
  260|  10.3k|    og->header[22]=0;
  261|  10.3k|    og->header[23]=0;
  262|  10.3k|    og->header[24]=0;
  263|  10.3k|    og->header[25]=0;
  264|       |
  265|  10.3k|    crc_reg=_os_update_crc(crc_reg,og->header,og->header_len);
  266|  10.3k|    crc_reg=_os_update_crc(crc_reg,og->body,og->body_len);
  267|       |
  268|  10.3k|    og->header[22]=(unsigned char)(crc_reg&0xff);
  269|  10.3k|    og->header[23]=(unsigned char)((crc_reg>>8)&0xff);
  270|  10.3k|    og->header[24]=(unsigned char)((crc_reg>>16)&0xff);
  271|  10.3k|    og->header[25]=(unsigned char)((crc_reg>>24)&0xff);
  272|  10.3k|  }
  273|  10.3k|}
ogg_stream_iovecin:
  277|   143k|                       long e_o_s, ogg_int64_t granulepos){
  278|       |
  279|   143k|  long bytes = 0, lacing_vals;
  280|   143k|  int i;
  281|       |
  282|   143k|  if(ogg_stream_check(os)) return -1;
  ------------------
  |  Branch (282:6): [True: 0, False: 143k]
  ------------------
  283|   143k|  if(!iov) return 0;
  ------------------
  |  Branch (283:6): [True: 0, False: 143k]
  ------------------
  284|       |
  285|   286k|  for (i = 0; i < count; ++i){
  ------------------
  |  Branch (285:15): [True: 143k, False: 143k]
  ------------------
  286|   143k|    if(iov[i].iov_len>LONG_MAX) return -1;
  ------------------
  |  Branch (286:8): [True: 0, False: 143k]
  ------------------
  287|   143k|    if(bytes>LONG_MAX-(long)iov[i].iov_len) return -1;
  ------------------
  |  Branch (287:8): [True: 0, False: 143k]
  ------------------
  288|   143k|    bytes += (long)iov[i].iov_len;
  289|   143k|  }
  290|   143k|  lacing_vals=bytes/255+1;
  291|       |
  292|   143k|  if(os->body_returned){
  ------------------
  |  Branch (292:6): [True: 6.99k, False: 136k]
  ------------------
  293|       |    /* advance packet data according to the body_returned pointer. We
  294|       |       had to keep it around to return a pointer into the buffer last
  295|       |       call */
  296|       |
  297|  6.99k|    os->body_fill-=os->body_returned;
  298|  6.99k|    if(os->body_fill)
  ------------------
  |  Branch (298:8): [True: 1.23k, False: 5.75k]
  ------------------
  299|  1.23k|      memmove(os->body_data,os->body_data+os->body_returned,
  300|  1.23k|              os->body_fill);
  301|  6.99k|    os->body_returned=0;
  302|  6.99k|  }
  303|       |
  304|       |  /* make sure we have the buffer storage */
  305|   143k|  if(_os_body_expand(os,bytes) || _os_lacing_expand(os,lacing_vals))
  ------------------
  |  Branch (305:6): [True: 0, False: 143k]
  |  Branch (305:35): [True: 0, False: 143k]
  ------------------
  306|      0|    return -1;
  307|       |
  308|       |  /* Copy in the submitted packet.  Yes, the copy is a waste; this is
  309|       |     the liability of overly clean abstraction for the time being.  It
  310|       |     will actually be fairly easy to eliminate the extra copy in the
  311|       |     future */
  312|       |
  313|   286k|  for (i = 0; i < count; ++i) {
  ------------------
  |  Branch (313:15): [True: 143k, False: 143k]
  ------------------
  314|   143k|    memcpy(os->body_data+os->body_fill, iov[i].iov_base, iov[i].iov_len);
  315|   143k|    os->body_fill += (long)iov[i].iov_len;
  316|   143k|  }
  317|       |
  318|       |  /* Store lacing vals for this packet */
  319|   272k|  for(i=0;i<lacing_vals-1;i++){
  ------------------
  |  Branch (319:11): [True: 129k, False: 143k]
  ------------------
  320|   129k|    os->lacing_vals[os->lacing_fill+i]=255;
  321|   129k|    os->granule_vals[os->lacing_fill+i]=os->granulepos;
  322|   129k|  }
  323|   143k|  os->lacing_vals[os->lacing_fill+i]=bytes%255;
  324|   143k|  os->granulepos=os->granule_vals[os->lacing_fill+i]=granulepos;
  325|       |
  326|       |  /* flag the first segment as the beginning of the packet */
  327|   143k|  os->lacing_vals[os->lacing_fill]|= 0x100;
  328|       |
  329|   143k|  os->lacing_fill+=lacing_vals;
  330|       |
  331|       |  /* for the sake of completeness */
  332|   143k|  os->packetno++;
  333|       |
  334|   143k|  if(e_o_s)os->e_o_s=1;
  ------------------
  |  Branch (334:6): [True: 2.59k, False: 140k]
  ------------------
  335|       |
  336|   143k|  return(0);
  337|   143k|}
ogg_stream_packetin:
  339|   143k|int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op){
  340|   143k|  ogg_iovec_t iov;
  341|   143k|  iov.iov_base = op->packet;
  342|   143k|  iov.iov_len = op->bytes;
  343|   143k|  return ogg_stream_iovecin(os, &iov, 1, op->e_o_s, op->granulepos);
  344|   143k|}
ogg_stream_flush:
  495|  11.9k|int ogg_stream_flush(ogg_stream_state *os,ogg_page *og){
  496|  11.9k|  return ogg_stream_flush_i(os,og,1,4096);
  497|  11.9k|}
ogg_stream_pageout:
  511|   141k|int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og){
  512|   141k|  int force=0;
  513|   141k|  if(ogg_stream_check(os)) return 0;
  ------------------
  |  Branch (513:6): [True: 0, False: 141k]
  ------------------
  514|       |
  515|   141k|  if((os->e_o_s&&os->lacing_fill) ||          /* 'were done, now flush' case */
  ------------------
  |  Branch (515:7): [True: 5.52k, False: 136k]
  |  Branch (515:18): [True: 2.92k, False: 2.59k]
  ------------------
  516|   138k|     (os->lacing_fill&&!os->b_o_s))           /* 'initial header page' case */
  ------------------
  |  Branch (516:7): [True: 136k, False: 2.77k]
  |  Branch (516:24): [True: 0, False: 136k]
  ------------------
  517|  2.92k|    force=1;
  518|       |
  519|   141k|  return(ogg_stream_flush_i(os,og,force,4096));
  520|   141k|}
framing.c:_os_update_crc:
  237|  20.6k|static ogg_uint32_t _os_update_crc(ogg_uint32_t crc, unsigned char *buffer, int size){
  238|  5.00M|  while (size>=8){
  ------------------
  |  Branch (238:10): [True: 4.98M, False: 20.6k]
  ------------------
  239|  4.98M|    crc^=((ogg_uint32_t)buffer[0]<<24)|((ogg_uint32_t)buffer[1]<<16)|((ogg_uint32_t)buffer[2]<<8)|((ogg_uint32_t)buffer[3]);
  240|       |
  241|  4.98M|    crc=crc_lookup[7][ crc>>24      ]^crc_lookup[6][(crc>>16)&0xFF]^
  242|  4.98M|        crc_lookup[5][(crc>> 8)&0xFF]^crc_lookup[4][ crc     &0xFF]^
  243|  4.98M|        crc_lookup[3][buffer[4]     ]^crc_lookup[2][buffer[5]     ]^
  244|  4.98M|        crc_lookup[1][buffer[6]     ]^crc_lookup[0][buffer[7]     ];
  245|       |
  246|  4.98M|    buffer+=8;
  247|  4.98M|    size-=8;
  248|  4.98M|  }
  249|       |
  250|  90.7k|  while (size--)
  ------------------
  |  Branch (250:10): [True: 70.1k, False: 20.6k]
  ------------------
  251|  70.1k|    crc=(crc<<8)^crc_lookup[0][((crc >> 24)&0xff)^*buffer++];
  252|  20.6k|  return crc;
  253|  20.6k|}
framing.c:_os_body_expand:
  184|   143k|static int _os_body_expand(ogg_stream_state *os,long needed){
  185|   143k|  if(os->body_storage-needed<=os->body_fill){
  ------------------
  |  Branch (185:6): [True: 394, False: 142k]
  ------------------
  186|    394|    long body_storage;
  187|    394|    void *ret;
  188|    394|    if(os->body_storage>LONG_MAX-needed){
  ------------------
  |  Branch (188:8): [True: 0, False: 394]
  ------------------
  189|      0|      ogg_stream_clear(os);
  190|      0|      return -1;
  191|      0|    }
  192|    394|    body_storage=os->body_storage+needed;
  193|    394|    if(body_storage<LONG_MAX-1024)body_storage+=1024;
  ------------------
  |  Branch (193:8): [True: 394, False: 0]
  ------------------
  194|    394|    ret=_ogg_realloc(os->body_data,body_storage*sizeof(*os->body_data));
  ------------------
  |  |   23|    394|#define _ogg_realloc realloc
  ------------------
  195|    394|    if(!ret){
  ------------------
  |  Branch (195:8): [True: 0, False: 394]
  ------------------
  196|      0|      ogg_stream_clear(os);
  197|      0|      return -1;
  198|      0|    }
  199|    394|    os->body_storage=body_storage;
  200|    394|    os->body_data=ret;
  201|    394|  }
  202|   143k|  return 0;
  203|   143k|}
framing.c:_os_lacing_expand:
  205|   143k|static int _os_lacing_expand(ogg_stream_state *os,long needed){
  206|   143k|  if(os->lacing_storage-needed<=os->lacing_fill){
  ------------------
  |  Branch (206:6): [True: 25, False: 143k]
  ------------------
  207|     25|    long lacing_storage;
  208|     25|    void *ret;
  209|     25|    if(os->lacing_storage>LONG_MAX-needed){
  ------------------
  |  Branch (209:8): [True: 0, False: 25]
  ------------------
  210|      0|      ogg_stream_clear(os);
  211|      0|      return -1;
  212|      0|    }
  213|     25|    lacing_storage=os->lacing_storage+needed;
  214|     25|    if(lacing_storage<LONG_MAX-32)lacing_storage+=32;
  ------------------
  |  Branch (214:8): [True: 25, False: 0]
  ------------------
  215|     25|    ret=_ogg_realloc(os->lacing_vals,lacing_storage*sizeof(*os->lacing_vals));
  ------------------
  |  |   23|     25|#define _ogg_realloc realloc
  ------------------
  216|     25|    if(!ret){
  ------------------
  |  Branch (216:8): [True: 0, False: 25]
  ------------------
  217|      0|      ogg_stream_clear(os);
  218|      0|      return -1;
  219|      0|    }
  220|     25|    os->lacing_vals=ret;
  221|     25|    ret=_ogg_realloc(os->granule_vals,lacing_storage*
  ------------------
  |  |   23|     25|#define _ogg_realloc realloc
  ------------------
  222|     25|                     sizeof(*os->granule_vals));
  223|     25|    if(!ret){
  ------------------
  |  Branch (223:8): [True: 0, False: 25]
  ------------------
  224|      0|      ogg_stream_clear(os);
  225|      0|      return -1;
  226|      0|    }
  227|     25|    os->granule_vals=ret;
  228|     25|    os->lacing_storage=lacing_storage;
  229|     25|  }
  230|   143k|  return 0;
  231|   143k|}
framing.c:ogg_stream_flush_i:
  349|   153k|static int ogg_stream_flush_i(ogg_stream_state *os,ogg_page *og, int force, int nfill){
  350|   153k|  int i;
  351|   153k|  int vals=0;
  352|   153k|  int maxvals;
  353|   153k|  int bytes=0;
  354|   153k|  long acc=0;
  355|   153k|  ogg_int64_t granule_pos=-1;
  356|       |
  357|   153k|  if(ogg_stream_check(os)) return(0);
  ------------------
  |  Branch (357:6): [True: 0, False: 153k]
  ------------------
  358|   153k|  maxvals=(os->lacing_fill>255?255:os->lacing_fill);
  ------------------
  |  Branch (358:12): [True: 337, False: 153k]
  ------------------
  359|   153k|  if(maxvals==0) return(0);
  ------------------
  |  Branch (359:6): [True: 8.73k, False: 144k]
  ------------------
  360|       |
  361|       |  /* construct a page */
  362|       |  /* decide how many segments to include */
  363|       |
  364|       |  /* If this is the initial header case, the first page must only include
  365|       |     the initial header packet */
  366|   144k|  if(os->b_o_s==0){  /* 'initial header page' case */
  ------------------
  |  Branch (366:6): [True: 2.98k, False: 141k]
  ------------------
  367|  2.98k|    granule_pos=0;
  368|  2.98k|    for(vals=0;vals<maxvals;vals++){
  ------------------
  |  Branch (368:16): [True: 2.98k, False: 0]
  ------------------
  369|  2.98k|      if((os->lacing_vals[vals]&0x0ff)<255){
  ------------------
  |  Branch (369:10): [True: 2.98k, False: 0]
  ------------------
  370|  2.98k|        vals++;
  371|  2.98k|        break;
  372|  2.98k|      }
  373|  2.98k|    }
  374|   141k|  }else{
  375|       |
  376|       |    /* The extra packets_done, packet_just_done logic here attempts to do two things:
  377|       |       1) Don't unnecessarily span pages.
  378|       |       2) Unless necessary, don't flush pages if there are less than four packets on
  379|       |          them; this expands page size to reduce unnecessary overhead if incoming packets
  380|       |          are large.
  381|       |       These are not necessary behaviors, just 'always better than naive flushing'
  382|       |       without requiring an application to explicitly request a specific optimized
  383|       |       behavior. We'll want an explicit behavior setup pathway eventually as well. */
  384|       |
  385|   141k|    int packets_done=0;
  386|   141k|    int packet_just_done=0;
  387|  10.8M|    for(vals=0;vals<maxvals;vals++){
  ------------------
  |  Branch (387:16): [True: 10.6M, False: 140k]
  ------------------
  388|  10.6M|      if(acc>nfill && packet_just_done>=4){
  ------------------
  |  Branch (388:10): [True: 142k, False: 10.5M]
  |  Branch (388:23): [True: 1.26k, False: 141k]
  ------------------
  389|  1.26k|        force=1;
  390|  1.26k|        break;
  391|  1.26k|      }
  392|  10.6M|      acc+=os->lacing_vals[vals]&0x0ff;
  393|  10.6M|      if((os->lacing_vals[vals]&0xff)<255){
  ------------------
  |  Branch (393:10): [True: 10.4M, False: 176k]
  ------------------
  394|  10.4M|        granule_pos=os->granule_vals[vals];
  395|  10.4M|        packet_just_done=++packets_done;
  396|  10.4M|      }else
  397|   176k|        packet_just_done=0;
  398|  10.6M|    }
  399|   141k|    if(vals==255)force=1;
  ------------------
  |  Branch (399:8): [True: 512, False: 141k]
  ------------------
  400|   141k|  }
  401|       |
  402|   144k|  if(!force) return(0);
  ------------------
  |  Branch (402:6): [True: 134k, False: 10.3k]
  ------------------
  403|       |
  404|       |  /* construct the header in temp storage */
  405|  10.3k|  memcpy(os->header,"OggS",4);
  406|       |
  407|       |  /* stream structure version */
  408|  10.3k|  os->header[4]=0x00;
  409|       |
  410|       |  /* continued packet flag? */
  411|  10.3k|  os->header[5]=0x00;
  412|  10.3k|  if((os->lacing_vals[0]&0x100)==0)os->header[5]|=0x01;
  ------------------
  |  Branch (412:6): [True: 329, False: 9.99k]
  ------------------
  413|       |  /* first page flag? */
  414|  10.3k|  if(os->b_o_s==0)os->header[5]|=0x02;
  ------------------
  |  Branch (414:6): [True: 2.98k, False: 7.34k]
  ------------------
  415|       |  /* last page flag? */
  416|  10.3k|  if(os->e_o_s && os->lacing_fill==vals)os->header[5]|=0x04;
  ------------------
  |  Branch (416:6): [True: 2.92k, False: 7.40k]
  |  Branch (416:19): [True: 2.59k, False: 327]
  ------------------
  417|  10.3k|  os->b_o_s=1;
  418|       |
  419|       |  /* 64 bits of PCM position */
  420|  92.9k|  for(i=6;i<14;i++){
  ------------------
  |  Branch (420:11): [True: 82.6k, False: 10.3k]
  ------------------
  421|  82.6k|    os->header[i]=(unsigned char)(granule_pos&0xff);
  422|  82.6k|    granule_pos>>=8;
  423|  82.6k|  }
  424|       |
  425|       |  /* 32 bits of stream serial number */
  426|  10.3k|  {
  427|  10.3k|    long serialno=os->serialno;
  428|  51.6k|    for(i=14;i<18;i++){
  ------------------
  |  Branch (428:14): [True: 41.3k, False: 10.3k]
  ------------------
  429|  41.3k|      os->header[i]=(unsigned char)(serialno&0xff);
  430|  41.3k|      serialno>>=8;
  431|  41.3k|    }
  432|  10.3k|  }
  433|       |
  434|       |  /* 32 bits of page counter (we have both counter and page header
  435|       |     because this val can roll over) */
  436|  10.3k|  if(os->pageno==-1)os->pageno=0; /* because someone called
  ------------------
  |  Branch (436:6): [True: 0, False: 10.3k]
  ------------------
  437|       |                                     stream_reset; this would be a
  438|       |                                     strange thing to do in an
  439|       |                                     encode stream, but it has
  440|       |                                     plausible uses */
  441|  10.3k|  {
  442|  10.3k|    long pageno=os->pageno++;
  443|  51.6k|    for(i=18;i<22;i++){
  ------------------
  |  Branch (443:14): [True: 41.3k, False: 10.3k]
  ------------------
  444|  41.3k|      os->header[i]=(unsigned char)(pageno&0xff);
  445|  41.3k|      pageno>>=8;
  446|  41.3k|    }
  447|  10.3k|  }
  448|       |
  449|       |  /* zero for computation; filled in later */
  450|  10.3k|  os->header[22]=0;
  451|  10.3k|  os->header[23]=0;
  452|  10.3k|  os->header[24]=0;
  453|  10.3k|  os->header[25]=0;
  454|       |
  455|       |  /* segment table */
  456|  10.3k|  os->header[26]=(unsigned char)(vals&0xff);
  457|   283k|  for(i=0;i<vals;i++)
  ------------------
  |  Branch (457:11): [True: 272k, False: 10.3k]
  ------------------
  458|   272k|    bytes+=os->header[i+27]=(unsigned char)(os->lacing_vals[i]&0xff);
  459|       |
  460|       |  /* set pointers in the ogg_page struct */
  461|  10.3k|  og->header=os->header;
  462|  10.3k|  og->header_len=os->header_fill=vals+27;
  463|  10.3k|  og->body=os->body_data+os->body_returned;
  464|  10.3k|  og->body_len=bytes;
  465|       |
  466|       |  /* advance the lacing data and set the body_returned pointer */
  467|       |
  468|  10.3k|  os->lacing_fill-=vals;
  469|  10.3k|  memmove(os->lacing_vals,os->lacing_vals+vals,os->lacing_fill*sizeof(*os->lacing_vals));
  470|  10.3k|  memmove(os->granule_vals,os->granule_vals+vals,os->lacing_fill*sizeof(*os->granule_vals));
  471|  10.3k|  os->body_returned+=bytes;
  472|       |
  473|       |  /* calculate the checksum */
  474|       |
  475|  10.3k|  ogg_page_checksum_set(og);
  476|       |
  477|       |  /* done */
  478|  10.3k|  return(1);
  479|   144k|}

