#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
struct msa_letter_s {
  int dummy;
};

/* Variables and functions */
int /*<<< orphan*/ add_to_E_continuous(long double *, long double,
                                       struct msa_letter_s *, int, int, int,
                                       long double *);
int /*<<< orphan*/ add_to_E_dot_product(long double *, long double,
                                        struct msa_letter_s *, int, int, int,
                                        int);
int /*<<< orphan*/ add_to_E_dot_product_nr_occ(long double *, long double,
                                               struct msa_letter_s *, int, int,
                                               int, int);
int /*<<< orphan*/ add_to_E_dot_product_picasso(long double *, long double,
                                                struct msa_letter_s *, int, int,
                                                int, int);
int /*<<< orphan*/ add_to_E_dot_product_picasso_nr_occ(long double *,
                                                       long double,
                                                       struct msa_letter_s *,
                                                       int, int, int, int);
int /*<<< orphan*/ add_to_E_picasso(long double *, long double,
                                    struct msa_letter_s *, int, int, int, int);
int /*<<< orphan*/ add_to_E_picasso_nr_occ(long double *, long double,
                                           struct msa_letter_s *, int, int, int,
                                           int);
int /*<<< orphan*/ add_to_E_picasso_sym(long double *, long double,
                                        struct msa_letter_s *, int, int, int,
                                        int);
int /*<<< orphan*/ add_to_E_picasso_sym_nr_occ(long double *, long double,
                                               struct msa_letter_s *, int, int,
                                               int, int);
int /*<<< orphan*/ add_to_E_sjolander_reversed_score(long double *, long double,
                                                     struct msa_letter_s *, int,
                                                     int, int, int);
int /*<<< orphan*/ add_to_E_sjolander_reversed_score_nr_occ(
    long double *, long double, struct msa_letter_s *, int, int, int, int);
int /*<<< orphan*/ add_to_E_sjolander_score(long double *, long double,
                                            struct msa_letter_s *, int, int,
                                            int, int);
int /*<<< orphan*/ add_to_E_sjolander_score_nr_occ(long double *, long double,
                                                   struct msa_letter_s *, int,
                                                   int, int, int);
int /*<<< orphan*/ add_to_E_subst_mtx_dot_product(long double *, long double,
                                                  struct msa_letter_s *, int,
                                                  int, int, int, long double *,
                                                  int);
int /*<<< orphan*/ add_to_E_subst_mtx_dot_product_nr_occ(long double *,
                                                         long double,
                                                         struct msa_letter_s *,
                                                         int, int, int, int,
                                                         long double *, int);
int /*<<< orphan*/ add_to_E_subst_mtx_dot_product_prior(long double *,
                                                        long double,
                                                        struct msa_letter_s *,
                                                        int, int, int, int,
                                                        long double *, int);
int /*<<< orphan*/
add_to_E_subst_mtx_dot_product_prior_nr_occ(long double *, long double,
                                            struct msa_letter_s *, int, int,
                                            int, int, long double *, int);
int /*<<< orphan*/ add_to_E_subst_mtx_product(long double *, long double,
                                              struct msa_letter_s *, int, int,
                                              int, int, long double *);
int /*<<< orphan*/ add_to_E_subst_mtx_product_nr_occ(long double *, long double,
                                                     struct msa_letter_s *, int,
                                                     int, int, int,
                                                     long double *);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void add_to_E_multi(long double *E, long double Eka_base,
                    struct msa_letter_s *msa_seq, int p, int k, int a_size,
                    int normalize, long double *subst_mtx, int alphabet,
                    int scoring_method, int use_nr_occ, int alphabet_type,
                    long double *emissions) {
  if (alphabet_type == 2) {
    add_to_E_continuous(E, Eka_base, msa_seq, p, k, a_size, emissions);
  } else if (scoring_method == 1 && use_nr_occ == 0) {
    add_to_E_dot_product_nr_occ(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 8 && use_nr_occ == 0) {
    add_to_E_dot_product_picasso_nr_occ(E, Eka_base, msa_seq, p, k, a_size,
                                        normalize);
  } else if (scoring_method == 6 && use_nr_occ == 0) {
    add_to_E_picasso_nr_occ(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 7 && use_nr_occ == 0) {
    add_to_E_picasso_sym_nr_occ(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 5 && use_nr_occ == 0) {
    add_to_E_sjolander_score_nr_occ(E, Eka_base, msa_seq, p, k, a_size,
                                    normalize);
  } else if (scoring_method == 9 && use_nr_occ == 0) {
    add_to_E_sjolander_reversed_score_nr_occ(E, Eka_base, msa_seq, p, k, a_size,
                                             normalize);
  } else if (scoring_method == 2 && use_nr_occ == 0) {
    add_to_E_subst_mtx_product_nr_occ(E, Eka_base, msa_seq, p, k, a_size,
                                      normalize, subst_mtx);
  } else if (scoring_method == 3 && use_nr_occ == 0) {
    add_to_E_subst_mtx_dot_product_nr_occ(E, Eka_base, msa_seq, p, k, a_size,
                                          normalize, subst_mtx, alphabet);
  } else if (scoring_method == 4 && use_nr_occ == 0) {
    add_to_E_subst_mtx_dot_product_prior_nr_occ(
        E, Eka_base, msa_seq, p, k, a_size, normalize, subst_mtx, alphabet);
  } else if (scoring_method == 1) {
    add_to_E_dot_product(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 8) {
    add_to_E_dot_product_picasso(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 6) {
    add_to_E_picasso(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 7) {
    add_to_E_picasso_sym(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 5) {
    add_to_E_sjolander_score(E, Eka_base, msa_seq, p, k, a_size, normalize);
  } else if (scoring_method == 9) {
    add_to_E_sjolander_reversed_score(E, Eka_base, msa_seq, p, k, a_size,
                                      normalize);
  } else if (scoring_method == 2) {
    add_to_E_subst_mtx_product(E, Eka_base, msa_seq, p, k, a_size, normalize,
                               subst_mtx);
  } else if (scoring_method == 3) {
    add_to_E_subst_mtx_dot_product(E, Eka_base, msa_seq, p, k, a_size,
                                   normalize, subst_mtx, alphabet);
  } else if (scoring_method == 4) {
    add_to_E_subst_mtx_dot_product_prior(E, Eka_base, msa_seq, p, k, a_size,
                                         normalize, subst_mtx, alphabet);
  } else {
    printf("Error: Unrecognized scoring method\n");
    exit(0);
  }
}


x86 assembly (clang, -O0):
<add_to_E_multi>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%rax
fldt   0x10(%rbp)
mov    %rdi,-0x8(%rbp)
fstpt  -0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %edx,-0x2c(%rbp)
mov    %ecx,-0x30(%rbp)
mov    %r8d,-0x34(%rbp)
mov    %r9d,-0x38(%rbp)
cmpl   $0x2,0x40(%rbp)
jne    12ba <add_to_E_multi+0x6a>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    0x48(%rbp),%r9
mov    %rsp,%rax
fstpt  (%rax)
call   1090 <add_to_E_continuous@plt>
jmp    1755 <add_to_E_multi+0x505>
cmpl   $0x1,0x30(%rbp)
jne    12f6 <add_to_E_multi+0xa6>
cmpl   $0x0,0x38(%rbp)
jne    12f6 <add_to_E_multi+0xa6>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   1070 <add_to_E_dot_product_nr_occ@plt>
jmp    1750 <add_to_E_multi+0x500>
cmpl   $0x8,0x30(%rbp)
jne    1332 <add_to_E_multi+0xe2>
cmpl   $0x0,0x38(%rbp)
jne    1332 <add_to_E_multi+0xe2>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   10d0 <add_to_E_dot_product_picasso_nr_occ@plt>
jmp    174b <add_to_E_multi+0x4fb>
cmpl   $0x6,0x30(%rbp)
jne    136e <add_to_E_multi+0x11e>
cmpl   $0x0,0x38(%rbp)
jne    136e <add_to_E_multi+0x11e>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   1120 <add_to_E_picasso_nr_occ@plt>
jmp    1746 <add_to_E_multi+0x4f6>
cmpl   $0x7,0x30(%rbp)
jne    13aa <add_to_E_multi+0x15a>
cmpl   $0x0,0x38(%rbp)
jne    13aa <add_to_E_multi+0x15a>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   1110 <add_to_E_picasso_sym_nr_occ@plt>
jmp    1741 <add_to_E_multi+0x4f1>
cmpl   $0x5,0x30(%rbp)
jne    13e6 <add_to_E_multi+0x196>
cmpl   $0x0,0x38(%rbp)
jne    13e6 <add_to_E_multi+0x196>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   1080 <add_to_E_sjolander_score_nr_occ@plt>
jmp    173c <add_to_E_multi+0x4ec>
cmpl   $0x9,0x30(%rbp)
jne    1422 <add_to_E_multi+0x1d2>
cmpl   $0x0,0x38(%rbp)
jne    1422 <add_to_E_multi+0x1d2>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   10e0 <add_to_E_sjolander_reversed_score_nr_occ@plt>
jmp    1737 <add_to_E_multi+0x4e7>
cmpl   $0x2,0x30(%rbp)
jne    1466 <add_to_E_multi+0x216>
cmpl   $0x0,0x38(%rbp)
jne    1466 <add_to_E_multi+0x216>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    0x20(%rbp),%r10
mov    %rsp,%rax
mov    %r10,0x10(%rax)
fstpt  (%rax)
call   1060 <add_to_E_subst_mtx_product_nr_occ@plt>
jmp    1732 <add_to_E_multi+0x4e2>
cmpl   $0x3,0x30(%rbp)
jne    14b2 <add_to_E_multi+0x262>
cmpl   $0x0,0x38(%rbp)
jne    14b2 <add_to_E_multi+0x262>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    0x20(%rbp),%r10
mov    0x28(%rbp),%r11d
mov    %rsp,%rax
mov    %r11d,0x18(%rax)
mov    %r10,0x10(%rax)
fstpt  (%rax)
call   1050 <add_to_E_subst_mtx_dot_product_nr_occ@plt>
jmp    172d <add_to_E_multi+0x4dd>
cmpl   $0x4,0x30(%rbp)
jne    14fe <add_to_E_multi+0x2ae>
cmpl   $0x0,0x38(%rbp)
jne    14fe <add_to_E_multi+0x2ae>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    0x20(%rbp),%r10
mov    0x28(%rbp),%r11d
mov    %rsp,%rax
mov    %r11d,0x18(%rax)
mov    %r10,0x10(%rax)
fstpt  (%rax)
call   1170 <add_to_E_subst_mtx_dot_product_prior_nr_occ@plt>
jmp    1728 <add_to_E_multi+0x4d8>
cmpl   $0x1,0x30(%rbp)
jne    1530 <add_to_E_multi+0x2e0>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   1030 <add_to_E_dot_product@plt>
jmp    1723 <add_to_E_multi+0x4d3>
cmpl   $0x8,0x30(%rbp)
jne    1562 <add_to_E_multi+0x312>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   1160 <add_to_E_dot_product_picasso@plt>
jmp    171e <add_to_E_multi+0x4ce>
cmpl   $0x6,0x30(%rbp)
jne    1594 <add_to_E_multi+0x344>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   10f0 <add_to_E_picasso@plt>
jmp    1719 <add_to_E_multi+0x4c9>
cmpl   $0x7,0x30(%rbp)
jne    15c6 <add_to_E_multi+0x376>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   10b0 <add_to_E_picasso_sym@plt>
jmp    1714 <add_to_E_multi+0x4c4>
cmpl   $0x5,0x30(%rbp)
jne    15f8 <add_to_E_multi+0x3a8>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   10c0 <add_to_E_sjolander_score@plt>
jmp    170f <add_to_E_multi+0x4bf>
cmpl   $0x9,0x30(%rbp)
jne    162a <add_to_E_multi+0x3da>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    %rsp,%rax
fstpt  (%rax)
call   1140 <add_to_E_sjolander_reversed_score@plt>
jmp    170a <add_to_E_multi+0x4ba>
cmpl   $0x2,0x30(%rbp)
jne    1664 <add_to_E_multi+0x414>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    0x20(%rbp),%r10
mov    %rsp,%rax
mov    %r10,0x10(%rax)
fstpt  (%rax)
call   1130 <add_to_E_subst_mtx_product@plt>
jmp    1705 <add_to_E_multi+0x4b5>
cmpl   $0x3,0x30(%rbp)
jne    16a6 <add_to_E_multi+0x456>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    0x20(%rbp),%r10
mov    0x28(%rbp),%r11d
mov    %rsp,%rax
mov    %r11d,0x18(%rax)
mov    %r10,0x10(%rax)
fstpt  (%rax)
call   1040 <add_to_E_subst_mtx_dot_product@plt>
jmp    1700 <add_to_E_multi+0x4b0>
cmpl   $0x4,0x30(%rbp)
jne    16e8 <add_to_E_multi+0x498>
mov    -0x8(%rbp),%rdi
fldt   -0x20(%rbp)
mov    -0x28(%rbp),%rsi
mov    -0x2c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x34(%rbp),%r8d
mov    -0x38(%rbp),%r9d
mov    0x20(%rbp),%r10
mov    0x28(%rbp),%r11d
mov    %rsp,%rax
mov    %r11d,0x18(%rax)
mov    %r10,0x10(%rax)
fstpt  (%rax)
call   1100 <add_to_E_subst_mtx_dot_product_prior@plt>
jmp    16fb <add_to_E_multi+0x4ab>
lea    0x911(%rip),%rdi
call   10a0 <printf@plt>
xor    %edi,%edi
call   1150 <exit@plt>
jmp    1700 <add_to_E_multi+0x4b0>
jmp    1705 <add_to_E_multi+0x4b5>
jmp    170a <add_to_E_multi+0x4ba>
jmp    170f <add_to_E_multi+0x4bf>
jmp    1714 <add_to_E_multi+0x4c4>
jmp    1719 <add_to_E_multi+0x4c9>
jmp    171e <add_to_E_multi+0x4ce>
jmp    1723 <add_to_E_multi+0x4d3>
jmp    1728 <add_to_E_multi+0x4d8>
jmp    172d <add_to_E_multi+0x4dd>
jmp    1732 <add_to_E_multi+0x4e2>
jmp    1737 <add_to_E_multi+0x4e7>
jmp    173c <add_to_E_multi+0x4ec>
jmp    1741 <add_to_E_multi+0x4f1>
jmp    1746 <add_to_E_multi+0x4f6>
jmp    174b <add_to_E_multi+0x4fb>
jmp    1750 <add_to_E_multi+0x500>
jmp    1755 <add_to_E_multi+0x505>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<add_to_E_multi>:
push   %rbx
sub    $0x20,%rsp
fldt   0x30(%rsp)
cmpl   $0x2,0x60(%rsp)
jne    1272 <add_to_E_multi+0x22>
mov    0x68(%rsp),%r9
fstpt  (%rsp)
call   10a0 <add_to_E_continuous@plt>
jmp    1415 <add_to_E_multi+0x1c5>
mov    0x58(%rsp),%eax
mov    0x50(%rsp),%r11d
cmp    $0x1,%r11d
jne    1292 <add_to_E_multi+0x42>
test   %eax,%eax
jne    1292 <add_to_E_multi+0x42>
fstpt  (%rsp)
call   1080 <add_to_E_dot_product_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x8,%r11d
jne    12a9 <add_to_E_multi+0x59>
test   %eax,%eax
jne    12a9 <add_to_E_multi+0x59>
fstpt  (%rsp)
call   10d0 <add_to_E_dot_product_picasso_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x6,%r11d
jne    12c0 <add_to_E_multi+0x70>
test   %eax,%eax
jne    12c0 <add_to_E_multi+0x70>
fstpt  (%rsp)
call   1120 <add_to_E_picasso_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x7,%r11d
jne    12d7 <add_to_E_multi+0x87>
test   %eax,%eax
jne    12d7 <add_to_E_multi+0x87>
fstpt  (%rsp)
call   1110 <add_to_E_picasso_sym_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x5,%r11d
jne    12ee <add_to_E_multi+0x9e>
test   %eax,%eax
jne    12ee <add_to_E_multi+0x9e>
fstpt  (%rsp)
call   1090 <add_to_E_sjolander_score_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x9,%r11d
jne    1305 <add_to_E_multi+0xb5>
test   %eax,%eax
jne    1305 <add_to_E_multi+0xb5>
fstpt  (%rsp)
call   10e0 <add_to_E_sjolander_reversed_score_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
mov    0x40(%rsp),%r10
cmp    $0x2,%r11d
jne    1326 <add_to_E_multi+0xd6>
test   %eax,%eax
jne    1326 <add_to_E_multi+0xd6>
mov    %r10,0x10(%rsp)
fstpt  (%rsp)
call   1070 <add_to_E_subst_mtx_product_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
mov    0x48(%rsp),%ebx
cmp    $0x3,%r11d
jne    134a <add_to_E_multi+0xfa>
test   %eax,%eax
jne    134a <add_to_E_multi+0xfa>
mov    %ebx,0x18(%rsp)
mov    %r10,0x10(%rsp)
fstpt  (%rsp)
call   1050 <add_to_E_subst_mtx_dot_product_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x4,%r11d
jne    136a <add_to_E_multi+0x11a>
test   %eax,%eax
jne    136a <add_to_E_multi+0x11a>
mov    %ebx,0x18(%rsp)
mov    %r10,0x10(%rsp)
fstpt  (%rsp)
call   1170 <add_to_E_subst_mtx_dot_product_prior_nr_occ@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x1,%r11d
jne    137d <add_to_E_multi+0x12d>
fstpt  (%rsp)
call   1030 <add_to_E_dot_product@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x8,%r11d
jne    1390 <add_to_E_multi+0x140>
fstpt  (%rsp)
call   1160 <add_to_E_dot_product_picasso@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x6,%r11d
jne    13a0 <add_to_E_multi+0x150>
fstpt  (%rsp)
call   10f0 <add_to_E_picasso@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x7,%r11d
jne    13b0 <add_to_E_multi+0x160>
fstpt  (%rsp)
call   10b0 <add_to_E_picasso_sym@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x5,%r11d
jne    13c0 <add_to_E_multi+0x170>
fstpt  (%rsp)
call   10c0 <add_to_E_sjolander_score@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x9,%r11d
jne    13d0 <add_to_E_multi+0x180>
fstpt  (%rsp)
call   1140 <add_to_E_sjolander_reversed_score@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x2,%r11d
jne    13e5 <add_to_E_multi+0x195>
mov    %r10,0x10(%rsp)
fstpt  (%rsp)
call   1130 <add_to_E_subst_mtx_product@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x3,%r11d
jne    13fe <add_to_E_multi+0x1ae>
mov    %ebx,0x18(%rsp)
mov    %r10,0x10(%rsp)
fstpt  (%rsp)
call   1040 <add_to_E_subst_mtx_dot_product@plt>
jmp    1415 <add_to_E_multi+0x1c5>
cmp    $0x4,%r11d
jne    141b <add_to_E_multi+0x1cb>
mov    %ebx,0x18(%rsp)
mov    %r10,0x10(%rsp)
fstpt  (%rsp)
call   1100 <add_to_E_subst_mtx_dot_product_prior@plt>
add    $0x20,%rsp
pop    %rbx
ret
fstp   %st(0)
lea    0xbdc(%rip),%rdi
call   1060 <puts@plt>
xor    %edi,%edi
call   1150 <exit@plt>

LLVM IR (-O0):
%struct.msa_letter_s = type { i32 }
@.str = [36 x i8] c"Error: Unrecognized scoring method\0A\00"
define void @add_to_E_multi(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7, i32 %8, i32 %9, i32 %10, i32 %11, x86_fp80* %12) {
%14 = alloca x86_fp80*
%15 = alloca x86_fp80
%16 = alloca %struct.msa_letter_s*
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca x86_fp80*
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca x86_fp80*
store x86_fp80* %0, x86_fp80** %14
store x86_fp80 %1, x86_fp80* %15
store %struct.msa_letter_s* %2, %struct.msa_letter_s** %16
store i32 %3, i32* %17
store i32 %4, i32* %18
store i32 %5, i32* %19
store i32 %6, i32* %20
store x86_fp80* %7, x86_fp80** %21
store i32 %8, i32* %22
store i32 %9, i32* %23
store i32 %10, i32* %24
store i32 %11, i32* %25
store x86_fp80* %12, x86_fp80** %26
%27 = load i32, i32* %25
%28 = icmp eq i32 %27, 2
br i1 %28, label %29, label %38
29: ; preds = %13
%30 = load x86_fp80*, x86_fp80** %14
%31 = load x86_fp80, x86_fp80* %15
%32 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%33 = load i32, i32* %17
%34 = load i32, i32* %18
%35 = load i32, i32* %19
%36 = load x86_fp80*, x86_fp80** %26
%37 = call i32 @add_to_E_continuous(x86_fp80* %30, x86_fp80 %31, %struct.msa_letter_s* %32, i32 %33, i32 %34, i32 %35, x86_fp80* %36)
br label %312
38: ; preds = %13
%39 = load i32, i32* %23
%40 = icmp eq i32 %39, 1
br i1 %40, label %41, label %53
41: ; preds = %38
%42 = load i32, i32* %24
%43 = icmp eq i32 %42, 0
br i1 %43, label %44, label %53
44: ; preds = %41
%45 = load x86_fp80*, x86_fp80** %14
%46 = load x86_fp80, x86_fp80* %15
%47 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%48 = load i32, i32* %17
%49 = load i32, i32* %18
%50 = load i32, i32* %19
%51 = load i32, i32* %20
%52 = call i32 @add_to_E_dot_product_nr_occ(x86_fp80* %45, x86_fp80 %46, %struct.msa_letter_s* %47, i32 %48, i32 %49, i32 %50, i32 %51)
br label %311
53: ; preds = %41, %38
%54 = load i32, i32* %23
%55 = icmp eq i32 %54, 8
br i1 %55, label %56, label %68
56: ; preds = %53
%57 = load i32, i32* %24
%58 = icmp eq i32 %57, 0
br i1 %58, label %59, label %68
59: ; preds = %56
%60 = load x86_fp80*, x86_fp80** %14
%61 = load x86_fp80, x86_fp80* %15
%62 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%63 = load i32, i32* %17
%64 = load i32, i32* %18
%65 = load i32, i32* %19
%66 = load i32, i32* %20
%67 = call i32 @add_to_E_dot_product_picasso_nr_occ(x86_fp80* %60, x86_fp80 %61, %struct.msa_letter_s* %62, i32 %63, i32 %64, i32 %65, i32 %66)
br label %310
68: ; preds = %56, %53
%69 = load i32, i32* %23
%70 = icmp eq i32 %69, 6
br i1 %70, label %71, label %83
71: ; preds = %68
%72 = load i32, i32* %24
%73 = icmp eq i32 %72, 0
br i1 %73, label %74, label %83
74: ; preds = %71
%75 = load x86_fp80*, x86_fp80** %14
%76 = load x86_fp80, x86_fp80* %15
%77 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%78 = load i32, i32* %17
%79 = load i32, i32* %18
%80 = load i32, i32* %19
%81 = load i32, i32* %20
%82 = call i32 @add_to_E_picasso_nr_occ(x86_fp80* %75, x86_fp80 %76, %struct.msa_letter_s* %77, i32 %78, i32 %79, i32 %80, i32 %81)
br label %309
83: ; preds = %71, %68
%84 = load i32, i32* %23
%85 = icmp eq i32 %84, 7
br i1 %85, label %86, label %98
86: ; preds = %83
%87 = load i32, i32* %24
%88 = icmp eq i32 %87, 0
br i1 %88, label %89, label %98
89: ; preds = %86
%90 = load x86_fp80*, x86_fp80** %14
%91 = load x86_fp80, x86_fp80* %15
%92 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%93 = load i32, i32* %17
%94 = load i32, i32* %18
%95 = load i32, i32* %19
%96 = load i32, i32* %20
%97 = call i32 @add_to_E_picasso_sym_nr_occ(x86_fp80* %90, x86_fp80 %91, %struct.msa_letter_s* %92, i32 %93, i32 %94, i32 %95, i32 %96)
br label %308
98: ; preds = %86, %83
%99 = load i32, i32* %23
%100 = icmp eq i32 %99, 5
br i1 %100, label %101, label %113
101: ; preds = %98
%102 = load i32, i32* %24
%103 = icmp eq i32 %102, 0
br i1 %103, label %104, label %113
104: ; preds = %101
%105 = load x86_fp80*, x86_fp80** %14
%106 = load x86_fp80, x86_fp80* %15
%107 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%108 = load i32, i32* %17
%109 = load i32, i32* %18
%110 = load i32, i32* %19
%111 = load i32, i32* %20
%112 = call i32 @add_to_E_sjolander_score_nr_occ(x86_fp80* %105, x86_fp80 %106, %struct.msa_letter_s* %107, i32 %108, i32 %109, i32 %110, i32 %111)
br label %307
113: ; preds = %101, %98
%114 = load i32, i32* %23
%115 = icmp eq i32 %114, 9
br i1 %115, label %116, label %128
116: ; preds = %113
%117 = load i32, i32* %24
%118 = icmp eq i32 %117, 0
br i1 %118, label %119, label %128
119: ; preds = %116
%120 = load x86_fp80*, x86_fp80** %14
%121 = load x86_fp80, x86_fp80* %15
%122 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%123 = load i32, i32* %17
%124 = load i32, i32* %18
%125 = load i32, i32* %19
%126 = load i32, i32* %20
%127 = call i32 @add_to_E_sjolander_reversed_score_nr_occ(x86_fp80* %120, x86_fp80 %121, %struct.msa_letter_s* %122, i32 %123, i32 %124, i32 %125, i32 %126)
br label %306
128: ; preds = %116, %113
%129 = load i32, i32* %23
%130 = icmp eq i32 %129, 2
br i1 %130, label %131, label %144
131: ; preds = %128
%132 = load i32, i32* %24
%133 = icmp eq i32 %132, 0
br i1 %133, label %134, label %144
134: ; preds = %131
%135 = load x86_fp80*, x86_fp80** %14
%136 = load x86_fp80, x86_fp80* %15
%137 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%138 = load i32, i32* %17
%139 = load i32, i32* %18
%140 = load i32, i32* %19
%141 = load i32, i32* %20
%142 = load x86_fp80*, x86_fp80** %21
%143 = call i32 @add_to_E_subst_mtx_product_nr_occ(x86_fp80* %135, x86_fp80 %136, %struct.msa_letter_s* %137, i32 %138, i32 %139, i32 %140, i32 %141, x86_fp80* %142)
br label %305
144: ; preds = %131, %128
%145 = load i32, i32* %23
%146 = icmp eq i32 %145, 3
br i1 %146, label %147, label %161
147: ; preds = %144
%148 = load i32, i32* %24
%149 = icmp eq i32 %148, 0
br i1 %149, label %150, label %161
150: ; preds = %147
%151 = load x86_fp80*, x86_fp80** %14
%152 = load x86_fp80, x86_fp80* %15
%153 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%154 = load i32, i32* %17
%155 = load i32, i32* %18
%156 = load i32, i32* %19
%157 = load i32, i32* %20
%158 = load x86_fp80*, x86_fp80** %21
%159 = load i32, i32* %22
%160 = call i32 @add_to_E_subst_mtx_dot_product_nr_occ(x86_fp80* %151, x86_fp80 %152, %struct.msa_letter_s* %153, i32 %154, i32 %155, i32 %156, i32 %157, x86_fp80* %158, i32 %159)
br label %304
161: ; preds = %147, %144
%162 = load i32, i32* %23
%163 = icmp eq i32 %162, 4
br i1 %163, label %164, label %178
164: ; preds = %161
%165 = load i32, i32* %24
%166 = icmp eq i32 %165, 0
br i1 %166, label %167, label %178
167: ; preds = %164
%168 = load x86_fp80*, x86_fp80** %14
%169 = load x86_fp80, x86_fp80* %15
%170 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%171 = load i32, i32* %17
%172 = load i32, i32* %18
%173 = load i32, i32* %19
%174 = load i32, i32* %20
%175 = load x86_fp80*, x86_fp80** %21
%176 = load i32, i32* %22
%177 = call i32 @add_to_E_subst_mtx_dot_product_prior_nr_occ(x86_fp80* %168, x86_fp80 %169, %struct.msa_letter_s* %170, i32 %171, i32 %172, i32 %173, i32 %174, x86_fp80* %175, i32 %176)
br label %303
178: ; preds = %164, %161
%179 = load i32, i32* %23
%180 = icmp eq i32 %179, 1
br i1 %180, label %181, label %190
181: ; preds = %178
%182 = load x86_fp80*, x86_fp80** %14
%183 = load x86_fp80, x86_fp80* %15
%184 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%185 = load i32, i32* %17
%186 = load i32, i32* %18
%187 = load i32, i32* %19
%188 = load i32, i32* %20
%189 = call i32 @add_to_E_dot_product(x86_fp80* %182, x86_fp80 %183, %struct.msa_letter_s* %184, i32 %185, i32 %186, i32 %187, i32 %188)
br label %302
190: ; preds = %178
%191 = load i32, i32* %23
%192 = icmp eq i32 %191, 8
br i1 %192, label %193, label %202
193: ; preds = %190
%194 = load x86_fp80*, x86_fp80** %14
%195 = load x86_fp80, x86_fp80* %15
%196 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%197 = load i32, i32* %17
%198 = load i32, i32* %18
%199 = load i32, i32* %19
%200 = load i32, i32* %20
%201 = call i32 @add_to_E_dot_product_picasso(x86_fp80* %194, x86_fp80 %195, %struct.msa_letter_s* %196, i32 %197, i32 %198, i32 %199, i32 %200)
br label %301
202: ; preds = %190
%203 = load i32, i32* %23
%204 = icmp eq i32 %203, 6
br i1 %204, label %205, label %214
205: ; preds = %202
%206 = load x86_fp80*, x86_fp80** %14
%207 = load x86_fp80, x86_fp80* %15
%208 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%209 = load i32, i32* %17
%210 = load i32, i32* %18
%211 = load i32, i32* %19
%212 = load i32, i32* %20
%213 = call i32 @add_to_E_picasso(x86_fp80* %206, x86_fp80 %207, %struct.msa_letter_s* %208, i32 %209, i32 %210, i32 %211, i32 %212)
br label %300
214: ; preds = %202
%215 = load i32, i32* %23
%216 = icmp eq i32 %215, 7
br i1 %216, label %217, label %226
217: ; preds = %214
%218 = load x86_fp80*, x86_fp80** %14
%219 = load x86_fp80, x86_fp80* %15
%220 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%221 = load i32, i32* %17
%222 = load i32, i32* %18
%223 = load i32, i32* %19
%224 = load i32, i32* %20
%225 = call i32 @add_to_E_picasso_sym(x86_fp80* %218, x86_fp80 %219, %struct.msa_letter_s* %220, i32 %221, i32 %222, i32 %223, i32 %224)
br label %299
226: ; preds = %214
%227 = load i32, i32* %23
%228 = icmp eq i32 %227, 5
br i1 %228, label %229, label %238
229: ; preds = %226
%230 = load x86_fp80*, x86_fp80** %14
%231 = load x86_fp80, x86_fp80* %15
%232 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%233 = load i32, i32* %17
%234 = load i32, i32* %18
%235 = load i32, i32* %19
%236 = load i32, i32* %20
%237 = call i32 @add_to_E_sjolander_score(x86_fp80* %230, x86_fp80 %231, %struct.msa_letter_s* %232, i32 %233, i32 %234, i32 %235, i32 %236)
br label %298
238: ; preds = %226
%239 = load i32, i32* %23
%240 = icmp eq i32 %239, 9
br i1 %240, label %241, label %250
241: ; preds = %238
%242 = load x86_fp80*, x86_fp80** %14
%243 = load x86_fp80, x86_fp80* %15
%244 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%245 = load i32, i32* %17
%246 = load i32, i32* %18
%247 = load i32, i32* %19
%248 = load i32, i32* %20
%249 = call i32 @add_to_E_sjolander_reversed_score(x86_fp80* %242, x86_fp80 %243, %struct.msa_letter_s* %244, i32 %245, i32 %246, i32 %247, i32 %248)
br label %297
250: ; preds = %238
%251 = load i32, i32* %23
%252 = icmp eq i32 %251, 2
br i1 %252, label %253, label %263
253: ; preds = %250
%254 = load x86_fp80*, x86_fp80** %14
%255 = load x86_fp80, x86_fp80* %15
%256 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%257 = load i32, i32* %17
%258 = load i32, i32* %18
%259 = load i32, i32* %19
%260 = load i32, i32* %20
%261 = load x86_fp80*, x86_fp80** %21
%262 = call i32 @add_to_E_subst_mtx_product(x86_fp80* %254, x86_fp80 %255, %struct.msa_letter_s* %256, i32 %257, i32 %258, i32 %259, i32 %260, x86_fp80* %261)
br label %296
263: ; preds = %250
%264 = load i32, i32* %23
%265 = icmp eq i32 %264, 3
br i1 %265, label %266, label %277
266: ; preds = %263
%267 = load x86_fp80*, x86_fp80** %14
%268 = load x86_fp80, x86_fp80* %15
%269 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%270 = load i32, i32* %17
%271 = load i32, i32* %18
%272 = load i32, i32* %19
%273 = load i32, i32* %20
%274 = load x86_fp80*, x86_fp80** %21
%275 = load i32, i32* %22
%276 = call i32 @add_to_E_subst_mtx_dot_product(x86_fp80* %267, x86_fp80 %268, %struct.msa_letter_s* %269, i32 %270, i32 %271, i32 %272, i32 %273, x86_fp80* %274, i32 %275)
br label %295
277: ; preds = %263
%278 = load i32, i32* %23
%279 = icmp eq i32 %278, 4
br i1 %279, label %280, label %291
280: ; preds = %277
%281 = load x86_fp80*, x86_fp80** %14
%282 = load x86_fp80, x86_fp80* %15
%283 = load %struct.msa_letter_s*, %struct.msa_letter_s** %16
%284 = load i32, i32* %17
%285 = load i32, i32* %18
%286 = load i32, i32* %19
%287 = load i32, i32* %20
%288 = load x86_fp80*, x86_fp80** %21
%289 = load i32, i32* %22
%290 = call i32 @add_to_E_subst_mtx_dot_product_prior(x86_fp80* %281, x86_fp80 %282, %struct.msa_letter_s* %283, i32 %284, i32 %285, i32 %286, i32 %287, x86_fp80* %288, i32 %289)
br label %294
291: ; preds = %277
%292 = call i32 @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str, i64 0, i64 0))
%293 = call i32 @exit(i32 0)
unreachable
294: ; preds = %280
br label %295
295: ; preds = %294, %266
br label %296
296: ; preds = %295, %253
br label %297
297: ; preds = %296, %241
br label %298
298: ; preds = %297, %229
br label %299
299: ; preds = %298, %217
br label %300
300: ; preds = %299, %205
br label %301
301: ; preds = %300, %193
br label %302
302: ; preds = %301, %181
br label %303
303: ; preds = %302, %167
br label %304
304: ; preds = %303, %150
br label %305
305: ; preds = %304, %134
br label %306
306: ; preds = %305, %119
br label %307
307: ; preds = %306, %104
br label %308
308: ; preds = %307, %89
br label %309
309: ; preds = %308, %74
br label %310
310: ; preds = %309, %59
br label %311
311: ; preds = %310, %44
br label %312
312: ; preds = %311, %29
ret void
}

LLVM IR (-O2):
%struct.msa_letter_s = type { i32 }
@str = [35 x i8] c"Error: Unrecognized scoring method\00"
define void @add_to_E_multi(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7, i32 %8, i32 %9, i32 %10, i32 %11, x86_fp80* %12) {
%14 = icmp eq i32 %11, 2
br i1 %14, label %15, label %17
15: ; preds = %13
%16 = tail call i32 @add_to_E_continuous(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, x86_fp80* %12)
br label %93
17: ; preds = %13
%18 = icmp eq i32 %9, 1
%19 = icmp eq i32 %10, 0
%20 = and i1 %18, %19
br i1 %20, label %21, label %23
21: ; preds = %17
%22 = tail call i32 @add_to_E_dot_product_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
23: ; preds = %17
%24 = icmp eq i32 %9, 8
%25 = and i1 %24, %19
br i1 %25, label %26, label %28
26: ; preds = %23
%27 = tail call i32 @add_to_E_dot_product_picasso_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
28: ; preds = %23
%29 = icmp eq i32 %9, 6
%30 = and i1 %29, %19
br i1 %30, label %31, label %33
31: ; preds = %28
%32 = tail call i32 @add_to_E_picasso_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
33: ; preds = %28
%34 = icmp eq i32 %9, 7
%35 = and i1 %34, %19
br i1 %35, label %36, label %38
36: ; preds = %33
%37 = tail call i32 @add_to_E_picasso_sym_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
38: ; preds = %33
%39 = icmp eq i32 %9, 5
%40 = and i1 %39, %19
br i1 %40, label %41, label %43
41: ; preds = %38
%42 = tail call i32 @add_to_E_sjolander_score_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
43: ; preds = %38
%44 = icmp eq i32 %9, 9
%45 = and i1 %44, %19
br i1 %45, label %46, label %48
46: ; preds = %43
%47 = tail call i32 @add_to_E_sjolander_reversed_score_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
48: ; preds = %43
%49 = icmp eq i32 %9, 2
%50 = and i1 %49, %19
br i1 %50, label %51, label %53
51: ; preds = %48
%52 = tail call i32 @add_to_E_subst_mtx_product_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7)
br label %93
53: ; preds = %48
%54 = icmp eq i32 %9, 3
%55 = and i1 %54, %19
br i1 %55, label %56, label %58
56: ; preds = %53
%57 = tail call i32 @add_to_E_subst_mtx_dot_product_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7, i32 %8)
br label %93
58: ; preds = %53
%59 = icmp eq i32 %9, 4
%60 = and i1 %59, %19
br i1 %60, label %61, label %63
61: ; preds = %58
%62 = tail call i32 @add_to_E_subst_mtx_dot_product_prior_nr_occ(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7, i32 %8)
br label %93
63: ; preds = %58
br i1 %18, label %64, label %66
64: ; preds = %63
%65 = tail call i32 @add_to_E_dot_product(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
66: ; preds = %63
br i1 %24, label %67, label %69
67: ; preds = %66
%68 = tail call i32 @add_to_E_dot_product_picasso(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
69: ; preds = %66
br i1 %29, label %70, label %72
70: ; preds = %69
%71 = tail call i32 @add_to_E_picasso(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
72: ; preds = %69
br i1 %34, label %73, label %75
73: ; preds = %72
%74 = tail call i32 @add_to_E_picasso_sym(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
75: ; preds = %72
br i1 %39, label %76, label %78
76: ; preds = %75
%77 = tail call i32 @add_to_E_sjolander_score(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
78: ; preds = %75
br i1 %44, label %79, label %81
79: ; preds = %78
%80 = tail call i32 @add_to_E_sjolander_reversed_score(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6)
br label %93
81: ; preds = %78
br i1 %49, label %82, label %84
82: ; preds = %81
%83 = tail call i32 @add_to_E_subst_mtx_product(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7)
br label %93
84: ; preds = %81
br i1 %54, label %85, label %87
85: ; preds = %84
%86 = tail call i32 @add_to_E_subst_mtx_dot_product(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7, i32 %8)
br label %93
87: ; preds = %84
br i1 %59, label %88, label %90
88: ; preds = %87
%89 = tail call i32 @add_to_E_subst_mtx_dot_product_prior(x86_fp80* %0, x86_fp80 %1, %struct.msa_letter_s* %2, i32 %3, i32 %4, i32 %5, i32 %6, x86_fp80* %7, i32 %8)
br label %93
90: ; preds = %87
%91 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str, i64 0, i64 0))
%92 = tail call i32 @exit(i32 0)
unreachable
93: ; preds = %21, %31, %41, %51, %61, %67, %73, %79, %85, %88, %82, %76, %70, %64, %56, %46, %36, %26, %15
ret void
}