#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 */

/* Variables and functions */
scalar_t__ strchr(char *, char);
scalar_t__ strcmp(char *, char *);
scalar_t__ strstr(char *, char *);
char toupper(char);
double veclen(double *);
void single_BB_Hbond(long i, long j, long **seidx, char **AtomName, char *bseq,
                     double **xyz, long *Hyes) {
  double dd, dist, dtmp[4];
  long k, m, n, num_hbonds = 0;
  for (m = seidx[i][1]; m <= seidx[i][2]; m++) {
    if (strchr("P", AtomName[m][1]) || strchr("P", AtomName[m][3]))
      continue;
    if (strstr(AtomName[m], "'") && strcmp(AtomName[m], " O2'"))
      continue;
    if (toupper(bseq[i]) == 'A') {
      if (!strcmp(AtomName[m], " C4 ") || !strcmp(AtomName[m], " C5 ") ||
          !strcmp(AtomName[m], " C6 "))
        continue;
    } else if (toupper(bseq[i]) == 'G') {
      if (!strcmp(AtomName[m], " C4 ") || !strcmp(AtomName[m], " C5 ") ||
          !strcmp(AtomName[m], " C6 ") || !strcmp(AtomName[m], " C2 "))
        continue;
    } else if (toupper(bseq[i]) == 'U' || toupper(bseq[i]) == 'C' ||
               toupper(bseq[i]) == 'T') {
      if (!strcmp(AtomName[m], " C4 ") || !strcmp(AtomName[m], " C2 "))
        continue;
    }
    for (n = seidx[j][1]; n <= seidx[j][2]; n++) {
      if (strchr("P", AtomName[n][1]) || strchr("P", AtomName[n][3]))
        continue;
      if (strstr(AtomName[n], "'") && strcmp(AtomName[n], " O2'"))
        continue;
      if (toupper(bseq[j]) == 'A') {
        if (!strcmp(AtomName[n], " C4 ") || !strcmp(AtomName[n], " C5 ") ||
            !strcmp(AtomName[n], " C6 "))
          continue;
      } else if (toupper(bseq[j]) == 'G') {
        if (!strcmp(AtomName[n], " C4 ") || !strcmp(AtomName[n], " C5 ") ||
            !strcmp(AtomName[n], " C6 ") || !strcmp(AtomName[n], " C2 "))
          continue;
      } else if (toupper(bseq[j]) == 'U' || toupper(bseq[j]) == 'C' ||
                 toupper(bseq[j]) == 'T') {
        if (!strcmp(AtomName[n], " C4 ") || !strcmp(AtomName[n], " C2 "))
          continue;
      }
      if (AtomName[m][1] == 'C' && AtomName[n][1] == 'C')
        continue;
      if ((AtomName[m][1] == 'C' && AtomName[n][3] == '\'') ||
          (AtomName[n][1] == 'C' && AtomName[m][3] == '\''))
        continue;
      if (!strcmp(AtomName[m], " O2'") && !strcmp(AtomName[n], " O2'"))
        continue;
      if ((!strcmp(AtomName[m], " O2'") && AtomName[n][1] == 'C') ||
          (!strcmp(AtomName[n], " O2'") && AtomName[m][1] == 'C'))
        continue;
      if (AtomName[m][1] == 'C' || AtomName[n][1] == 'C') {
        dist = 3.6;
      } else if (!strcmp(AtomName[m], " O2'") || !strcmp(AtomName[n], " O2'"))
        dist = 3.4;
      for (k = 1; k <= 3; k++) {
        dtmp[k] = xyz[m][k] - xyz[n][k];
      }
      if ((dd = veclen(dtmp)) < dist) {
        *Hyes = 1;
      }
    }
  }
}


x86 assembly (clang, -O0):
<single_BB_Hbond>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movq   $0x0,-0x80(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x8(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x8(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
cmp    0x10(%rcx),%rax
jg     1992 <single_BB_Hbond+0x842>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
lea    0xe50(%rip),%rdi
movsbl 0x1(%rax),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
jne    11f9 <single_BB_Hbond+0xa9>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
lea    0xe2a(%rip),%rdi
movsbl 0x3(%rax),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     11fe <single_BB_Hbond+0xae>
jmp    1981 <single_BB_Hbond+0x831>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xe04(%rip),%rsi
call   1070 <strstr@plt>
cmp    $0x0,%rax
je     1247 <single_BB_Hbond+0xf7>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xddf(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     1247 <single_BB_Hbond+0xf7>
jmp    1981 <single_BB_Hbond+0x831>
mov    -0x28(%rbp),%rax
mov    -0x8(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x41,%eax
jne    12d4 <single_BB_Hbond+0x184>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xda0(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     12ca <single_BB_Hbond+0x17a>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xd83(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     12ca <single_BB_Hbond+0x17a>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xd66(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    12cf <single_BB_Hbond+0x17f>
jmp    1981 <single_BB_Hbond+0x831>
jmp    1432 <single_BB_Hbond+0x2e2>
mov    -0x28(%rbp),%rax
mov    -0x8(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x47,%eax
jne    1383 <single_BB_Hbond+0x233>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xd13(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     1379 <single_BB_Hbond+0x229>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xcf6(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     1379 <single_BB_Hbond+0x229>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xcd9(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     1379 <single_BB_Hbond+0x229>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xcbc(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    137e <single_BB_Hbond+0x22e>
jmp    1981 <single_BB_Hbond+0x831>
jmp    142d <single_BB_Hbond+0x2dd>
mov    -0x28(%rbp),%rax
mov    -0x8(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x55,%eax
je     13da <single_BB_Hbond+0x28a>
mov    -0x28(%rbp),%rax
mov    -0x8(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x43,%eax
je     13da <single_BB_Hbond+0x28a>
mov    -0x28(%rbp),%rax
mov    -0x8(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x54,%eax
jne    1428 <single_BB_Hbond+0x2d8>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xc2a(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     141e <single_BB_Hbond+0x2ce>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xc17(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    1423 <single_BB_Hbond+0x2d3>
jmp    1981 <single_BB_Hbond+0x831>
jmp    1428 <single_BB_Hbond+0x2d8>
jmp    142d <single_BB_Hbond+0x2dd>
jmp    1432 <single_BB_Hbond+0x2e2>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    -0x10(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
cmp    0x10(%rcx),%rax
jg     197c <single_BB_Hbond+0x82c>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
lea    0xb9d(%rip),%rdi
movsbl 0x1(%rax),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
jne    14ac <single_BB_Hbond+0x35c>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
lea    0xb77(%rip),%rdi
movsbl 0x3(%rax),%esi
call   1040 <strchr@plt>
cmp    $0x0,%rax
je     14b1 <single_BB_Hbond+0x361>
jmp    196b <single_BB_Hbond+0x81b>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xb51(%rip),%rsi
call   1070 <strstr@plt>
cmp    $0x0,%rax
je     14fa <single_BB_Hbond+0x3aa>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xb2c(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     14fa <single_BB_Hbond+0x3aa>
jmp    196b <single_BB_Hbond+0x81b>
mov    -0x28(%rbp),%rax
mov    -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x41,%eax
jne    1587 <single_BB_Hbond+0x437>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xaed(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     157d <single_BB_Hbond+0x42d>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xad0(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     157d <single_BB_Hbond+0x42d>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xab3(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    1582 <single_BB_Hbond+0x432>
jmp    196b <single_BB_Hbond+0x81b>
jmp    16e5 <single_BB_Hbond+0x595>
mov    -0x28(%rbp),%rax
mov    -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x47,%eax
jne    1636 <single_BB_Hbond+0x4e6>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xa60(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     162c <single_BB_Hbond+0x4dc>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xa43(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     162c <single_BB_Hbond+0x4dc>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xa26(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     162c <single_BB_Hbond+0x4dc>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xa09(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    1631 <single_BB_Hbond+0x4e1>
jmp    196b <single_BB_Hbond+0x81b>
jmp    16e0 <single_BB_Hbond+0x590>
mov    -0x28(%rbp),%rax
mov    -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x55,%eax
je     168d <single_BB_Hbond+0x53d>
mov    -0x28(%rbp),%rax
mov    -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x43,%eax
je     168d <single_BB_Hbond+0x53d>
mov    -0x28(%rbp),%rax
mov    -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
movsbl %al,%eax
cmp    $0x54,%eax
jne    16db <single_BB_Hbond+0x58b>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x977(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     16d1 <single_BB_Hbond+0x581>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x964(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    16d6 <single_BB_Hbond+0x586>
jmp    196b <single_BB_Hbond+0x81b>
jmp    16db <single_BB_Hbond+0x58b>
jmp    16e0 <single_BB_Hbond+0x590>
jmp    16e5 <single_BB_Hbond+0x595>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    171c <single_BB_Hbond+0x5cc>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    171c <single_BB_Hbond+0x5cc>
jmp    196b <single_BB_Hbond+0x81b>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    174e <single_BB_Hbond+0x5fe>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x3(%rax),%eax
cmp    $0x27,%eax
je     1780 <single_BB_Hbond+0x630>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    1785 <single_BB_Hbond+0x635>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x3(%rax),%eax
cmp    $0x27,%eax
jne    1785 <single_BB_Hbond+0x635>
jmp    196b <single_BB_Hbond+0x81b>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x87a(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    17ce <single_BB_Hbond+0x67e>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x858(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    17ce <single_BB_Hbond+0x67e>
jmp    196b <single_BB_Hbond+0x81b>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x831(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    1809 <single_BB_Hbond+0x6b9>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
je     1844 <single_BB_Hbond+0x6f4>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x7f6(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    1849 <single_BB_Hbond+0x6f9>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    1849 <single_BB_Hbond+0x6f9>
jmp    196b <single_BB_Hbond+0x81b>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
je     187b <single_BB_Hbond+0x72b>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    188d <single_BB_Hbond+0x73d>
movsd  0x785(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    18e3 <single_BB_Hbond+0x793>
mov    -0x20(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x772(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
je     18d1 <single_BB_Hbond+0x781>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0x750(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%rax
jne    18de <single_BB_Hbond+0x78e>
movsd  0x727(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    18e3 <single_BB_Hbond+0x793>
movq   $0x1,-0x68(%rbp)
cmpq   $0x3,-0x68(%rbp)
jg     193b <single_BB_Hbond+0x7eb>
mov    -0x30(%rbp),%rax
mov    -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x68(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x78(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x68(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x68(%rbp),%rax
movsd  %xmm0,-0x60(%rbp,%rax,8)
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    18eb <single_BB_Hbond+0x79b>
lea    -0x60(%rbp),%rdi
call   1060 <veclen@plt>
movaps %xmm0,%xmm1
movsd  %xmm1,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1966 <single_BB_Hbond+0x816>
mov    0x10(%rbp),%rax
movq   $0x1,(%rax)
jmp    196b <single_BB_Hbond+0x81b>
mov    -0x78(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x78(%rbp)
jmp    1446 <single_BB_Hbond+0x2f6>
jmp    1981 <single_BB_Hbond+0x831>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1193 <single_BB_Hbond+0x43>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<single_BB_Hbond>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %r9,0x28(%rsp)
mov    %rsi,0x8(%rsp)
mov    %rdx,0x20(%rsp)
mov    (%rdx,%rdi,8),%rax
mov    0x8(%rax),%r15
cmp    0x10(%rax),%r15
jle    118a <single_BB_Hbond+0x3a>
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %r8,%rbp
mov    %rcx,%r12
mov    %rdi,%r14
lea    0xe76(%rip),%rbx
mov    %r8,0x18(%rsp)
nop
mov    (%r12,%r15,8),%rax
movsbl 0x1(%rax),%esi
mov    %rbx,%rdi
call   1040 <strchr@plt>
test   %rax,%rax
jne    11ca <single_BB_Hbond+0x7a>
mov    (%r12,%r15,8),%rax
movsbl 0x3(%rax),%esi
mov    %rbx,%rdi
call   1040 <strchr@plt>
test   %rax,%rax
je     11f8 <single_BB_Hbond+0xa8>
movsd  (%rsp),%xmm0
lea    0x1(%r15),%rax
mov    0x20(%rsp),%rcx
mov    (%rcx,%r14,8),%rcx
movsd  %xmm0,(%rsp)
cmp    0x10(%rcx),%r15
mov    %rax,%r15
mov    0x18(%rsp),%rbp
lea    0xe1c(%rip),%rbx
jl     11a0 <single_BB_Hbond+0x50>
jmp    117b <single_BB_Hbond+0x2b>
mov    (%r12,%r15,8),%rdi
lea    0xe12(%rip),%rsi
call   1070 <strstr@plt>
test   %rax,%rax
je     1222 <single_BB_Hbond+0xd2>
mov    (%r12,%r15,8),%rdi
lea    0xdfa(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
jne    11ca <single_BB_Hbond+0x7a>
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x41,%al
jne    126f <single_BB_Hbond+0x11f>
mov    (%r12,%r15,8),%rdi
lea    0xddb(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     11ca <single_BB_Hbond+0x7a>
mov    (%r12,%r15,8),%rdi
lea    0xdcb(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     11ca <single_BB_Hbond+0x7a>
mov    (%r12,%r15,8),%rdi
lea    0xdb7(%rip),%rsi
jmp    130e <single_BB_Hbond+0x1be>
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x47,%al
jne    12bd <single_BB_Hbond+0x16d>
mov    (%r12,%r15,8),%rdi
lea    0xd8e(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     11ca <single_BB_Hbond+0x7a>
mov    (%r12,%r15,8),%rdi
lea    0xd7a(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     11ca <single_BB_Hbond+0x7a>
mov    (%r12,%r15,8),%rdi
lea    0xd66(%rip),%rsi
jmp    12f5 <single_BB_Hbond+0x1a5>
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x55,%al
je     12ea <single_BB_Hbond+0x19a>
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x43,%al
je     12ea <single_BB_Hbond+0x19a>
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x54,%al
jne    131c <single_BB_Hbond+0x1cc>
mov    (%r12,%r15,8),%rdi
lea    0xd22(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     11ca <single_BB_Hbond+0x7a>
mov    (%r12,%r15,8),%rdi
lea    0xd18(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     11ca <single_BB_Hbond+0x7a>
mov    0x8(%rsp),%rax
mov    0x20(%rsp),%rcx
mov    (%rcx,%rax,8),%rax
mov    0x8(%rax),%r13
cmp    0x10(%rax),%r13
jg     11ca <single_BB_Hbond+0x7a>
add    $0xffffffffffffffff,%r13
mov    %r14,0x10(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x8(%r12,%r13,8),%rax
movsbl 0x1(%rax),%esi
lea    0xcb0(%rip),%rbx
mov    %rbx,%rdi
call   1040 <strchr@plt>
test   %rax,%rax
jne    1383 <single_BB_Hbond+0x233>
mov    0x8(%r12,%r13,8),%rax
movsbl 0x3(%rax),%esi
mov    %rbx,%rdi
call   1040 <strchr@plt>
test   %rax,%rax
je     13aa <single_BB_Hbond+0x25a>
movsd  (%rsp),%xmm0
mov    0x8(%rsp),%rax
mov    0x20(%rsp),%rcx
mov    (%rcx,%rax,8),%rax
add    $0x1,%r13
movsd  %xmm0,(%rsp)
cmp    0x10(%rax),%r13
jl     1350 <single_BB_Hbond+0x200>
jmp    11cf <single_BB_Hbond+0x7f>
mov    0x8(%r12,%r13,8),%rdi
lea    0xc5f(%rip),%rsi
call   1070 <strstr@plt>
test   %rax,%rax
je     13d6 <single_BB_Hbond+0x286>
mov    0x8(%r12,%r13,8),%rdi
lea    0xc46(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
jne    1383 <single_BB_Hbond+0x233>
mov    0x18(%rsp),%rbp
mov    0x8(%rsp),%r14
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x41,%al
jne    144e <single_BB_Hbond+0x2fe>
mov    0x8(%r12,%r13,8),%rdi
lea    0xc1c(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     14b0 <single_BB_Hbond+0x360>
mov    0x8(%r12,%r13,8),%rdi
lea    0xc07(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     14b0 <single_BB_Hbond+0x360>
mov    0x8(%r12,%r13,8),%rdi
lea    0xbf2(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
mov    0x10(%rsp),%r14
lea    0xbcf(%rip),%rbx
jne    1541 <single_BB_Hbond+0x3f1>
jmp    1383 <single_BB_Hbond+0x233>
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x47,%al
jne    14c4 <single_BB_Hbond+0x374>
mov    0x8(%r12,%r13,8),%rdi
lea    0xbae(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     14b0 <single_BB_Hbond+0x360>
mov    0x8(%r12,%r13,8),%rdi
lea    0xb9d(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     14b0 <single_BB_Hbond+0x360>
mov    0x8(%r12,%r13,8),%rdi
lea    0xb8c(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
mov    0x10(%rsp),%r14
lea    0xb69(%rip),%rbx
jne    1527 <single_BB_Hbond+0x3d7>
jmp    1383 <single_BB_Hbond+0x233>
movsd  (%rsp),%xmm0
mov    0x8(%rsp),%rax
mov    0x10(%rsp),%r14
jmp    138d <single_BB_Hbond+0x23d>
movsbl 0x0(%rbp,%r14,1),%edi
call   1030 <toupper@plt>
cmp    $0x55,%al
mov    0x10(%rsp),%r14
lea    0xb35(%rip),%rbx
je     150d <single_BB_Hbond+0x3bd>
mov    0x18(%rsp),%rax
mov    0x8(%rsp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
cmp    $0x43,%al
je     150d <single_BB_Hbond+0x3bd>
mov    0x18(%rsp),%rax
mov    0x8(%rsp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <toupper@plt>
cmp    $0x54,%al
jne    1541 <single_BB_Hbond+0x3f1>
mov    0x8(%r12,%r13,8),%rdi
lea    0xafe(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     1383 <single_BB_Hbond+0x233>
mov    0x8(%r12,%r13,8),%rdi
lea    0xaf3(%rip),%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     1383 <single_BB_Hbond+0x233>
mov    (%r12,%r15,8),%rdi
cmpb   $0x43,0x1(%rdi)
mov    0x8(%r12,%r13,8),%rax
movzbl 0x1(%rax),%ecx
jne    1569 <single_BB_Hbond+0x419>
cmp    $0x43,%cl
je     1383 <single_BB_Hbond+0x233>
cmpb   $0x27,0x3(%rax)
je     1383 <single_BB_Hbond+0x233>
jmp    1578 <single_BB_Hbond+0x428>
cmp    $0x43,%cl
jne    1578 <single_BB_Hbond+0x428>
cmpb   $0x27,0x3(%rdi)
je     1383 <single_BB_Hbond+0x233>
mov    %rbx,%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
jne    159b <single_BB_Hbond+0x44b>
mov    0x8(%r12,%r13,8),%rdi
mov    %rbx,%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     1383 <single_BB_Hbond+0x233>
mov    (%r12,%r15,8),%rdi
mov    %rbx,%rsi
call   1050 <strcmp@plt>
mov    0x8(%r12,%r13,8),%rdi
test   %rax,%rax
jne    15bb <single_BB_Hbond+0x46b>
cmpb   $0x43,0x1(%rdi)
je     1383 <single_BB_Hbond+0x233>
mov    %rbx,%rsi
call   1050 <strcmp@plt>
mov    (%r12,%r15,8),%rdi
movzbl 0x1(%rdi),%ecx
test   %rax,%rax
je     15df <single_BB_Hbond+0x48f>
movsd  0xa28(%rip),%xmm0
cmp    $0x43,%cl
jne    15e8 <single_BB_Hbond+0x498>
jmp    1627 <single_BB_Hbond+0x4d7>
cmp    $0x43,%cl
je     1383 <single_BB_Hbond+0x233>
mov    0x8(%r12,%r13,8),%rax
cmpb   $0x43,0x1(%rax)
movsd  0xa07(%rip),%xmm0
je     1627 <single_BB_Hbond+0x4d7>
mov    %rbx,%rsi
call   1050 <strcmp@plt>
test   %rax,%rax
je     161f <single_BB_Hbond+0x4cf>
mov    0x8(%r12,%r13,8),%rdi
mov    %rbx,%rsi
call   1050 <strcmp@plt>
movsd  (%rsp),%xmm0
test   %rax,%rax
jne    1627 <single_BB_Hbond+0x4d7>
movsd  0x9e1(%rip),%xmm0
movsd  %xmm0,(%rsp)
mov    0x28(%rsp),%rcx
mov    (%rcx,%r15,8),%rax
mov    0x8(%rcx,%r13,8),%rcx
movupd 0x8(%rax),%xmm0
movupd 0x8(%rcx),%xmm1
subpd  %xmm1,%xmm0
movupd %xmm0,0x38(%rsp)
movsd  0x18(%rax),%xmm0
subsd  0x18(%rcx),%xmm0
movsd  %xmm0,0x48(%rsp)
lea    0x30(%rsp),%rdi
call   1060 <veclen@plt>
movsd  (%rsp),%xmm1
ucomisd %xmm0,%xmm1
movsd  (%rsp),%xmm0
jbe    1388 <single_BB_Hbond+0x238>
mov    0x90(%rsp),%rax
movq   $0x1,(%rax)
jmp    1388 <single_BB_Hbond+0x238>

LLVM IR (-O0):
@.str = [2 x i8] c"P\00"
@.str.1 = [2 x i8] c"'\00"
@.str.2 = [5 x i8] c" O2'\00"
@.str.3 = [5 x i8] c" C4 \00"
@.str.4 = [5 x i8] c" C5 \00"
@.str.5 = [5 x i8] c" C6 \00"
@.str.6 = [5 x i8] c" C2 \00"
define void @single_BB_Hbond(i64 %0, i64 %1, i64** %2, i8** %3, i8* %4, double** %5, i64* %6) {
%8 = alloca i64
%9 = alloca i64
%10 = alloca i64**
%11 = alloca i8**
%12 = alloca i8*
%13 = alloca double**
%14 = alloca i64*
%15 = alloca double
%16 = alloca double
%17 = alloca [4 x double]
%18 = alloca i64
%19 = alloca i64
%20 = alloca i64
%21 = alloca i64
store i64 %0, i64* %8
store i64 %1, i64* %9
store i64** %2, i64*** %10
store i8** %3, i8*** %11
store i8* %4, i8** %12
store double** %5, double*** %13
store i64* %6, i64** %14
store i64 0, i64* %21
%22 = load i64**, i64*** %10
%23 = load i64, i64* %8
%24 = getelementptr inbounds i64*, i64** %22, i64 %23
%25 = load i64*, i64** %24
%26 = getelementptr inbounds i64, i64* %25, i64 1
%27 = load i64, i64* %26
store i64 %27, i64* %19
br label %28
28: ; preds = %519, %7
%29 = load i64, i64* %19
%30 = load i64**, i64*** %10
%31 = load i64, i64* %8
%32 = getelementptr inbounds i64*, i64** %30, i64 %31
%33 = load i64*, i64** %32
%34 = getelementptr inbounds i64, i64* %33, i64 2
%35 = load i64, i64* %34
%36 = icmp sle i64 %29, %35
br i1 %36, label %37, label %522
37: ; preds = %28
%38 = load i8**, i8*** %11
%39 = load i64, i64* %19
%40 = getelementptr inbounds i8*, i8** %38, i64 %39
%41 = load i8*, i8** %40
%42 = getelementptr inbounds i8, i8* %41, i64 1
%43 = load i8, i8* %42
%44 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %43)
%45 = icmp ne i64 %44, 0
br i1 %45, label %55, label %46
46: ; preds = %37
%47 = load i8**, i8*** %11
%48 = load i64, i64* %19
%49 = getelementptr inbounds i8*, i8** %47, i64 %48
%50 = load i8*, i8** %49
%51 = getelementptr inbounds i8, i8* %50, i64 3
%52 = load i8, i8* %51
%53 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %52)
%54 = icmp ne i64 %53, 0
br i1 %54, label %55, label %56
55: ; preds = %46, %37
br label %519
56: ; preds = %46
%57 = load i8**, i8*** %11
%58 = load i64, i64* %19
%59 = getelementptr inbounds i8*, i8** %57, i64 %58
%60 = load i8*, i8** %59
%61 = call i64 @strstr(i8* %60, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%62 = icmp ne i64 %61, 0
br i1 %62, label %63, label %71
63: ; preds = %56
%64 = load i8**, i8*** %11
%65 = load i64, i64* %19
%66 = getelementptr inbounds i8*, i8** %64, i64 %65
%67 = load i8*, i8** %66
%68 = call i64 @strcmp(i8* %67, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%69 = icmp ne i64 %68, 0
br i1 %69, label %70, label %71
70: ; preds = %63
br label %519
71: ; preds = %63, %56
%72 = load i8*, i8** %12
%73 = load i64, i64* %8
%74 = getelementptr inbounds i8, i8* %72, i64 %73
%75 = load i8, i8* %74
%76 = call signext i8 @toupper(i8 signext %75)
%77 = sext i8 %76 to i32
%78 = icmp eq i32 %77, 65
br i1 %78, label %79, label %102
79: ; preds = %71
%80 = load i8**, i8*** %11
%81 = load i64, i64* %19
%82 = getelementptr inbounds i8*, i8** %80, i64 %81
%83 = load i8*, i8** %82
%84 = call i64 @strcmp(i8* %83, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%85 = icmp ne i64 %84, 0
br i1 %85, label %86, label %100
86: ; preds = %79
%87 = load i8**, i8*** %11
%88 = load i64, i64* %19
%89 = getelementptr inbounds i8*, i8** %87, i64 %88
%90 = load i8*, i8** %89
%91 = call i64 @strcmp(i8* %90, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%92 = icmp ne i64 %91, 0
br i1 %92, label %93, label %100
93: ; preds = %86
%94 = load i8**, i8*** %11
%95 = load i64, i64* %19
%96 = getelementptr inbounds i8*, i8** %94, i64 %95
%97 = load i8*, i8** %96
%98 = call i64 @strcmp(i8* %97, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%99 = icmp ne i64 %98, 0
br i1 %99, label %101, label %100
100: ; preds = %93, %86, %79
br label %519
101: ; preds = %93
br label %182
102: ; preds = %71
%103 = load i8*, i8** %12
%104 = load i64, i64* %8
%105 = getelementptr inbounds i8, i8* %103, i64 %104
%106 = load i8, i8* %105
%107 = call signext i8 @toupper(i8 signext %106)
%108 = sext i8 %107 to i32
%109 = icmp eq i32 %108, 71
br i1 %109, label %110, label %140
110: ; preds = %102
%111 = load i8**, i8*** %11
%112 = load i64, i64* %19
%113 = getelementptr inbounds i8*, i8** %111, i64 %112
%114 = load i8*, i8** %113
%115 = call i64 @strcmp(i8* %114, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%116 = icmp ne i64 %115, 0
br i1 %116, label %117, label %138
117: ; preds = %110
%118 = load i8**, i8*** %11
%119 = load i64, i64* %19
%120 = getelementptr inbounds i8*, i8** %118, i64 %119
%121 = load i8*, i8** %120
%122 = call i64 @strcmp(i8* %121, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%123 = icmp ne i64 %122, 0
br i1 %123, label %124, label %138
124: ; preds = %117
%125 = load i8**, i8*** %11
%126 = load i64, i64* %19
%127 = getelementptr inbounds i8*, i8** %125, i64 %126
%128 = load i8*, i8** %127
%129 = call i64 @strcmp(i8* %128, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%130 = icmp ne i64 %129, 0
br i1 %130, label %131, label %138
131: ; preds = %124
%132 = load i8**, i8*** %11
%133 = load i64, i64* %19
%134 = getelementptr inbounds i8*, i8** %132, i64 %133
%135 = load i8*, i8** %134
%136 = call i64 @strcmp(i8* %135, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%137 = icmp ne i64 %136, 0
br i1 %137, label %139, label %138
138: ; preds = %131, %124, %117, %110
br label %519
139: ; preds = %131
br label %181
140: ; preds = %102
%141 = load i8*, i8** %12
%142 = load i64, i64* %8
%143 = getelementptr inbounds i8, i8* %141, i64 %142
%144 = load i8, i8* %143
%145 = call signext i8 @toupper(i8 signext %144)
%146 = sext i8 %145 to i32
%147 = icmp eq i32 %146, 85
br i1 %147, label %164, label %148
148: ; preds = %140
%149 = load i8*, i8** %12
%150 = load i64, i64* %8
%151 = getelementptr inbounds i8, i8* %149, i64 %150
%152 = load i8, i8* %151
%153 = call signext i8 @toupper(i8 signext %152)
%154 = sext i8 %153 to i32
%155 = icmp eq i32 %154, 67
br i1 %155, label %164, label %156
156: ; preds = %148
%157 = load i8*, i8** %12
%158 = load i64, i64* %8
%159 = getelementptr inbounds i8, i8* %157, i64 %158
%160 = load i8, i8* %159
%161 = call signext i8 @toupper(i8 signext %160)
%162 = sext i8 %161 to i32
%163 = icmp eq i32 %162, 84
br i1 %163, label %164, label %180
164: ; preds = %156, %148, %140
%165 = load i8**, i8*** %11
%166 = load i64, i64* %19
%167 = getelementptr inbounds i8*, i8** %165, i64 %166
%168 = load i8*, i8** %167
%169 = call i64 @strcmp(i8* %168, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%170 = icmp ne i64 %169, 0
br i1 %170, label %171, label %178
171: ; preds = %164
%172 = load i8**, i8*** %11
%173 = load i64, i64* %19
%174 = getelementptr inbounds i8*, i8** %172, i64 %173
%175 = load i8*, i8** %174
%176 = call i64 @strcmp(i8* %175, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%177 = icmp ne i64 %176, 0
br i1 %177, label %179, label %178
178: ; preds = %171, %164
br label %519
179: ; preds = %171
br label %180
180: ; preds = %179, %156
br label %181
181: ; preds = %180, %139
br label %182
182: ; preds = %181, %101
%183 = load i64**, i64*** %10
%184 = load i64, i64* %9
%185 = getelementptr inbounds i64*, i64** %183, i64 %184
%186 = load i64*, i64** %185
%187 = getelementptr inbounds i64, i64* %186, i64 1
%188 = load i64, i64* %187
store i64 %188, i64* %20
br label %189
189: ; preds = %515, %182
%190 = load i64, i64* %20
%191 = load i64**, i64*** %10
%192 = load i64, i64* %9
%193 = getelementptr inbounds i64*, i64** %191, i64 %192
%194 = load i64*, i64** %193
%195 = getelementptr inbounds i64, i64* %194, i64 2
%196 = load i64, i64* %195
%197 = icmp sle i64 %190, %196
br i1 %197, label %198, label %518
198: ; preds = %189
%199 = load i8**, i8*** %11
%200 = load i64, i64* %20
%201 = getelementptr inbounds i8*, i8** %199, i64 %200
%202 = load i8*, i8** %201
%203 = getelementptr inbounds i8, i8* %202, i64 1
%204 = load i8, i8* %203
%205 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %204)
%206 = icmp ne i64 %205, 0
br i1 %206, label %216, label %207
207: ; preds = %198
%208 = load i8**, i8*** %11
%209 = load i64, i64* %20
%210 = getelementptr inbounds i8*, i8** %208, i64 %209
%211 = load i8*, i8** %210
%212 = getelementptr inbounds i8, i8* %211, i64 3
%213 = load i8, i8* %212
%214 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %213)
%215 = icmp ne i64 %214, 0
br i1 %215, label %216, label %217
216: ; preds = %207, %198
br label %515
217: ; preds = %207
%218 = load i8**, i8*** %11
%219 = load i64, i64* %20
%220 = getelementptr inbounds i8*, i8** %218, i64 %219
%221 = load i8*, i8** %220
%222 = call i64 @strstr(i8* %221, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%223 = icmp ne i64 %222, 0
br i1 %223, label %224, label %232
224: ; preds = %217
%225 = load i8**, i8*** %11
%226 = load i64, i64* %20
%227 = getelementptr inbounds i8*, i8** %225, i64 %226
%228 = load i8*, i8** %227
%229 = call i64 @strcmp(i8* %228, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%230 = icmp ne i64 %229, 0
br i1 %230, label %231, label %232
231: ; preds = %224
br label %515
232: ; preds = %224, %217
%233 = load i8*, i8** %12
%234 = load i64, i64* %9
%235 = getelementptr inbounds i8, i8* %233, i64 %234
%236 = load i8, i8* %235
%237 = call signext i8 @toupper(i8 signext %236)
%238 = sext i8 %237 to i32
%239 = icmp eq i32 %238, 65
br i1 %239, label %240, label %263
240: ; preds = %232
%241 = load i8**, i8*** %11
%242 = load i64, i64* %20
%243 = getelementptr inbounds i8*, i8** %241, i64 %242
%244 = load i8*, i8** %243
%245 = call i64 @strcmp(i8* %244, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%246 = icmp ne i64 %245, 0
br i1 %246, label %247, label %261
247: ; preds = %240
%248 = load i8**, i8*** %11
%249 = load i64, i64* %20
%250 = getelementptr inbounds i8*, i8** %248, i64 %249
%251 = load i8*, i8** %250
%252 = call i64 @strcmp(i8* %251, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%253 = icmp ne i64 %252, 0
br i1 %253, label %254, label %261
254: ; preds = %247
%255 = load i8**, i8*** %11
%256 = load i64, i64* %20
%257 = getelementptr inbounds i8*, i8** %255, i64 %256
%258 = load i8*, i8** %257
%259 = call i64 @strcmp(i8* %258, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%260 = icmp ne i64 %259, 0
br i1 %260, label %262, label %261
261: ; preds = %254, %247, %240
br label %515
262: ; preds = %254
br label %343
263: ; preds = %232
%264 = load i8*, i8** %12
%265 = load i64, i64* %9
%266 = getelementptr inbounds i8, i8* %264, i64 %265
%267 = load i8, i8* %266
%268 = call signext i8 @toupper(i8 signext %267)
%269 = sext i8 %268 to i32
%270 = icmp eq i32 %269, 71
br i1 %270, label %271, label %301
271: ; preds = %263
%272 = load i8**, i8*** %11
%273 = load i64, i64* %20
%274 = getelementptr inbounds i8*, i8** %272, i64 %273
%275 = load i8*, i8** %274
%276 = call i64 @strcmp(i8* %275, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%277 = icmp ne i64 %276, 0
br i1 %277, label %278, label %299
278: ; preds = %271
%279 = load i8**, i8*** %11
%280 = load i64, i64* %20
%281 = getelementptr inbounds i8*, i8** %279, i64 %280
%282 = load i8*, i8** %281
%283 = call i64 @strcmp(i8* %282, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%284 = icmp ne i64 %283, 0
br i1 %284, label %285, label %299
285: ; preds = %278
%286 = load i8**, i8*** %11
%287 = load i64, i64* %20
%288 = getelementptr inbounds i8*, i8** %286, i64 %287
%289 = load i8*, i8** %288
%290 = call i64 @strcmp(i8* %289, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%291 = icmp ne i64 %290, 0
br i1 %291, label %292, label %299
292: ; preds = %285
%293 = load i8**, i8*** %11
%294 = load i64, i64* %20
%295 = getelementptr inbounds i8*, i8** %293, i64 %294
%296 = load i8*, i8** %295
%297 = call i64 @strcmp(i8* %296, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%298 = icmp ne i64 %297, 0
br i1 %298, label %300, label %299
299: ; preds = %292, %285, %278, %271
br label %515
300: ; preds = %292
br label %342
301: ; preds = %263
%302 = load i8*, i8** %12
%303 = load i64, i64* %9
%304 = getelementptr inbounds i8, i8* %302, i64 %303
%305 = load i8, i8* %304
%306 = call signext i8 @toupper(i8 signext %305)
%307 = sext i8 %306 to i32
%308 = icmp eq i32 %307, 85
br i1 %308, label %325, label %309
309: ; preds = %301
%310 = load i8*, i8** %12
%311 = load i64, i64* %9
%312 = getelementptr inbounds i8, i8* %310, i64 %311
%313 = load i8, i8* %312
%314 = call signext i8 @toupper(i8 signext %313)
%315 = sext i8 %314 to i32
%316 = icmp eq i32 %315, 67
br i1 %316, label %325, label %317
317: ; preds = %309
%318 = load i8*, i8** %12
%319 = load i64, i64* %9
%320 = getelementptr inbounds i8, i8* %318, i64 %319
%321 = load i8, i8* %320
%322 = call signext i8 @toupper(i8 signext %321)
%323 = sext i8 %322 to i32
%324 = icmp eq i32 %323, 84
br i1 %324, label %325, label %341
325: ; preds = %317, %309, %301
%326 = load i8**, i8*** %11
%327 = load i64, i64* %20
%328 = getelementptr inbounds i8*, i8** %326, i64 %327
%329 = load i8*, i8** %328
%330 = call i64 @strcmp(i8* %329, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%331 = icmp ne i64 %330, 0
br i1 %331, label %332, label %339
332: ; preds = %325
%333 = load i8**, i8*** %11
%334 = load i64, i64* %20
%335 = getelementptr inbounds i8*, i8** %333, i64 %334
%336 = load i8*, i8** %335
%337 = call i64 @strcmp(i8* %336, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%338 = icmp ne i64 %337, 0
br i1 %338, label %340, label %339
339: ; preds = %332, %325
br label %515
340: ; preds = %332
br label %341
341: ; preds = %340, %317
br label %342
342: ; preds = %341, %300
br label %343
343: ; preds = %342, %262
%344 = load i8**, i8*** %11
%345 = load i64, i64* %19
%346 = getelementptr inbounds i8*, i8** %344, i64 %345
%347 = load i8*, i8** %346
%348 = getelementptr inbounds i8, i8* %347, i64 1
%349 = load i8, i8* %348
%350 = sext i8 %349 to i32
%351 = icmp eq i32 %350, 67
br i1 %351, label %352, label %362
352: ; preds = %343
%353 = load i8**, i8*** %11
%354 = load i64, i64* %20
%355 = getelementptr inbounds i8*, i8** %353, i64 %354
%356 = load i8*, i8** %355
%357 = getelementptr inbounds i8, i8* %356, i64 1
%358 = load i8, i8* %357
%359 = sext i8 %358 to i32
%360 = icmp eq i32 %359, 67
br i1 %360, label %361, label %362
361: ; preds = %352
br label %515
362: ; preds = %352, %343
%363 = load i8**, i8*** %11
%364 = load i64, i64* %19
%365 = getelementptr inbounds i8*, i8** %363, i64 %364
%366 = load i8*, i8** %365
%367 = getelementptr inbounds i8, i8* %366, i64 1
%368 = load i8, i8* %367
%369 = sext i8 %368 to i32
%370 = icmp eq i32 %369, 67
br i1 %370, label %371, label %380
371: ; preds = %362
%372 = load i8**, i8*** %11
%373 = load i64, i64* %20
%374 = getelementptr inbounds i8*, i8** %372, i64 %373
%375 = load i8*, i8** %374
%376 = getelementptr inbounds i8, i8* %375, i64 3
%377 = load i8, i8* %376
%378 = sext i8 %377 to i32
%379 = icmp eq i32 %378, 39
br i1 %379, label %398, label %380
380: ; preds = %371, %362
%381 = load i8**, i8*** %11
%382 = load i64, i64* %20
%383 = getelementptr inbounds i8*, i8** %381, i64 %382
%384 = load i8*, i8** %383
%385 = getelementptr inbounds i8, i8* %384, i64 1
%386 = load i8, i8* %385
%387 = sext i8 %386 to i32
%388 = icmp eq i32 %387, 67
br i1 %388, label %389, label %399
389: ; preds = %380
%390 = load i8**, i8*** %11
%391 = load i64, i64* %19
%392 = getelementptr inbounds i8*, i8** %390, i64 %391
%393 = load i8*, i8** %392
%394 = getelementptr inbounds i8, i8* %393, i64 3
%395 = load i8, i8* %394
%396 = sext i8 %395 to i32
%397 = icmp eq i32 %396, 39
br i1 %397, label %398, label %399
398: ; preds = %389, %371
br label %515
399: ; preds = %389, %380
%400 = load i8**, i8*** %11
%401 = load i64, i64* %19
%402 = getelementptr inbounds i8*, i8** %400, i64 %401
%403 = load i8*, i8** %402
%404 = call i64 @strcmp(i8* %403, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%405 = icmp ne i64 %404, 0
br i1 %405, label %414, label %406
406: ; preds = %399
%407 = load i8**, i8*** %11
%408 = load i64, i64* %20
%409 = getelementptr inbounds i8*, i8** %407, i64 %408
%410 = load i8*, i8** %409
%411 = call i64 @strcmp(i8* %410, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%412 = icmp ne i64 %411, 0
br i1 %412, label %414, label %413
413: ; preds = %406
br label %515
414: ; preds = %406, %399
%415 = load i8**, i8*** %11
%416 = load i64, i64* %19
%417 = getelementptr inbounds i8*, i8** %415, i64 %416
%418 = load i8*, i8** %417
%419 = call i64 @strcmp(i8* %418, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%420 = icmp ne i64 %419, 0
br i1 %420, label %430, label %421
421: ; preds = %414
%422 = load i8**, i8*** %11
%423 = load i64, i64* %20
%424 = getelementptr inbounds i8*, i8** %422, i64 %423
%425 = load i8*, i8** %424
%426 = getelementptr inbounds i8, i8* %425, i64 1
%427 = load i8, i8* %426
%428 = sext i8 %427 to i32
%429 = icmp eq i32 %428, 67
br i1 %429, label %446, label %430
430: ; preds = %421, %414
%431 = load i8**, i8*** %11
%432 = load i64, i64* %20
%433 = getelementptr inbounds i8*, i8** %431, i64 %432
%434 = load i8*, i8** %433
%435 = call i64 @strcmp(i8* %434, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%436 = icmp ne i64 %435, 0
br i1 %436, label %447, label %437
437: ; preds = %430
%438 = load i8**, i8*** %11
%439 = load i64, i64* %19
%440 = getelementptr inbounds i8*, i8** %438, i64 %439
%441 = load i8*, i8** %440
%442 = getelementptr inbounds i8, i8* %441, i64 1
%443 = load i8, i8* %442
%444 = sext i8 %443 to i32
%445 = icmp eq i32 %444, 67
br i1 %445, label %446, label %447
446: ; preds = %437, %421
br label %515
447: ; preds = %437, %430
%448 = load i8**, i8*** %11
%449 = load i64, i64* %19
%450 = getelementptr inbounds i8*, i8** %448, i64 %449
%451 = load i8*, i8** %450
%452 = getelementptr inbounds i8, i8* %451, i64 1
%453 = load i8, i8* %452
%454 = sext i8 %453 to i32
%455 = icmp eq i32 %454, 67
br i1 %455, label %465, label %456
456: ; preds = %447
%457 = load i8**, i8*** %11
%458 = load i64, i64* %20
%459 = getelementptr inbounds i8*, i8** %457, i64 %458
%460 = load i8*, i8** %459
%461 = getelementptr inbounds i8, i8* %460, i64 1
%462 = load i8, i8* %461
%463 = sext i8 %462 to i32
%464 = icmp eq i32 %463, 67
br i1 %464, label %465, label %466
465: ; preds = %456, %447
store double 3.600000e+00, double* %16
br label %482
466: ; preds = %456
%467 = load i8**, i8*** %11
%468 = load i64, i64* %19
%469 = getelementptr inbounds i8*, i8** %467, i64 %468
%470 = load i8*, i8** %469
%471 = call i64 @strcmp(i8* %470, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%472 = icmp ne i64 %471, 0
br i1 %472, label %473, label %480
473: ; preds = %466
%474 = load i8**, i8*** %11
%475 = load i64, i64* %20
%476 = getelementptr inbounds i8*, i8** %474, i64 %475
%477 = load i8*, i8** %476
%478 = call i64 @strcmp(i8* %477, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%479 = icmp ne i64 %478, 0
br i1 %479, label %481, label %480
480: ; preds = %473, %466
store double 3.400000e+00, double* %16
br label %481
481: ; preds = %480, %473
br label %482
482: ; preds = %481, %465
store i64 1, i64* %18
br label %483
483: ; preds = %504, %482
%484 = load i64, i64* %18
%485 = icmp sle i64 %484, 3
br i1 %485, label %486, label %507
486: ; preds = %483
%487 = load double**, double*** %13
%488 = load i64, i64* %19
%489 = getelementptr inbounds double*, double** %487, i64 %488
%490 = load double*, double** %489
%491 = load i64, i64* %18
%492 = getelementptr inbounds double, double* %490, i64 %491
%493 = load double, double* %492
%494 = load double**, double*** %13
%495 = load i64, i64* %20
%496 = getelementptr inbounds double*, double** %494, i64 %495
%497 = load double*, double** %496
%498 = load i64, i64* %18
%499 = getelementptr inbounds double, double* %497, i64 %498
%500 = load double, double* %499
%501 = fsub double %493, %500
%502 = load i64, i64* %18
%503 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 %502
store double %501, double* %503
br label %504
504: ; preds = %486
%505 = load i64, i64* %18
%506 = add nsw i64 %505, 1
store i64 %506, i64* %18
br label %483
507: ; preds = %483
%508 = getelementptr inbounds [4 x double], [4 x double]* %17, i64 0, i64 0
%509 = call double @veclen(double* %508)
store double %509, double* %15
%510 = load double, double* %16
%511 = fcmp olt double %509, %510
br i1 %511, label %512, label %514
512: ; preds = %507
%513 = load i64*, i64** %14
store i64 1, i64* %513
br label %514
514: ; preds = %512, %507
br label %515
515: ; preds = %514, %446, %413, %398, %361, %339, %299, %261, %231, %216
%516 = load i64, i64* %20
%517 = add nsw i64 %516, 1
store i64 %517, i64* %20
br label %189
518: ; preds = %189
br label %519
519: ; preds = %518, %178, %138, %100, %70, %55
%520 = load i64, i64* %19
%521 = add nsw i64 %520, 1
store i64 %521, i64* %19
br label %28
522: ; preds = %28
ret void
}

LLVM IR (-O2):
@.str = [2 x i8] c"P\00"
@.str.1 = [2 x i8] c"'\00"
@.str.2 = [5 x i8] c" O2'\00"
@.str.3 = [5 x i8] c" C4 \00"
@.str.4 = [5 x i8] c" C5 \00"
@.str.5 = [5 x i8] c" C6 \00"
@.str.6 = [5 x i8] c" C2 \00"
define void @single_BB_Hbond(i64 %0, i64 %1, i64** nocapture %2, i8** %3, i8* nocapture %4, double** nocapture %5, i64* nocapture writeonly %6) {
%8 = alloca [4 x double]
%9 = bitcast [4 x double]* %8 to i8*
%10 = getelementptr inbounds i64*, i64** %2, i64 %0
%11 = load i64*, i64** %10
%12 = getelementptr inbounds i64, i64* %11, i64 1
%13 = load i64, i64* %12
%14 = getelementptr inbounds i64, i64* %11, i64 2
%15 = load i64, i64* %14
%16 = icmp sgt i64 %13, %15
br i1 %16, label %283, label %17
17: ; preds = %7
%18 = getelementptr inbounds i8, i8* %4, i64 %0
%19 = getelementptr inbounds i64*, i64** %2, i64 %1
%20 = getelementptr inbounds i8, i8* %4, i64 %1
%21 = getelementptr inbounds [4 x double], [4 x double]* %8, i64 0, i64 0
%22 = getelementptr inbounds [4 x double], [4 x double]* %8, i64 0, i64 1
%23 = getelementptr inbounds [4 x double], [4 x double]* %8, i64 0, i64 3
%24 = bitcast double* %22 to <2 x double>*
br label %25
25: ; preds = %17, %276
%26 = phi double [ undef, %17 ], [ %277, %276 ]
%27 = phi i64 [ %13, %17 ], [ %278, %276 ]
%28 = getelementptr inbounds i8*, i8** %3, i64 %27
%29 = load i8*, i8** %28
%30 = getelementptr inbounds i8, i8* %29, i64 1
%31 = load i8, i8* %30
%32 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %31)
%33 = icmp eq i64 %32, 0
br i1 %33, label %34, label %276
34: ; preds = %25
%35 = load i8*, i8** %28
%36 = getelementptr inbounds i8, i8* %35, i64 3
%37 = load i8, i8* %36
%38 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %37)
%39 = icmp eq i64 %38, 0
br i1 %39, label %40, label %276
40: ; preds = %34
%41 = load i8*, i8** %28
%42 = call i64 @strstr(i8* %41, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%43 = icmp eq i64 %42, 0
br i1 %43, label %48, label %44
44: ; preds = %40
%45 = load i8*, i8** %28
%46 = call i64 @strcmp(i8* %45, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%47 = icmp eq i64 %46, 0
br i1 %47, label %48, label %276
48: ; preds = %44, %40
%49 = load i8, i8* %18
%50 = call signext i8 @toupper(i8 signext %49)
%51 = icmp eq i8 %50, 65
br i1 %51, label %52, label %64
52: ; preds = %48
%53 = load i8*, i8** %28
%54 = call i64 @strcmp(i8* %53, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%55 = icmp eq i64 %54, 0
br i1 %55, label %276, label %56
56: ; preds = %52
%57 = load i8*, i8** %28
%58 = call i64 @strcmp(i8* %57, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%59 = icmp eq i64 %58, 0
br i1 %59, label %276, label %60
60: ; preds = %56
%61 = load i8*, i8** %28
%62 = call i64 @strcmp(i8* %61, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%63 = icmp eq i64 %62, 0
br i1 %63, label %276, label %104
64: ; preds = %48
%65 = load i8, i8* %18
%66 = call signext i8 @toupper(i8 signext %65)
%67 = icmp eq i8 %66, 71
br i1 %67, label %68, label %84
68: ; preds = %64
%69 = load i8*, i8** %28
%70 = call i64 @strcmp(i8* %69, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%71 = icmp eq i64 %70, 0
br i1 %71, label %276, label %72
72: ; preds = %68
%73 = load i8*, i8** %28
%74 = call i64 @strcmp(i8* %73, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%75 = icmp eq i64 %74, 0
br i1 %75, label %276, label %76
76: ; preds = %72
%77 = load i8*, i8** %28
%78 = call i64 @strcmp(i8* %77, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%79 = icmp eq i64 %78, 0
br i1 %79, label %276, label %80
80: ; preds = %76
%81 = load i8*, i8** %28
%82 = call i64 @strcmp(i8* %81, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%83 = icmp eq i64 %82, 0
br i1 %83, label %276, label %104
84: ; preds = %64
%85 = load i8, i8* %18
%86 = call signext i8 @toupper(i8 signext %85)
%87 = icmp eq i8 %86, 85
br i1 %87, label %96, label %88
88: ; preds = %84
%89 = load i8, i8* %18
%90 = call signext i8 @toupper(i8 signext %89)
%91 = icmp eq i8 %90, 67
br i1 %91, label %96, label %92
92: ; preds = %88
%93 = load i8, i8* %18
%94 = call signext i8 @toupper(i8 signext %93)
%95 = icmp eq i8 %94, 84
br i1 %95, label %96, label %104
96: ; preds = %92, %88, %84
%97 = load i8*, i8** %28
%98 = call i64 @strcmp(i8* %97, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%99 = icmp eq i64 %98, 0
br i1 %99, label %276, label %100
100: ; preds = %96
%101 = load i8*, i8** %28
%102 = call i64 @strcmp(i8* %101, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%103 = icmp eq i64 %102, 0
br i1 %103, label %276, label %104
104: ; preds = %80, %100, %92, %60
%105 = load i64*, i64** %19
%106 = getelementptr inbounds i64, i64* %105, i64 1
%107 = load i64, i64* %106
%108 = getelementptr inbounds i64, i64* %105, i64 2
%109 = load i64, i64* %108
%110 = icmp sgt i64 %107, %109
br i1 %110, label %276, label %111
111: ; preds = %104
%112 = getelementptr inbounds double*, double** %5, i64 %27
br label %113
113: ; preds = %111, %269
%114 = phi double [ %26, %111 ], [ %270, %269 ]
%115 = phi i64 [ %107, %111 ], [ %271, %269 ]
%116 = getelementptr inbounds i8*, i8** %3, i64 %115
%117 = load i8*, i8** %116
%118 = getelementptr inbounds i8, i8* %117, i64 1
%119 = load i8, i8* %118
%120 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %119)
%121 = icmp eq i64 %120, 0
br i1 %121, label %122, label %269
122: ; preds = %113
%123 = load i8*, i8** %116
%124 = getelementptr inbounds i8, i8* %123, i64 3
%125 = load i8, i8* %124
%126 = call i64 @strchr(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8 signext %125)
%127 = icmp eq i64 %126, 0
br i1 %127, label %128, label %269
128: ; preds = %122
%129 = load i8*, i8** %116
%130 = call i64 @strstr(i8* %129, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%131 = icmp eq i64 %130, 0
br i1 %131, label %136, label %132
132: ; preds = %128
%133 = load i8*, i8** %116
%134 = call i64 @strcmp(i8* %133, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%135 = icmp eq i64 %134, 0
br i1 %135, label %136, label %269
136: ; preds = %132, %128
%137 = load i8, i8* %20
%138 = call signext i8 @toupper(i8 signext %137)
%139 = icmp eq i8 %138, 65
br i1 %139, label %140, label %152
140: ; preds = %136
%141 = load i8*, i8** %116
%142 = call i64 @strcmp(i8* %141, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%143 = icmp eq i64 %142, 0
br i1 %143, label %269, label %144
144: ; preds = %140
%145 = load i8*, i8** %116
%146 = call i64 @strcmp(i8* %145, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%147 = icmp eq i64 %146, 0
br i1 %147, label %269, label %148
148: ; preds = %144
%149 = load i8*, i8** %116
%150 = call i64 @strcmp(i8* %149, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%151 = icmp eq i64 %150, 0
br i1 %151, label %269, label %192
152: ; preds = %136
%153 = load i8, i8* %20
%154 = call signext i8 @toupper(i8 signext %153)
%155 = icmp eq i8 %154, 71
br i1 %155, label %156, label %172
156: ; preds = %152
%157 = load i8*, i8** %116
%158 = call i64 @strcmp(i8* %157, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%159 = icmp eq i64 %158, 0
br i1 %159, label %269, label %160
160: ; preds = %156
%161 = load i8*, i8** %116
%162 = call i64 @strcmp(i8* %161, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%163 = icmp eq i64 %162, 0
br i1 %163, label %269, label %164
164: ; preds = %160
%165 = load i8*, i8** %116
%166 = call i64 @strcmp(i8* %165, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%167 = icmp eq i64 %166, 0
br i1 %167, label %269, label %168
168: ; preds = %164
%169 = load i8*, i8** %116
%170 = call i64 @strcmp(i8* %169, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%171 = icmp eq i64 %170, 0
br i1 %171, label %269, label %192
172: ; preds = %152
%173 = load i8, i8* %20
%174 = call signext i8 @toupper(i8 signext %173)
%175 = icmp eq i8 %174, 85
br i1 %175, label %184, label %176
176: ; preds = %172
%177 = load i8, i8* %20
%178 = call signext i8 @toupper(i8 signext %177)
%179 = icmp eq i8 %178, 67
br i1 %179, label %184, label %180
180: ; preds = %176
%181 = load i8, i8* %20
%182 = call signext i8 @toupper(i8 signext %181)
%183 = icmp eq i8 %182, 84
br i1 %183, label %184, label %192
184: ; preds = %180, %176, %172
%185 = load i8*, i8** %116
%186 = call i64 @strcmp(i8* %185, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%187 = icmp eq i64 %186, 0
br i1 %187, label %269, label %188
188: ; preds = %184
%189 = load i8*, i8** %116
%190 = call i64 @strcmp(i8* %189, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%191 = icmp eq i64 %190, 0
br i1 %191, label %269, label %192
192: ; preds = %168, %188, %180, %148
%193 = load i8*, i8** %28
%194 = getelementptr inbounds i8, i8* %193, i64 1
%195 = load i8, i8* %194
%196 = icmp eq i8 %195, 67
%197 = load i8*, i8** %116
%198 = getelementptr inbounds i8, i8* %197, i64 1
%199 = load i8, i8* %198
%200 = icmp eq i8 %199, 67
br i1 %196, label %201, label %206
201: ; preds = %192
br i1 %200, label %269, label %202
202: ; preds = %201
%203 = getelementptr inbounds i8, i8* %197, i64 3
%204 = load i8, i8* %203
%205 = icmp eq i8 %204, 39
br i1 %205, label %269, label %211
206: ; preds = %192
br i1 %200, label %207, label %211
207: ; preds = %206
%208 = getelementptr inbounds i8, i8* %193, i64 3
%209 = load i8, i8* %208
%210 = icmp eq i8 %209, 39
br i1 %210, label %269, label %211
211: ; preds = %202, %207, %206
%212 = call i64 @strcmp(i8* %193, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%213 = icmp eq i64 %212, 0
br i1 %213, label %214, label %218
214: ; preds = %211
%215 = load i8*, i8** %116
%216 = call i64 @strcmp(i8* %215, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%217 = icmp eq i64 %216, 0
br i1 %217, label %269, label %218
218: ; preds = %214, %211
%219 = load i8*, i8** %28
%220 = call i64 @strcmp(i8* %219, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%221 = icmp eq i64 %220, 0
%222 = load i8*, i8** %116
br i1 %221, label %223, label %227
223: ; preds = %218
%224 = getelementptr inbounds i8, i8* %222, i64 1
%225 = load i8, i8* %224
%226 = icmp eq i8 %225, 67
br i1 %226, label %269, label %227
227: ; preds = %218, %223
%228 = call i64 @strcmp(i8* %222, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%229 = icmp eq i64 %228, 0
%230 = load i8*, i8** %28
%231 = getelementptr inbounds i8, i8* %230, i64 1
%232 = load i8, i8* %231
%233 = icmp eq i8 %232, 67
br i1 %229, label %234, label %235
234: ; preds = %227
br i1 %233, label %269, label %236
235: ; preds = %227
br i1 %233, label %249, label %236
236: ; preds = %234, %235
%237 = load i8*, i8** %116
%238 = getelementptr inbounds i8, i8* %237, i64 1
%239 = load i8, i8* %238
%240 = icmp eq i8 %239, 67
br i1 %240, label %249, label %241
241: ; preds = %236
%242 = call i64 @strcmp(i8* %230, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%243 = icmp eq i64 %242, 0
br i1 %243, label %248, label %244
244: ; preds = %241
%245 = load i8*, i8** %116
%246 = call i64 @strcmp(i8* %245, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%247 = icmp eq i64 %246, 0
br i1 %247, label %248, label %249
248: ; preds = %244, %241
br label %249
249: ; preds = %235, %236, %244, %248
%250 = phi double [ %114, %244 ], [ 3.400000e+00, %248 ], [ 3.600000e+00, %236 ], [ 3.600000e+00, %235 ]
%251 = load double*, double** %112
%252 = getelementptr inbounds double*, double** %5, i64 %115
%253 = load double*, double** %252
%254 = getelementptr inbounds double, double* %251, i64 1
%255 = getelementptr inbounds double, double* %253, i64 1
%256 = bitcast double* %254 to <2 x double>*
%257 = load <2 x double>, <2 x double>* %256
%258 = bitcast double* %255 to <2 x double>*
%259 = load <2 x double>, <2 x double>* %258
%260 = fsub <2 x double> %257, %259
store <2 x double> %260, <2 x double>* %24
%261 = getelementptr inbounds double, double* %251, i64 3
%262 = load double, double* %261
%263 = getelementptr inbounds double, double* %253, i64 3
%264 = load double, double* %263
%265 = fsub double %262, %264
store double %265, double* %23
%266 = call double @veclen(double* %21)
%267 = fcmp olt double %266, %250
br i1 %267, label %268, label %269
268: ; preds = %249
store i64 1, i64* %6
br label %269
269: ; preds = %249, %268, %223, %234, %214, %202, %207, %201, %184, %188, %156, %160, %164, %168, %140, %144, %148, %132, %113, %122
%270 = phi double [ %114, %113 ], [ %114, %122 ], [ %114, %132 ], [ %114, %201 ], [ %114, %202 ], [ %114, %207 ], [ %250, %268 ], [ %250, %249 ], [ %114, %234 ], [ %114, %223 ], [ %114, %214 ], [ %114, %148 ], [ %114, %144 ], [ %114, %140 ], [ %114, %168 ], [ %114, %164 ], [ %114, %160 ], [ %114, %156 ], [ %114, %188 ], [ %114, %184 ]
%271 = add nsw i64 %115, 1
%272 = load i64*, i64** %19
%273 = getelementptr inbounds i64, i64* %272, i64 2
%274 = load i64, i64* %273
%275 = icmp slt i64 %115, %274
br i1 %275, label %113, label %276
276: ; preds = %269, %104, %96, %100, %68, %72, %76, %80, %52, %56, %60, %44, %25, %34
%277 = phi double [ %26, %25 ], [ %26, %34 ], [ %26, %44 ], [ %26, %60 ], [ %26, %56 ], [ %26, %52 ], [ %26, %80 ], [ %26, %76 ], [ %26, %72 ], [ %26, %68 ], [ %26, %100 ], [ %26, %96 ], [ %26, %104 ], [ %270, %269 ]
%278 = add nsw i64 %27, 1
%279 = load i64*, i64** %10
%280 = getelementptr inbounds i64, i64* %279, i64 2
%281 = load i64, i64* %280
%282 = icmp slt i64 %27, %281
br i1 %282, label %25, label %283
283: ; preds = %276, %7
ret void
}