#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 */
typedef int /*<<< orphan*/ reslist;

/* Variables and functions */
double *malloc(int);
double *calcOMES_line(char m[], int n, int l, int pos) {
  int i, j, k, k1, k2;
  char reslist[] = {'-', 'A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L',
                    'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'};
  int resnum = sizeof(reslist) / sizeof(char);
  double p[l][resnum];
  double *om;
  om = malloc(l * sizeof(double));
  for (i = 0; i < l; i++)
    for (j = 0; j < resnum; j++)
      p[i][j] = 0;
  for (i = 0; i < l; i++) {
    double count = 0;
    for (j = 0; j < n; j++)
      for (k = 0; k < resnum; k++)
        if (m[j * l + i] == reslist[k]) {
          p[i][k]++;
          count++;
          break;
        }
    for (k = 0; k < resnum; k++)
      p[i][k] = p[i][k] / n;
  }
  for (i = pos; i < pos + 1; i++) {
    om[i] = 0;
    for (j = 0; j < l; j++) {
      double add = 0;
      for (k1 = 0; k1 < resnum; k1++)
        for (k2 = 0; k2 < resnum; k2++) {
          if ((p[i][k1] != 0.0) && (p[j][k2] != 0.0)) {
            double count = 0;
            for (k = 0; k < n; k++) {
              if ((m[k * l + i] == reslist[k1]) &&
                  (m[k * l + j] == reslist[k2]))
                count++;
            }
            if (count != 0.0) {
              count = count / n;
              add += n * (count - p[i][k1] * p[j][k2]) *
                     (count - p[i][k1] * p[j][k2]) / (p[i][k1] * p[j][k2]);
            }
          }
        }
      om[j] = add;
    }
  }
  return om;
}


x86 assembly (clang, -O0):
<calcOMES_line>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
movabs $0x5957565453525150,%rax
56 57 59
mov    %rax,-0x33(%rbp)
movaps 0xed3(%rip),%xmm0
movaps %xmm0,-0x40(%rbp)
movl   $0x15,-0x44(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,%ecx
mov    -0x44(%rbp),%eax
mov    %rax,-0x90(%rbp)
mov    %rsp,%rdx
mov    %rdx,-0x50(%rbp)
mov    %rcx,%rdx
imul   %rax,%rdx
lea    0xf(,%rdx,8),%rsi
and    $0xfffffffffffffff0,%rsi
mov    %rsp,%rdx
sub    %rsi,%rdx
mov    %rdx,-0x88(%rbp)
mov    %rdx,%rsp
mov    %rcx,-0x58(%rbp)
mov    %rax,-0x60(%rbp)
movslq -0x10(%rbp),%rax
shl    $0x3,%rax
mov    %eax,%edi
call   1030 <malloc@plt>
mov    %rax,-0x68(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    120c <calcOMES_line+0xfc>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x44(%rbp),%eax
jge    11f9 <calcOMES_line+0xe9>
mov    -0x88(%rbp),%rax
mov    -0x90(%rbp),%rdx
movslq -0x18(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11b6 <calcOMES_line+0xa6>
jmp    11fe <calcOMES_line+0xee>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11a3 <calcOMES_line+0x93>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1361 <calcOMES_line+0x251>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    12e3 <calcOMES_line+0x1d3>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x44(%rbp),%eax
jge    12d0 <calcOMES_line+0x1c0>
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
imul   -0x10(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movslq -0x20(%rbp),%rcx
movsbl -0x40(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jne    12bd <calcOMES_line+0x1ad>
mov    -0x88(%rbp),%rax
mov    -0x90(%rbp),%rdx
movslq -0x18(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movsd  0xd64(%rip),%xmm0
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  0xd52(%rip),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    12d0 <calcOMES_line+0x1c0>
jmp    12c2 <calcOMES_line+0x1b2>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1241 <calcOMES_line+0x131>
jmp    12d5 <calcOMES_line+0x1c5>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    122e <calcOMES_line+0x11e>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x44(%rbp),%eax
jge    134e <calcOMES_line+0x23e>
mov    -0x88(%rbp),%rax
mov    -0x90(%rbp),%rdx
movslq -0x18(%rbp),%rsi
imul   %rdx,%rsi
shl    $0x3,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movslq -0x20(%rbp),%rsi
movsd  (%rcx,%rsi,8),%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
divsd  %xmm1,%xmm0
movslq -0x18(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    12ea <calcOMES_line+0x1da>
jmp    1353 <calcOMES_line+0x243>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1213 <calcOMES_line+0x103>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    166f <calcOMES_line+0x55f>
mov    -0x68(%rbp),%rax
movslq -0x18(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    165c <calcOMES_line+0x54c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x44(%rbp),%eax
jge    163c <calcOMES_line+0x52c>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x44(%rbp),%eax
jge    1629 <calcOMES_line+0x519>
mov    -0x88(%rbp),%rax
mov    -0x90(%rbp),%rdx
movslq -0x18(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1407 <calcOMES_line+0x2f7>
jp     1407 <calcOMES_line+0x2f7>
jmp    1616 <calcOMES_line+0x506>
mov    -0x88(%rbp),%rax
mov    -0x90(%rbp),%rdx
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1445 <calcOMES_line+0x335>
jp     1445 <calcOMES_line+0x335>
jmp    1616 <calcOMES_line+0x506>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    14d1 <calcOMES_line+0x3c1>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   -0x10(%rbp),%ecx
add    -0x18(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movslq -0x24(%rbp),%rcx
movsbl -0x40(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jne    14be <calcOMES_line+0x3ae>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   -0x10(%rbp),%ecx
add    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movslq -0x28(%rbp),%rcx
movsbl -0x40(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jne    14be <calcOMES_line+0x3ae>
movsd  0xb4c(%rip),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    14c3 <calcOMES_line+0x3b3>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1454 <calcOMES_line+0x344>
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14ee <calcOMES_line+0x3de>
jp     14ee <calcOMES_line+0x3de>
jmp    1611 <calcOMES_line+0x501>
mov    -0x88(%rbp),%rax
mov    -0x90(%rbp),%rdx
movsd  -0x80(%rbp),%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm2
movslq -0x18(%rbp),%rsi
imul   %rdx,%rsi
shl    $0x3,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movslq -0x24(%rbp),%rsi
movsd  (%rcx,%rsi,8),%xmm1
movslq -0x1c(%rbp),%rsi
imul   %rdx,%rsi
shl    $0x3,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movslq -0x28(%rbp),%rsi
movsd  (%rcx,%rsi,8),%xmm3
movq   %xmm1,%rcx
movabs $0x8000000000000000,%rsi
xor    %rsi,%rcx
movq   %rcx,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x80(%rbp),%xmm2
movslq -0x18(%rbp),%rsi
imul   %rdx,%rsi
shl    $0x3,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movslq -0x24(%rbp),%rsi
movsd  (%rcx,%rsi,8),%xmm1
movslq -0x1c(%rbp),%rsi
imul   %rdx,%rsi
shl    $0x3,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movslq -0x28(%rbp),%rsi
movsd  (%rcx,%rsi,8),%xmm3
movq   %xmm1,%rcx
movabs $0x8000000000000000,%rsi
xor    %rsi,%rcx
movq   %rcx,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movslq -0x18(%rbp),%rsi
imul   %rdx,%rsi
shl    $0x3,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movslq -0x24(%rbp),%rsi
movsd  (%rcx,%rsi,8),%xmm1
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
divsd  %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1616 <calcOMES_line+0x506>
jmp    161b <calcOMES_line+0x50b>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    13bd <calcOMES_line+0x2ad>
jmp    162e <calcOMES_line+0x51e>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    13aa <calcOMES_line+0x29a>
movsd  -0x78(%rbp),%xmm0
mov    -0x68(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    138f <calcOMES_line+0x27f>
jmp    1661 <calcOMES_line+0x551>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1367 <calcOMES_line+0x257>
mov    -0x68(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    %rcx,%rsp
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<calcOMES_line>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %ecx,%r13d
mov    %edx,%r12d
mov    %esi,-0x2c(%rbp)
mov    %rdi,%r14
mov    %edx,%eax
mov    %rsp,%rbx
mov    %rax,-0x38(%rbp)
imul   $0xa8,%rax,%r15
lea    0xf(%r15),%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%rbx
mov    %rbx,%rsp
lea    0x0(,%r12,8),%edi
call   1040 <malloc@plt>
mov    %r12,-0x48(%rbp)
test   %r12d,%r12d
jle    14f4 <calcOMES_line+0x3d4>
mov    %rax,-0x60(%rbp)
mov    %r13d,-0x40(%rbp)
mov    -0x2c(%rbp),%r13d
mov    %r14,%r12
xor    %r14d,%r14d
mov    %rbx,%rdi
xor    %esi,%esi
mov    %r15,%rdx
call   1030 <memset@plt>
cvtsi2sd %r13d,%xmm9
mov    %r13d,%eax
mov    -0x40(%rbp),%r15d
mov    %rax,-0x50(%rbp)
movapd %xmm9,%xmm2
unpcklpd %xmm9,%xmm2
movabs $0x16fbdfd00001,%r9
lea    0xe79(%rip),%r8
movsd  0xe39(%rip),%xmm1
mov    %r12,-0x68(%rbp)
mov    %r12,%r10
mov    %rbx,%rdi
jmp    12af <calcOMES_line+0x18f>
cs nopw 0x0(%rax,%rax,1)
movupd (%rdi,%rsi,8),%xmm0
movupd 0x10(%rdi,%rsi,8),%xmm3
movupd 0x20(%rdi,%rsi,8),%xmm4
movupd 0x30(%rdi,%rsi,8),%xmm5
divpd  %xmm2,%xmm0
movupd %xmm0,(%rdi,%rsi,8)
divpd  %xmm2,%xmm3
movupd %xmm3,0x10(%rdi,%rsi,8)
divpd  %xmm2,%xmm4
movupd %xmm4,0x20(%rdi,%rsi,8)
divpd  %xmm2,%xmm5
movupd %xmm5,0x30(%rdi,%rsi,8)
movupd 0x40(%rdi,%rsi,8),%xmm0
divpd  %xmm2,%xmm0
movupd %xmm0,0x40(%rdi,%rsi,8)
movupd 0x50(%rdi,%rsi,8),%xmm0
divpd  %xmm2,%xmm0
movupd %xmm0,0x50(%rdi,%rsi,8)
movupd 0x60(%rdi,%rsi,8),%xmm0
divpd  %xmm2,%xmm0
movupd %xmm0,0x60(%rdi,%rsi,8)
movupd 0x70(%rdi,%rsi,8),%xmm0
divpd  %xmm2,%xmm0
movupd %xmm0,0x70(%rdi,%rsi,8)
movupd 0x80(%rdi,%rsi,8),%xmm0
divpd  %xmm2,%xmm0
movupd %xmm0,0x80(%rdi,%rsi,8)
movupd 0x90(%rdi,%rsi,8),%xmm0
divpd  %xmm2,%xmm0
movupd %xmm0,0x90(%rdi,%rsi,8)
movsd  0xa0(%rdi,%rsi,8),%xmm0
divsd  %xmm9,%xmm0
movsd  %xmm0,0xa0(%rdi,%rsi,8)
add    $0x1,%r14
add    $0x1,%r10
cmp    -0x38(%rbp),%r14
je     130a <calcOMES_line+0x1ea>
lea    (%r14,%r14,4),%rax
lea    (%r14,%rax,4),%rsi
cmpl   $0x0,-0x2c(%rbp)
jle    11e0 <calcOMES_line+0xc0>
lea    (%rdi,%rsi,8),%r11
mov    -0x50(%rbp),%rcx
mov    %r10,%rdx
jmp    12de <calcOMES_line+0x1be>
xchg   %ax,%ax
add    -0x38(%rbp),%rdx
add    $0xffffffffffffffff,%rcx
je     11e0 <calcOMES_line+0xc0>
movzbl (%rdx),%eax
add    $0xd3,%al
cmp    $0x2c,%al
ja     12d0 <calcOMES_line+0x1b0>
movzbl %al,%ebx
bt     %rbx,%r9
jae    12d0 <calcOMES_line+0x1b0>
movsbq %al,%rax
mov    (%r8,%rax,8),%rax
movsd  (%r11,%rax,8),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%r11,%rax,8)
jmp    12d0 <calcOMES_line+0x1b0>
mov    %rdi,-0x58(%rbp)
movslq %r15d,%rcx
mov    -0x60(%rbp),%rax
movq   $0x0,(%rax,%rcx,8)
cmpl   $0x0,-0x48(%rbp)
mov    -0x2c(%rbp),%r14d
jle    14ff <calcOMES_line+0x3df>
imul   $0xa8,%rcx,%rax
add    -0x58(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x50(%rbp),%rsi
and    $0xfffffffe,%esi
mov    -0x38(%rbp),%r10
lea    (%r10,%r10,1),%rdi
lea    (%rcx,%r10,1),%rdx
xor    %r15d,%r15d
movapd 0xcb7(%rip),%xmm8
xorpd  %xmm3,%xmm3
lea    0xcbc(%rip),%r11
jmp    138c <calcOMES_line+0x26c>
cs nopw 0x0(%rax,%rax,1)
mov    -0x60(%rbp),%rax
movsd  %xmm4,(%rax,%r15,8)
add    $0x1,%r15
add    $0x1,%r10
cmp    -0x38(%rbp),%r15
je     14ff <calcOMES_line+0x3df>
imul   $0xa8,%r15,%rbx
add    -0x58(%rbp),%rbx
xor    %r9d,%r9d
xorpd  %xmm4,%xmm4
mov    %rbx,-0x40(%rbp)
jmp    13ba <calcOMES_line+0x29a>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r9
cmp    $0x15,%r9
je     1370 <calcOMES_line+0x250>
mov    -0x70(%rbp),%rax
movsd  (%rax,%r9,8),%xmm5
movapd %xmm5,%xmm6
xorpd  %xmm8,%xmm6
xor    %r8d,%r8d
mov    %r9,-0x48(%rbp)
jmp    13f2 <calcOMES_line+0x2d2>
cs nopw 0x0(%rax,%rax,1)
mov    -0x48(%rbp),%r9
mov    -0x40(%rbp),%rbx
add    $0x1,%r8
cmp    $0x15,%r8
je     13b0 <calcOMES_line+0x290>
ucomisd %xmm3,%xmm5
jne    13fa <calcOMES_line+0x2da>
jnp    13e8 <calcOMES_line+0x2c8>
movsd  (%rbx,%r8,8),%xmm7
ucomisd %xmm3,%xmm7
jne    1408 <calcOMES_line+0x2e8>
jnp    13e8 <calcOMES_line+0x2c8>
test   %r14d,%r14d
jle    13e8 <calcOMES_line+0x2c8>
mov    (%r9,%r11,1),%r12b
xorpd  %xmm0,%xmm0
cmp    $0x1,%r14d
jne    148f <calcOMES_line+0x36f>
xor    %r9d,%r9d
testb  $0x1,-0x50(%rbp)
mov    -0x2c(%rbp),%r14d
je     1458 <calcOMES_line+0x338>
imul   -0x38(%rbp),%r9
lea    (%r9,%rcx,1),%rax
mov    -0x68(%rbp),%rbx
cmp    %r12b,(%rbx,%rax,1)
jne    1458 <calcOMES_line+0x338>
add    %r15,%r9
mov    (%rbx,%r9,1),%al
movapd %xmm0,%xmm2
addsd  %xmm1,%xmm2
cmp    (%r8,%r11,1),%al
je     1454 <calcOMES_line+0x334>
movapd %xmm0,%xmm2
movapd %xmm2,%xmm0
ucomisd %xmm3,%xmm0
jne    1460 <calcOMES_line+0x340>
jnp    13e0 <calcOMES_line+0x2c0>
divsd  %xmm9,%xmm0
movapd %xmm6,%xmm2
mulsd  %xmm7,%xmm2
addsd  %xmm0,%xmm2
movapd %xmm2,%xmm0
mulsd  %xmm9,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm5,%xmm7
divsd  %xmm7,%xmm0
addsd  %xmm0,%xmm4
jmp    13e0 <calcOMES_line+0x2c0>
mov    -0x68(%rbp),%r14
xor    %r9d,%r9d
jmp    14b4 <calcOMES_line+0x394>
nopl   0x0(%rax,%rax,1)
movapd %xmm2,%xmm0
add    $0x2,%r9
add    %rdi,%r14
cmp    %r9,%rsi
je     141e <calcOMES_line+0x2fe>
cmp    %r12b,(%r14,%rcx,1)
jne    14d5 <calcOMES_line+0x3b5>
movzbl (%r14,%r15,1),%r13d
movapd %xmm0,%xmm2
addsd  %xmm1,%xmm2
cmp    (%r8,%r11,1),%r13b
je     14d1 <calcOMES_line+0x3b1>
movapd %xmm0,%xmm2
movapd %xmm2,%xmm0
cmp    %r12b,(%r14,%rdx,1)
jne    14a4 <calcOMES_line+0x384>
movzbl (%r14,%r10,1),%eax
movapd %xmm0,%xmm2
addsd  %xmm1,%xmm2
cmp    (%r8,%r11,1),%al
je     14a0 <calcOMES_line+0x380>
movapd %xmm0,%xmm2
jmp    14a0 <calcOMES_line+0x380>
movslq %r13d,%rcx
movq   $0x0,(%rax,%rcx,8)
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@__const.calcOMES_line.reslist = [21 x i8] c"-ACDEFGHIKLMNPQRSTVWY"
@switch.table.calcOMES_line = [45 x i64] [i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 1, i64 0, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 0, i64 9, i64 10, i64 11, i64 12, i64 0, i64 13, i64 14, i64 15, i64 16, i64 17, i64 0, i64 18, i64 19, i64 0, i64 20]
define noalias double* @calcOMES_line(i8* nocapture %0, i32 %1, i32 %2, i32 %3) {
%5 = zext i32 %2 to i64
%6 = mul nuw nsw i64 %5, 21
%7 = alloca double, i64 %6
%8 = shl i32 %2, 3
%9 = tail call double* @malloc(i32 %8)
%10 = icmp sgt i32 %2, 0
br i1 %10, label %14, label %11
11: ; preds = %4
%12 = sext i32 %3 to i64
%13 = getelementptr inbounds double, double* %9, i64 %12
store double 0.000000e+00, double* %13
br label %219
14: ; preds = %4
%15 = bitcast double* %7 to i8*
%16 = mul nuw nsw i64 %5, 168
%17 = icmp sgt i32 %1, 0
%18 = sitofp i32 %1 to double
%19 = zext i32 %2 to i64
%20 = zext i32 %1 to i64
%21 = insertelement <2 x double> poison, double %18, i64 0
%22 = shufflevector <2 x double> %21, <2 x double> poison, <2 x i32> zeroinitializer
br label %23
23: ; preds = %14, %32
%24 = phi i64 [ 0, %14 ], [ %86, %32 ]
%25 = mul nuw nsw i64 %24, 21
br i1 %17, label %26, label %32
26: ; preds = %23
%27 = getelementptr inbounds double, double* %7, i64 %25
br label %88
28: ; preds = %32
%29 = icmp slt i32 %1, 1
%30 = sext i32 %3 to i64
%31 = getelementptr inbounds double, double* %9, i64 %30
store double 0.000000e+00, double* %31
br i1 %10, label %111, label %219
32: ; preds = %108, %23
%33 = getelementptr inbounds double, double* %7, i64 %25
%34 = bitcast double* %33 to <2 x double>*
%35 = load <2 x double>, <2 x double>* %34
%36 = fdiv <2 x double> %35, %22
%37 = bitcast double* %33 to <2 x double>*
store <2 x double> %36, <2 x double>* %37
%38 = getelementptr inbounds double, double* %33, i64 2
%39 = bitcast double* %38 to <2 x double>*
%40 = load <2 x double>, <2 x double>* %39
%41 = fdiv <2 x double> %40, %22
%42 = bitcast double* %38 to <2 x double>*
store <2 x double> %41, <2 x double>* %42
%43 = getelementptr inbounds double, double* %33, i64 4
%44 = bitcast double* %43 to <2 x double>*
%45 = load <2 x double>, <2 x double>* %44
%46 = fdiv <2 x double> %45, %22
%47 = bitcast double* %43 to <2 x double>*
store <2 x double> %46, <2 x double>* %47
%48 = getelementptr inbounds double, double* %33, i64 6
%49 = bitcast double* %48 to <2 x double>*
%50 = load <2 x double>, <2 x double>* %49
%51 = fdiv <2 x double> %50, %22
%52 = bitcast double* %48 to <2 x double>*
store <2 x double> %51, <2 x double>* %52
%53 = getelementptr inbounds double, double* %33, i64 8
%54 = bitcast double* %53 to <2 x double>*
%55 = load <2 x double>, <2 x double>* %54
%56 = fdiv <2 x double> %55, %22
%57 = bitcast double* %53 to <2 x double>*
store <2 x double> %56, <2 x double>* %57
%58 = getelementptr inbounds double, double* %33, i64 10
%59 = bitcast double* %58 to <2 x double>*
%60 = load <2 x double>, <2 x double>* %59
%61 = fdiv <2 x double> %60, %22
%62 = bitcast double* %58 to <2 x double>*
store <2 x double> %61, <2 x double>* %62
%63 = getelementptr inbounds double, double* %33, i64 12
%64 = bitcast double* %63 to <2 x double>*
%65 = load <2 x double>, <2 x double>* %64
%66 = fdiv <2 x double> %65, %22
%67 = bitcast double* %63 to <2 x double>*
store <2 x double> %66, <2 x double>* %67
%68 = getelementptr inbounds double, double* %33, i64 14
%69 = bitcast double* %68 to <2 x double>*
%70 = load <2 x double>, <2 x double>* %69
%71 = fdiv <2 x double> %70, %22
%72 = bitcast double* %68 to <2 x double>*
store <2 x double> %71, <2 x double>* %72
%73 = getelementptr inbounds double, double* %33, i64 16
%74 = bitcast double* %73 to <2 x double>*
%75 = load <2 x double>, <2 x double>* %74
%76 = fdiv <2 x double> %75, %22
%77 = bitcast double* %73 to <2 x double>*
store <2 x double> %76, <2 x double>* %77
%78 = getelementptr inbounds double, double* %33, i64 18
%79 = bitcast double* %78 to <2 x double>*
%80 = load <2 x double>, <2 x double>* %79
%81 = fdiv <2 x double> %80, %22
%82 = bitcast double* %78 to <2 x double>*
store <2 x double> %81, <2 x double>* %82
%83 = getelementptr inbounds double, double* %33, i64 20
%84 = load double, double* %83
%85 = fdiv double %84, %18
store double %85, double* %83
%86 = add nuw nsw i64 %24, 1
%87 = icmp eq i64 %86, %5
br i1 %87, label %28, label %23
88: ; preds = %26, %108
%89 = phi i64 [ 0, %26 ], [ %109, %108 ]
%90 = mul nsw i64 %89, %19
%91 = add nuw nsw i64 %90, %24
%92 = getelementptr inbounds i8, i8* %0, i64 %91
%93 = load i8, i8* %92
%94 = add i8 %93, -45
%95 = icmp ult i8 %94, 45
br i1 %95, label %96, label %108
96: ; preds = %88
%97 = zext i8 %94 to i64
%98 = lshr i64 25271047553025, %97
%99 = and i64 %98, 1
%100 = icmp eq i64 %99, 0
br i1 %100, label %108, label %101
101: ; preds = %96
%102 = sext i8 %94 to i64
%103 = getelementptr inbounds [45 x i64], [45 x i64]* @switch.table.calcOMES_line, i64 0, i64 %102
%104 = load i64, i64* %103
%105 = getelementptr inbounds double, double* %27, i64 %104
%106 = load double, double* %105
%107 = fadd double %106, 1.000000e+00
store double %107, double* %105
br label %108
108: ; preds = %96, %88, %101
%109 = add nuw nsw i64 %89, 1
%110 = icmp eq i64 %109, %20
br i1 %110, label %32, label %88
111: ; preds = %28
%112 = mul nsw i64 %30, 21
%113 = getelementptr inbounds double, double* %7, i64 %112
%114 = and i64 %20, 1
%115 = icmp eq i32 %1, 1
%116 = and i64 %20, 4294967294
%117 = icmp eq i64 %114, 0
br label %118
118: ; preds = %111, %215
%119 = phi i64 [ 0, %111 ], [ %217, %215 ]
%120 = mul nuw nsw i64 %119, 21
%121 = getelementptr inbounds double, double* %7, i64 %120
br label %122
122: ; preds = %118, %212
%123 = phi i64 [ 0, %118 ], [ %213, %212 ]
%124 = phi double [ 0.000000e+00, %118 ], [ %209, %212 ]
%125 = getelementptr inbounds double, double* %113, i64 %123
%126 = load double, double* %125
%127 = fcmp une double %126, 0.000000e+00
%128 = getelementptr inbounds [21 x i8], [21 x i8]* @__const.calcOMES_line.reslist, i64 0, i64 %123
%129 = fneg double %126
br label %130
130: ; preds = %122, %208
%131 = phi i64 [ 0, %122 ], [ %210, %208 ]
%132 = phi double [ %124, %122 ], [ %209, %208 ]
br i1 %127, label %133, label %208
133: ; preds = %130
%134 = getelementptr inbounds double, double* %121, i64 %131
%135 = load double, double* %134
%136 = fcmp oeq double %135, 0.000000e+00
%137 = or i1 %136, %29
br i1 %137, label %208, label %138
138: ; preds = %133
%139 = load i8, i8* %128
%140 = getelementptr inbounds [21 x i8], [21 x i8]* @__const.calcOMES_line.reslist, i64 0, i64 %131
br i1 %115, label %179, label %141
141: ; preds = %138, %174
%142 = phi i64 [ %176, %174 ], [ 0, %138 ]
%143 = phi double [ %175, %174 ], [ 0.000000e+00, %138 ]
%144 = phi i64 [ %177, %174 ], [ 0, %138 ]
%145 = mul nsw i64 %142, %19
%146 = add nsw i64 %145, %30
%147 = getelementptr inbounds i8, i8* %0, i64 %146
%148 = load i8, i8* %147
%149 = icmp eq i8 %148, %139
br i1 %149, label %150, label %158
150: ; preds = %141
%151 = add nuw nsw i64 %145, %119
%152 = getelementptr inbounds i8, i8* %0, i64 %151
%153 = load i8, i8* %152
%154 = load i8, i8* %140
%155 = icmp eq i8 %153, %154
%156 = fadd double %143, 1.000000e+00
%157 = select i1 %155, double %156, double %143
br label %158
158: ; preds = %150, %141
%159 = phi double [ %143, %141 ], [ %157, %150 ]
%160 = or i64 %142, 1
%161 = mul nsw i64 %160, %19
%162 = add nsw i64 %161, %30
%163 = getelementptr inbounds i8, i8* %0, i64 %162
%164 = load i8, i8* %163
%165 = icmp eq i8 %164, %139
br i1 %165, label %166, label %174
166: ; preds = %158
%167 = add nuw nsw i64 %161, %119
%168 = getelementptr inbounds i8, i8* %0, i64 %167
%169 = load i8, i8* %168
%170 = load i8, i8* %140
%171 = icmp eq i8 %169, %170
%172 = fadd double %159, 1.000000e+00
%173 = select i1 %171, double %172, double %159
br label %174
174: ; preds = %166, %158
%175 = phi double [ %159, %158 ], [ %173, %166 ]
%176 = add nuw nsw i64 %142, 2
%177 = add i64 %144, 2
%178 = icmp eq i64 %177, %116
br i1 %178, label %179, label %141
179: ; preds = %174, %138
%180 = phi double [ undef, %138 ], [ %175, %174 ]
%181 = phi i64 [ 0, %138 ], [ %176, %174 ]
%182 = phi double [ 0.000000e+00, %138 ], [ %175, %174 ]
br i1 %117, label %197, label %183
183: ; preds = %179
%184 = mul nsw i64 %181, %19
%185 = add nsw i64 %184, %30
%186 = getelementptr inbounds i8, i8* %0, i64 %185
%187 = load i8, i8* %186
%188 = icmp eq i8 %187, %139
br i1 %188, label %189, label %197
189: ; preds = %183
%190 = add nuw nsw i64 %184, %119
%191 = getelementptr inbounds i8, i8* %0, i64 %190
%192 = load i8, i8* %191
%193 = load i8, i8* %140
%194 = icmp eq i8 %192, %193
%195 = fadd double %182, 1.000000e+00
%196 = select i1 %194, double %195, double %182
br label %197
197: ; preds = %183, %189, %179
%198 = phi double [ %180, %179 ], [ %182, %183 ], [ %196, %189 ]
%199 = fcmp une double %198, 0.000000e+00
br i1 %199, label %200, label %208
200: ; preds = %197
%201 = fdiv double %198, %18
%202 = tail call double @llvm.fmuladd.f64(double %129, double %135, double %201)
%203 = fmul double %202, %18
%204 = fmul double %202, %203
%205 = fmul double %126, %135
%206 = fdiv double %204, %205
%207 = fadd double %132, %206
br label %208
208: ; preds = %133, %197, %200, %130
%209 = phi double [ %132, %133 ], [ %132, %130 ], [ %207, %200 ], [ %132, %197 ]
%210 = add nuw nsw i64 %131, 1
%211 = icmp eq i64 %210, 21
br i1 %211, label %212, label %130
212: ; preds = %208
%213 = add nuw nsw i64 %123, 1
%214 = icmp eq i64 %213, 21
br i1 %214, label %215, label %122
215: ; preds = %212
%216 = getelementptr inbounds double, double* %9, i64 %119
store double %209, double* %216
%217 = add nuw nsw i64 %119, 1
%218 = icmp eq i64 %217, %5
br i1 %218, label %219, label %118
219: ; preds = %215, %11, %28
ret double* %9
}