int strsv_(char *uplo, char *trans, char *diag, int *n, double *a, int *lda,
           double *x, int *incx) {
  static int info;
  static double temp;
  static int i, j;
  extern int lsame_(char *, char *);
  static int ix, jx, kx;
  extern int xerbla_(char *, int *);
  static int nounit;
  info = 0;
  if (!lsame_(uplo, "U") && !lsame_(uplo, "L")) {
    info = 1;
  } else if (!lsame_(trans, "N") && !lsame_(trans, "T") &&
             !lsame_(trans, "C")) {
    info = 2;
  } else if (!lsame_(diag, "U") && !lsame_(diag, "N")) {
    info = 3;
  } else if (*n < 0) {
    info = 4;
  } else if (*lda < ((1 > *n) ? 1 : *n)) {
    info = 6;
  } else if (*incx == 0) {
    info = 8;
  }
  if (info != 0) {
    xerbla_("STRSV ", &info);
    return 0;
  }
  if (*n == 0) {
    return 0;
  }
  nounit = lsame_(diag, "N");
  if (*incx <= 0) {
    kx = 1 - (*n - 1) * *incx;
  } else if (*incx != 1) {
    kx = 1;
  }
  if (lsame_(trans, "N")) {
    if (lsame_(uplo, "U")) {
      if (*incx == 1) {
        for (j = *n; j >= 1; --j) {
          if (x[(j)-1] != 0.f) {
            if (nounit) {
              x[(j)-1] /= a[(j)-1 + ((j)-1) * (*lda)];
            }
            temp = x[(j)-1];
            for (i = j - 1; i >= 1; --i) {
              x[(i)-1] -= temp * a[(i)-1 + ((j)-1) * (*lda)];
            }
          }
        }
      } else {
        jx = kx + (*n - 1) * *incx;
        for (j = *n; j >= 1; --j) {
          if (x[(jx)-1] != 0.f) {
            if (nounit) {
              x[(jx)-1] /= a[(j)-1 + ((j)-1) * (*lda)];
            }
            temp = x[(jx)-1];
            ix = jx;
            for (i = j - 1; i >= 1; --i) {
              ix -= *incx;
              x[(ix)-1] -= temp * a[(i)-1 + ((j)-1) * (*lda)];
            }
          }
          jx -= *incx;
        }
      }
    } else {
      if (*incx == 1) {
        for (j = 1; j <= *n; ++j) {
          if (x[(j)-1] != 0.f) {
            if (nounit) {
              x[(j)-1] /= a[(j)-1 + ((j)-1) * (*lda)];
            }
            temp = x[(j)-1];
            for (i = j + 1; i <= *n; ++i) {
              x[(i)-1] -= temp * a[(i)-1 + ((j)-1) * (*lda)];
            }
          }
        }
      } else {
        jx = kx;
        for (j = 1; j <= *n; ++j) {
          if (x[(jx)-1] != 0.f) {
            if (nounit) {
              x[(jx)-1] /= a[(j)-1 + ((j)-1) * (*lda)];
            }
            temp = x[(jx)-1];
            ix = jx;
            for (i = j + 1; i <= *n; ++i) {
              ix += *incx;
              x[(ix)-1] -= temp * a[(i)-1 + ((j)-1) * (*lda)];
            }
          }
          jx += *incx;
        }
      }
    }
  } else {
    if (lsame_(uplo, "U")) {
      if (*incx == 1) {
        for (j = 1; j <= *n; ++j) {
          temp = x[(j)-1];
          for (i = 1; i <= j - 1; ++i) {
            temp -= a[(i)-1 + ((j)-1) * (*lda)] * x[(i)-1];
          }
          if (nounit) {
            temp /= a[(j)-1 + ((j)-1) * (*lda)];
          }
          x[(j)-1] = temp;
        }
      } else {
        jx = kx;
        for (j = 1; j <= *n; ++j) {
          temp = x[(jx)-1];
          ix = kx;
          for (i = 1; i <= j - 1; ++i) {
            temp -= a[(i)-1 + ((j)-1) * (*lda)] * x[(ix)-1];
            ix += *incx;
          }
          if (nounit) {
            temp /= a[(j)-1 + ((j)-1) * (*lda)];
          }
          x[(jx)-1] = temp;
          jx += *incx;
        }
      }
    } else {
      if (*incx == 1) {
        for (j = *n; j >= 1; --j) {
          temp = x[(j)-1];
          for (i = *n; i >= j + 1; --i) {
            temp -= a[(i)-1 + ((j)-1) * (*lda)] * x[(i)-1];
          }
          if (nounit) {
            temp /= a[(j)-1 + ((j)-1) * (*lda)];
          }
          x[(j)-1] = temp;
        }
      } else {
        kx += (*n - 1) * *incx;
        jx = kx;
        for (j = *n; j >= 1; --j) {
          temp = x[(jx)-1];
          ix = kx;
          for (i = *n; i >= j + 1; --i) {
            temp -= a[(i)-1 + ((j)-1) * (*lda)] * x[(ix)-1];
            ix -= *incx;
          }
          if (nounit) {
            temp /= a[(j)-1 + ((j)-1) * (*lda)];
          }
          x[(jx)-1] = temp;
          jx -= *incx;
        }
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<strsv_>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
movl   $0x0,0x3ee6(%rip)
mov    -0x10(%rbp),%rdi
lea    0x1ea3(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
jne    1193 <strsv_+0x73>
mov    -0x10(%rbp),%rdi
lea    0x1e8c(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
jne    1193 <strsv_+0x73>
movl   $0x1,0x3eaa(%rip)
jmp    12c7 <strsv_+0x1a7>
mov    -0x18(%rbp),%rdi
lea    0x1e66(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
jne    11ed <strsv_+0xcd>
mov    -0x18(%rbp),%rdi
lea    0x1e4f(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
jne    11ed <strsv_+0xcd>
mov    -0x18(%rbp),%rdi
lea    0x1e38(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
jne    11ed <strsv_+0xcd>
movl   $0x2,0x3e50(%rip)
jmp    12c2 <strsv_+0x1a2>
mov    -0x20(%rbp),%rdi
lea    0x1e08(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
jne    122e <strsv_+0x10e>
mov    -0x20(%rbp),%rdi
lea    0x1df3(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
jne    122e <strsv_+0x10e>
movl   $0x3,0x3e0f(%rip)
jmp    12bd <strsv_+0x19d>
mov    -0x28(%rbp),%rax
cmpl   $0x0,(%rax)
jge    124a <strsv_+0x12a>
movl   $0x4,0x3df3(%rip)
jmp    12b8 <strsv_+0x198>
mov    -0x38(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x28(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jle    1271 <strsv_+0x151>
mov    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    127a <strsv_+0x15a>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
mov    -0x40(%rbp),%ecx
cmp    %ecx,%eax
jge    1297 <strsv_+0x177>
movl   $0x6,0x3da6(%rip)
jmp    12b3 <strsv_+0x193>
mov    0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jne    12ae <strsv_+0x18e>
movl   $0x8,0x3d8a(%rip)
jmp    12b3 <strsv_+0x193>
jmp    12b8 <strsv_+0x198>
jmp    12bd <strsv_+0x19d>
jmp    12c2 <strsv_+0x1a2>
jmp    12c7 <strsv_+0x1a7>
cmpl   $0x0,0x3d6a(%rip)
je     12f3 <strsv_+0x1d3>
lea    0x1d2f(%rip),%rdi
lea    0x3d56(%rip),%rsi
call   1030 <xerbla_@plt>
movl   $0x0,-0x4(%rbp)
jmp    2057 <strsv_+0xf37>
mov    -0x28(%rbp),%rax
cmpl   $0x0,(%rax)
jne    130c <strsv_+0x1ec>
movl   $0x0,-0x4(%rbp)
jmp    2057 <strsv_+0xf37>
mov    -0x20(%rbp),%rdi
lea    0x1ced(%rip),%rsi
call   1040 <lsame_@plt>
mov    %eax,0x3d3a(%rip)
mov    0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jg     1351 <strsv_+0x231>
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
sub    $0x1,%ecx
mov    0x18(%rbp),%rax
imul   (%rax),%ecx
mov    $0x1,%eax
sub    %ecx,%eax
mov    %eax,0x3d0c(%rip)
jmp    136d <strsv_+0x24d>
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
je     1368 <strsv_+0x248>
movl   $0x1,0x3cf0(%rip)
jmp    136d <strsv_+0x24d>
mov    -0x18(%rbp),%rdi
lea    0x1c8c(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
je     1a1c <strsv_+0x8fc>
mov    -0x10(%rbp),%rdi
lea    0x1c6f(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
je     16de <strsv_+0x5be>
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
jne    151c <strsv_+0x3fc>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3c94(%rip)
cmpl   $0x1,0x3c8d(%rip)
jl     1517 <strsv_+0x3f7>
mov    0x10(%rbp),%rax
mov    0x3c7d(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13f2 <strsv_+0x2d2>
jp     13f2 <strsv_+0x2d2>
jmp    14fe <strsv_+0x3de>
cmpl   $0x0,0x3c63(%rip)
je     1444 <strsv_+0x324>
mov    -0x30(%rbp),%rax
mov    0x3c43(%rip),%ecx
sub    $0x1,%ecx
mov    0x3c3a(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x10(%rbp),%rax
mov    0x3c1c(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
mov    0x3bfe(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3bdf(%rip)
mov    0x3be5(%rip),%eax
sub    $0x1,%eax
mov    %eax,0x3bd8(%rip)
cmpl   $0x1,0x3bd1(%rip)
jl     14f9 <strsv_+0x3d9>
movsd  0x3bbb(%rip),%xmm0
mov    -0x30(%rbp),%rax
mov    0x3bb9(%rip),%ecx
sub    $0x1,%ecx
mov    0x3bb4(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    0x3b92(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movq   %xmm0,%rdx
movabs $0x8000000000000000,%rsi
xor    %rsi,%rdx
movq   %rdx,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x3b5d(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x3b54(%rip)
jmp    1470 <strsv_+0x350>
jmp    14fe <strsv_+0x3de>
jmp    1503 <strsv_+0x3e3>
mov    0x3b43(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x3b3a(%rip)
jmp    13b8 <strsv_+0x298>
jmp    16d9 <strsv_+0x5b9>
mov    0x3b36(%rip),%eax
mov    -0x28(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
mov    0x18(%rbp),%rdx
imul   (%rdx),%ecx
add    %ecx,%eax
mov    %eax,0x3b1a(%rip)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3b06(%rip)
cmpl   $0x1,0x3aff(%rip)
jl     16d4 <strsv_+0x5b4>
mov    0x10(%rbp),%rax
mov    0x3af7(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1580 <strsv_+0x460>
jp     1580 <strsv_+0x460>
jmp    16ac <strsv_+0x58c>
cmpl   $0x0,0x3ad5(%rip)
je     15d2 <strsv_+0x4b2>
mov    -0x30(%rbp),%rax
mov    0x3ab5(%rip),%ecx
sub    $0x1,%ecx
mov    0x3aac(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x10(%rbp),%rax
mov    0x3a96(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
mov    0x3a78(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3a51(%rip)
mov    0x3a5f(%rip),%eax
mov    %eax,0x3a55(%rip)
mov    0x3a4b(%rip),%eax
sub    $0x1,%eax
mov    %eax,0x3a3e(%rip)
cmpl   $0x1,0x3a37(%rip)
jl     16a7 <strsv_+0x587>
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
mov    0x3a2d(%rip),%eax
sub    %ecx,%eax
mov    %eax,0x3a25(%rip)
movsd  0x3a0d(%rip),%xmm0
mov    -0x30(%rbp),%rax
mov    0x3a0b(%rip),%ecx
sub    $0x1,%ecx
mov    0x3a06(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    0x39ec(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movq   %xmm0,%rdx
movabs $0x8000000000000000,%rsi
xor    %rsi,%rdx
movq   %rdx,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x39af(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x39a6(%rip)
jmp    160a <strsv_+0x4ea>
jmp    16ac <strsv_+0x58c>
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
mov    0x399c(%rip),%eax
sub    %ecx,%eax
mov    %eax,0x3994(%rip)
mov    0x3986(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x397d(%rip)
jmp    1546 <strsv_+0x426>
jmp    16d9 <strsv_+0x5b9>
jmp    1a17 <strsv_+0x8f7>
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
jne    1863 <strsv_+0x743>
movl   $0x1,0x3957(%rip)
mov    0x3951(%rip),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     185e <strsv_+0x73e>
mov    0x10(%rbp),%rax
mov    0x393b(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1734 <strsv_+0x614>
jp     1734 <strsv_+0x614>
jmp    1845 <strsv_+0x725>
cmpl   $0x0,0x3921(%rip)
je     1786 <strsv_+0x666>
mov    -0x30(%rbp),%rax
mov    0x3901(%rip),%ecx
sub    $0x1,%ecx
mov    0x38f8(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x10(%rbp),%rax
mov    0x38da(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
mov    0x38bc(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x389d(%rip)
mov    0x38a3(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3896(%rip)
mov    0x3890(%rip),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     1840 <strsv_+0x720>
movsd  0x3874(%rip),%xmm0
mov    -0x30(%rbp),%rax
mov    0x3872(%rip),%ecx
sub    $0x1,%ecx
mov    0x386d(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    0x384b(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movq   %xmm0,%rdx
movabs $0x8000000000000000,%rsi
xor    %rsi,%rdx
movq   %rdx,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x3816(%rip),%eax
add    $0x1,%eax
mov    %eax,0x380d(%rip)
jmp    17b2 <strsv_+0x692>
jmp    1845 <strsv_+0x725>
jmp    184a <strsv_+0x72a>
mov    0x37fc(%rip),%eax
add    $0x1,%eax
mov    %eax,0x37f3(%rip)
jmp    16f5 <strsv_+0x5d5>
jmp    1a12 <strsv_+0x8f2>
mov    0x37ef(%rip),%eax
mov    %eax,0x37e5(%rip)
movl   $0x1,0x37d3(%rip)
mov    0x37cd(%rip),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     1a0d <strsv_+0x8ed>
mov    0x10(%rbp),%rax
mov    0x37bf(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    18b8 <strsv_+0x798>
jp     18b8 <strsv_+0x798>
jmp    19e7 <strsv_+0x8c7>
cmpl   $0x0,0x379d(%rip)
je     190a <strsv_+0x7ea>
mov    -0x30(%rbp),%rax
mov    0x377d(%rip),%ecx
sub    $0x1,%ecx
mov    0x3774(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x10(%rbp),%rax
mov    0x375e(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
mov    0x3740(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3719(%rip)
mov    0x3727(%rip),%eax
mov    %eax,0x371d(%rip)
mov    0x3713(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3706(%rip)
mov    0x3700(%rip),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     19e2 <strsv_+0x8c2>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
add    0x36f0(%rip),%eax
mov    %eax,0x36ea(%rip)
movsd  0x36d2(%rip),%xmm0
mov    -0x30(%rbp),%rax
mov    0x36d0(%rip),%ecx
sub    $0x1,%ecx
mov    0x36cb(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    0x36b1(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movq   %xmm0,%rdx
movabs $0x8000000000000000,%rsi
xor    %rsi,%rdx
movq   %rdx,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x3674(%rip),%eax
add    $0x1,%eax
mov    %eax,0x366b(%rip)
jmp    1942 <strsv_+0x822>
jmp    19e7 <strsv_+0x8c7>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
add    0x3661(%rip),%eax
mov    %eax,0x365b(%rip)
mov    0x364d(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3644(%rip)
jmp    1879 <strsv_+0x759>
jmp    1a12 <strsv_+0x8f2>
jmp    1a17 <strsv_+0x8f7>
jmp    2050 <strsv_+0xf30>
mov    -0x10(%rbp),%rdi
lea    0x15d9(%rip),%rsi
call   1040 <lsame_@plt>
cmp    $0x0,%eax
je     1d31 <strsv_+0xc11>
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
jne    1b99 <strsv_+0xa79>
movl   $0x1,0x3600(%rip)
mov    0x35fa(%rip),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     1b94 <strsv_+0xa74>
mov    0x10(%rbp),%rax
mov    0x35e4(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x35c5(%rip)
movl   $0x1,0x35c3(%rip)
mov    0x35bd(%rip),%eax
mov    0x35bb(%rip),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1b1b <strsv_+0x9fb>
mov    -0x30(%rbp),%rax
mov    0x35a2(%rip),%ecx
sub    $0x1,%ecx
mov    0x359d(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x357b(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x3560(%rip),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3539(%rip)
mov    0x353b(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3532(%rip)
jmp    1a85 <strsv_+0x965>
cmpl   $0x0,0x353a(%rip)
je     1b63 <strsv_+0xa43>
mov    -0x30(%rbp),%rax
mov    0x351a(%rip),%ecx
sub    $0x1,%ecx
mov    0x3511(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x34e9(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x34dd(%rip)
movsd  0x34d5(%rip),%xmm0
mov    0x10(%rbp),%rax
mov    0x34d7(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x34c6(%rip),%eax
add    $0x1,%eax
mov    %eax,0x34bd(%rip)
jmp    1a4c <strsv_+0x92c>
jmp    1d2c <strsv_+0xc0c>
mov    0x34b9(%rip),%eax
mov    %eax,0x34af(%rip)
movl   $0x1,0x349d(%rip)
mov    0x3497(%rip),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     1d27 <strsv_+0xc07>
mov    0x10(%rbp),%rax
mov    0x3489(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3462(%rip)
mov    0x3474(%rip),%eax
mov    %eax,0x3466(%rip)
movl   $0x1,0x3454(%rip)
mov    0x344e(%rip),%eax
mov    0x344c(%rip),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1c9c <strsv_+0xb7c>
mov    -0x30(%rbp),%rax
mov    0x3433(%rip),%ecx
sub    $0x1,%ecx
mov    0x342e(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x3414(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x33f1(%rip),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x33ca(%rip)
mov    0x18(%rbp),%rax
mov    (%rax),%eax
add    0x33ce(%rip),%eax
mov    %eax,0x33c8(%rip)
mov    0x33ba(%rip),%eax
add    $0x1,%eax
mov    %eax,0x33b1(%rip)
jmp    1bf4 <strsv_+0xad4>
cmpl   $0x0,0x33b9(%rip)
je     1ce4 <strsv_+0xbc4>
mov    -0x30(%rbp),%rax
mov    0x3399(%rip),%ecx
sub    $0x1,%ecx
mov    0x3390(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x3368(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x335c(%rip)
movsd  0x3354(%rip),%xmm0
mov    0x10(%rbp),%rax
mov    0x335e(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
mov    (%rax),%eax
add    0x3347(%rip),%eax
mov    %eax,0x3341(%rip)
mov    0x3333(%rip),%eax
add    $0x1,%eax
mov    %eax,0x332a(%rip)
jmp    1baf <strsv_+0xa8f>
jmp    1d2c <strsv_+0xc0c>
jmp    204b <strsv_+0xf2b>
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
jne    1e94 <strsv_+0xd74>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3302(%rip)
cmpl   $0x1,0x32fb(%rip)
jl     1e8f <strsv_+0xd6f>
mov    0x10(%rbp),%rax
mov    0x32eb(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x32cc(%rip)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x32c8(%rip)
mov    0x32c2(%rip),%eax
mov    0x32c0(%rip),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jl     1e16 <strsv_+0xcf6>
mov    -0x30(%rbp),%rax
mov    0x32a7(%rip),%ecx
sub    $0x1,%ecx
mov    0x32a2(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x3280(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x3265(%rip),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x323e(%rip)
mov    0x3240(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x3237(%rip)
jmp    1d80 <strsv_+0xc60>
cmpl   $0x0,0x323f(%rip)
je     1e5e <strsv_+0xd3e>
mov    -0x30(%rbp),%rax
mov    0x321f(%rip),%ecx
sub    $0x1,%ecx
mov    0x3216(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x31ee(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x31e2(%rip)
movsd  0x31da(%rip),%xmm0
mov    0x10(%rbp),%rax
mov    0x31dc(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x31cb(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x31c2(%rip)
jmp    1d4a <strsv_+0xc2a>
jmp    2046 <strsv_+0xf26>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
sub    $0x1,%eax
mov    0x18(%rbp),%rcx
imul   (%rcx),%eax
add    0x31ae(%rip),%eax
mov    %eax,0x31a8(%rip)
mov    0x31a2(%rip),%eax
mov    %eax,0x3198(%rip)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3184(%rip)
cmpl   $0x1,0x317d(%rip)
jl     2041 <strsv_+0xf21>
mov    0x10(%rbp),%rax
mov    0x3175(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x314e(%rip)
mov    0x3160(%rip),%eax
mov    %eax,0x3152(%rip)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x313e(%rip)
mov    0x3138(%rip),%eax
mov    0x3136(%rip),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jl     1fb4 <strsv_+0xe94>
mov    -0x30(%rbp),%rax
mov    0x311d(%rip),%ecx
sub    $0x1,%ecx
mov    0x3118(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x30fe(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x30db(%rip),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x30b4(%rip)
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
mov    0x30b8(%rip),%eax
sub    %ecx,%eax
mov    %eax,0x30b0(%rip)
mov    0x30a2(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x3099(%rip)
jmp    1f0a <strsv_+0xdea>
cmpl   $0x0,0x30a1(%rip)
je     1ffc <strsv_+0xedc>
mov    -0x30(%rbp),%rax
mov    0x3081(%rip),%ecx
sub    $0x1,%ecx
mov    0x3078(%rip),%edx
sub    $0x1,%edx
mov    -0x38(%rbp),%rsi
imul   (%rsi),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x3050(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x3044(%rip)
movsd  0x303c(%rip),%xmm0
mov    0x10(%rbp),%rax
mov    0x3046(%rip),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
mov    0x302f(%rip),%eax
sub    %ecx,%eax
mov    %eax,0x3027(%rip)
mov    0x3019(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x3010(%rip)
jmp    1ec8 <strsv_+0xda8>
jmp    2046 <strsv_+0xf26>
jmp    204b <strsv_+0xf2b>
jmp    2050 <strsv_+0xf30>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<strsv_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r9,%r14
mov    %r8,%r12
mov    %rcx,%r15
mov    %rdx,%rbp
mov    %rsi,%rbx
mov    %rdi,%r13
movl   $0x0,0x2eea(%rip)
lea    0xebf(%rip),%rsi
call   1040 <lsame_@plt>
test   %eax,%eax
jne    1171 <strsv_+0x51>
lea    0xeb1(%rip),%rsi
mov    %r13,%rdi
call   1040 <lsame_@plt>
test   %eax,%eax
je     1237 <strsv_+0x117>
lea    0xe9c(%rip),%rsi
mov    %rbx,%rdi
call   1040 <lsame_@plt>
test   %eax,%eax
jne    11ae <strsv_+0x8e>
lea    0xe8b(%rip),%rsi
mov    %rbx,%rdi
call   1040 <lsame_@plt>
test   %eax,%eax
jne    11ae <strsv_+0x8e>
lea    0xe7a(%rip),%rsi
mov    %rbx,%rdi
call   1040 <lsame_@plt>
test   %eax,%eax
je     124c <strsv_+0x12c>
lea    0xe5b(%rip),%rsi
mov    %rbp,%rdi
call   1040 <lsame_@plt>
test   %eax,%eax
jne    11d4 <strsv_+0xb4>
lea    0xe4c(%rip),%rsi
mov    %rbp,%rdi
call   1040 <lsame_@plt>
test   %eax,%eax
je     123e <strsv_+0x11e>
mov    (%r15),%ecx
test   %ecx,%ecx
js     1230 <strsv_+0x110>
mov    $0x1,%edx
cmovne %ecx,%edx
mov    $0x6,%eax
cmp    %edx,(%r14)
jl     1251 <strsv_+0x131>
mov    0x58(%rsp),%rax
cmpl   $0x0,(%rax)
je     1245 <strsv_+0x125>
cmpl   $0x0,0x2e36(%rip)
jne    1257 <strsv_+0x137>
test   %ecx,%ecx
je     126a <strsv_+0x14a>
lea    0xe09(%rip),%rsi
mov    %rbp,%rdi
call   1040 <lsame_@plt>
mov    %eax,0x2e23(%rip)
mov    0x58(%rsp),%rax
mov    (%rax),%ecx
test   %ecx,%ecx
jle    127b <strsv_+0x15b>
mov    $0x1,%eax
cmp    $0x1,%ecx
jne    128b <strsv_+0x16b>
jmp    1291 <strsv_+0x171>
mov    $0x4,%eax
jmp    1251 <strsv_+0x131>
mov    $0x1,%eax
jmp    1251 <strsv_+0x131>
mov    $0x3,%eax
jmp    1251 <strsv_+0x131>
mov    $0x8,%eax
jmp    1251 <strsv_+0x131>
mov    $0x2,%eax
mov    %eax,0x2ddd(%rip)
lea    0xdbc(%rip),%rdi
lea    0x2dcf(%rip),%rsi
call   1030 <xerbla_@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    (%r15),%edx
add    $0xffffffff,%edx
imul   %ecx,%edx
mov    $0x1,%eax
sub    %edx,%eax
mov    %eax,0x2da7(%rip)
mov    0x50(%rsp),%rbp
lea    0xd77(%rip),%rsi
mov    %rbx,%rdi
call   1040 <lsame_@plt>
mov    %eax,%ebx
lea    0xd62(%rip),%rsi
mov    %r13,%rdi
call   1040 <lsame_@plt>
mov    0x58(%rsp),%rcx
mov    (%rcx),%r11d
test   %ebx,%ebx
je     138f <strsv_+0x26f>
mov    (%r15),%r10d
test   %eax,%eax
je     1495 <strsv_+0x375>
cmp    $0x1,%r11d
jne    155a <strsv_+0x43a>
test   %r10d,%r10d
jle    126a <strsv_+0x14a>
mov    0x2d55(%rip),%r8d
lea    -0x1(%r10),%edx
mov    %r10d,%esi
add    $0xfffffffe,%esi
xorpd  %xmm0,%xmm0
movapd 0xd03(%rip),%xmm1
jmp    1312 <strsv_+0x1f2>
add    $0xffffffff,%edx
add    $0xffffffff,%esi
cmp    $0x1,%r10
mov    %r9,%r10
jle    126a <strsv_+0x14a>
lea    -0x1(%r10),%r9
mov    %r9d,%ecx
movsd  0x0(%rbp,%rcx,8),%xmm2
ucomisd %xmm0,%xmm2
jne    1327 <strsv_+0x207>
jnp    12ff <strsv_+0x1df>
test   %r8d,%r8d
je     1345 <strsv_+0x225>
mov    (%r14),%ebx
imul   %r9d,%ebx
add    %r9d,%ebx
movslq %ebx,%rbx
divsd  (%r12,%rbx,8),%xmm2
movsd  %xmm2,0x0(%rbp,%rcx,8)
cmp    $0x2,%r10
jb     126a <strsv_+0x14a>
xorpd  %xmm1,%xmm2
mov    (%r14),%ebx
imul   %edx,%ebx
mov    %esi,%ecx
nopl   0x0(%rax,%rax,1)
lea    (%rbx,%rcx,1),%eax
cltq
mov    %ecx,%edi
movsd  (%r12,%rax,8),%xmm3
mulsd  %xmm2,%xmm3
addsd  0x0(%rbp,%rdi,8),%xmm3
movsd  %xmm3,0x0(%rbp,%rdi,8)
lea    -0x1(%rcx),%eax
add    $0x1,%ecx
cmp    $0x1,%ecx
mov    %eax,%ecx
jg     1360 <strsv_+0x240>
jmp    12ff <strsv_+0x1df>
test   %eax,%eax
je     162e <strsv_+0x50e>
cmp    $0x1,%r11d
jne    16c9 <strsv_+0x5a9>
cmpl   $0x0,(%r15)
jle    126a <strsv_+0x14a>
mov    0x2c8a(%rip),%r8d
movslq (%r15),%r9
mov    $0x1,%esi
xor    %r11d,%r11d
xor    %ecx,%ecx
jmp    13df <strsv_+0x2bf>
movsd  %xmm0,-0x8(%rbp,%rsi,8)
lea    0x1(%rsi),%rax
add    $0x1,%rcx
add    $0x8,%r11
cmp    %r9,%rsi
mov    %rax,%rsi
jge    126a <strsv_+0x14a>
lea    -0x1(%rsi),%r10
movsd  -0x8(%rbp,%rsi,8),%xmm0
cmp    $0x2,%rsi
jb     1474 <strsv_+0x354>
mov    $0x1,%eax
cmp    $0x1,%rcx
je     1451 <strsv_+0x331>
mov    %rcx,%rdi
and    $0xfffffffffffffffe,%rdi
neg    %rdi
movslq (%r14),%rbx
imul   %r11,%rbx
add    %r12,%rbx
mov    $0x1,%eax
nopw   0x0(%rax,%rax,1)
movsd  -0x8(%rbx,%rax,8),%xmm1
mulsd  -0x8(%rbp,%rax,8),%xmm1
subsd  %xmm1,%xmm0
movsd  (%rbx,%rax,8),%xmm1
mulsd  0x0(%rbp,%rax,8),%xmm1
subsd  %xmm1,%xmm0
lea    (%rdi,%rax,1),%rdx
add    $0x2,%rdx
add    $0x2,%rax
cmp    $0x1,%rdx
jne    1420 <strsv_+0x300>
test   $0x1,%cl
je     1474 <strsv_+0x354>
movslq (%r14),%rdx
imul   %r10,%rdx
add    %rax,%rdx
add    $0xffffffffffffffff,%rdx
movsd  (%r12,%rdx,8),%xmm1
mulsd  -0x8(%rbp,%rax,8),%xmm1
subsd  %xmm1,%xmm0
test   %r8d,%r8d
je     13c1 <strsv_+0x2a1>
movslq (%r14),%rax
movslq %r10d,%rdx
imul   %rax,%rdx
add    %r10,%rdx
divsd  (%r12,%rdx,8),%xmm0
jmp    13c1 <strsv_+0x2a1>
cmp    $0x1,%r11d
jne    178a <strsv_+0x66a>
test   %r10d,%r10d
jle    126a <strsv_+0x14a>
mov    0x2b8d(%rip),%r8d
movslq (%r15),%r9
mov    $0x1,%eax
xor    %r10d,%r10d
xorpd  %xmm0,%xmm0
movapd 0xb3a(%rip),%xmm1
jmp    14dc <strsv_+0x3bc>
lea    0x1(%rax),%rcx
add    $0x1,%r10d
cmp    %r9,%rax
mov    %rcx,%rax
jge    126a <strsv_+0x14a>
movsd  -0x8(%rbp,%rax,8),%xmm2
ucomisd %xmm0,%xmm2
jne    14ea <strsv_+0x3ca>
jnp    14c8 <strsv_+0x3a8>
test   %r8d,%r8d
je     150c <strsv_+0x3ec>
lea    -0x1(%rax),%rsi
movslq (%r14),%rdi
movslq %esi,%rbx
imul   %rdi,%rbx
add    %rsi,%rbx
divsd  (%r12,%rbx,8),%xmm2
movsd  %xmm2,-0x8(%rbp,%rax,8)
movslq (%r15),%rsi
cmp    %rsi,%rax
jge    14c8 <strsv_+0x3a8>
xorpd  %xmm1,%xmm2
mov    (%r15),%edi
mov    (%r14),%ebx
imul   %r10d,%ebx
mov    %eax,%esi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    (%rbx,%rsi,1),%ecx
movslq %ecx,%rcx
mov    %esi,%edx
movsd  (%r12,%rcx,8),%xmm3
mulsd  %xmm2,%xmm3
addsd  0x0(%rbp,%rdx,8),%xmm3
movsd  %xmm3,0x0(%rbp,%rdx,8)
add    $0x1,%esi
cmp    %esi,%edi
jg     1530 <strsv_+0x410>
jmp    14c8 <strsv_+0x3a8>
test   %r10d,%r10d
jle    126a <strsv_+0x14a>
lea    -0x1(%r10),%eax
imul   %eax,%r11d
add    0x2ac6(%rip),%r11d
mov    0x2ac3(%rip),%r8d
xorpd  %xmm0,%xmm0
movapd 0xa7b(%rip),%xmm1
jmp    159f <strsv_+0x47f>
mov    0x58(%rsp),%rcx
sub    (%rcx),%r11d
add    $0xffffffff,%eax
cmp    $0x1,%r10d
mov    %r9d,%r10d
jle    126a <strsv_+0x14a>
movslq %r11d,%rcx
movsd  -0x8(%rbp,%rcx,8),%xmm2
lea    -0x1(%r10),%r9d
ucomisd %xmm0,%xmm2
jne    15b4 <strsv_+0x494>
jnp    1587 <strsv_+0x467>
test   %r8d,%r8d
je     15d6 <strsv_+0x4b6>
add    $0xffffffffffffffff,%rcx
mov    (%r14),%esi
imul   %r9d,%esi
add    %r9d,%esi
movslq %esi,%rsi
divsd  (%r12,%rsi,8),%xmm2
movsd  %xmm2,0x0(%rbp,%rcx,8)
cmp    $0x2,%r10d
jl     126a <strsv_+0x14a>
xorpd  %xmm1,%xmm2
mov    0x58(%rsp),%rcx
mov    (%rcx),%ebx
mov    (%r14),%esi
imul   %eax,%esi
add    $0xfffffffe,%esi
mov    %ebx,%edi
not    %edi
add    %r11d,%edi
mov    %r10d,%ecx
xchg   %ax,%ax
lea    (%rsi,%rcx,1),%edx
movslq %edx,%rdx
movslq %edi,%rdi
movsd  (%r12,%rdx,8),%xmm3
mulsd  %xmm2,%xmm3
addsd  0x0(%rbp,%rdi,8),%xmm3
movsd  %xmm3,0x0(%rbp,%rdi,8)
add    $0xffffffff,%ecx
sub    %ebx,%edi
cmp    $0x1,%ecx
jg     1600 <strsv_+0x4e0>
jmp    1587 <strsv_+0x467>
mov    (%r15),%eax
cmp    $0x1,%r11d
jne    1894 <strsv_+0x774>
test   %eax,%eax
jle    126a <strsv_+0x14a>
mov    0x29f2(%rip),%r9d
movslq (%r15),%rsi
lea    -0x8(%r12),%r8
lea    -0x8(,%rax,8),%rdi
ff
jmp    1673 <strsv_+0x553>
movsd  %xmm0,0x0(%rbp,%rbx,8)
add    $0xfffffffffffffff8,%rdi
cmp    $0x1,%rax
mov    %rbx,%rax
jle    126a <strsv_+0x14a>
movsd  -0x8(%rbp,%rax,8),%xmm0
cmp    %rsi,%rax
jge    16ab <strsv_+0x58b>
movslq (%r14),%rbx
imul   %rdi,%rbx
add    %r8,%rbx
mov    %rsi,%rdx
nopl   0x0(%rax,%rax,1)
movsd  (%rbx,%rdx,8),%xmm1
mulsd  -0x8(%rbp,%rdx,8),%xmm1
lea    -0x1(%rdx),%rcx
subsd  %xmm1,%xmm0
mov    %rcx,%rdx
cmp    %rax,%rcx
jg     1690 <strsv_+0x570>
lea    -0x1(%rax),%rbx
test   %r9d,%r9d
je     165c <strsv_+0x53c>
movslq (%r14),%rcx
movslq %ebx,%rdx
imul   %rcx,%rdx
add    %rbx,%rdx
divsd  (%r12,%rdx,8),%xmm0
jmp    165c <strsv_+0x53c>
cmpl   $0x0,(%r15)
jle    126a <strsv_+0x14a>
mov    0x295e(%rip),%r13d
mov    0x295b(%rip),%r9d
mov    0x58(%rsp),%rax
mov    (%rax),%r10d
mov    (%r15),%r11d
lea    -0x1(%r13),%eax
cltq
lea    0x0(,%rax,8),%r8
add    %rbp,%r8
mov    $0x1,%edi
xor    %ebx,%ebx
jmp    1722 <strsv_+0x602>
movsd  %xmm0,0x0(%rbp,%r15,8)
add    %r10d,%r13d
lea    0x1(%rdi),%eax
add    $0x1,%rbx
cmp    %r11d,%edi
mov    %eax,%edi
jge    126a <strsv_+0x14a>
movslq %r13d,%r15
movsd  -0x8(%rbp,%r15,8),%xmm0
cmp    $0x2,%edi
jb     1768 <strsv_+0x648>
movslq (%r14),%rax
mov    0x58(%rsp),%rcx
movslq (%rcx),%rdx
movslq %ebx,%rcx
imul   %rax,%rcx
lea    (%r12,%rcx,8),%rsi
shl    $0x3,%rdx
mov    %r8,%rcx
xor    %eax,%eax
movsd  (%rsi,%rax,8),%xmm1
mulsd  (%rcx),%xmm1
subsd  %xmm1,%xmm0
add    $0x1,%rax
add    %rdx,%rcx
cmp    %eax,%ebx
jne    1750 <strsv_+0x630>
add    $0xffffffffffffffff,%r15
test   %r9d,%r9d
je     1706 <strsv_+0x5e6>
lea    -0x1(%rdi),%eax
mov    (%r14),%ecx
imul   %eax,%ecx
add    %eax,%ecx
movslq %ecx,%rax
divsd  (%r12,%rax,8),%xmm0
jmp    1706 <strsv_+0x5e6>
test   %r10d,%r10d
jle    126a <strsv_+0x14a>
mov    0x289e(%rip),%r10d
mov    0x289c(%rip),%esi
mov    0x58(%rsp),%rax
mov    (%rax),%eax
mov    (%r15),%edi
lea    -0x1(%r10),%r13d
mov    $0x1,%r8d
xorpd  %xmm0,%xmm0
movapd 0x840(%rip),%xmm1
mov    %esi,0xc(%rsp)
mov    %eax,0x14(%rsp)
mov    %edi,0x10(%rsp)
jmp    17e4 <strsv_+0x6c4>
lea    0x1(%r8),%r11d
add    %eax,%r10d
add    %eax,%r13d
cmp    %edi,%r8d
mov    %r11d,%r8d
jge    126a <strsv_+0x14a>
movslq %r10d,%rcx
movsd  -0x8(%rbp,%rcx,8),%xmm2
ucomisd %xmm0,%xmm2
jne    17f5 <strsv_+0x6d5>
jnp    17ce <strsv_+0x6ae>
test   %esi,%esi
je     181a <strsv_+0x6fa>
add    $0xffffffffffffffff,%rcx
lea    -0x1(%r8),%edx
imul   (%r14),%edx
add    %r8d,%edx
add    $0xffffffff,%edx
movslq %edx,%rdx
divsd  (%r12,%rdx,8),%xmm2
movsd  %xmm2,0x0(%rbp,%rcx,8)
lea    0x1(%r8),%r11d
cmp    (%r15),%r8d
jge    17d2 <strsv_+0x6b2>
lea    -0x1(%r8),%esi
xorpd  %xmm1,%xmm2
mov    0x58(%rsp),%rax
movslq (%rax),%rdx
imul   (%r14),%esi
mov    (%r15),%ecx
lea    (%rdx,%r13,1),%edi
movslq %edi,%rdi
lea    0x0(,%rdi,8),%rdi
add    %rbp,%rdi
shl    $0x3,%rdx
mov    %r8d,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    (%rsi,%rbx,1),%r9d
movslq %r9d,%rax
movsd  (%r12,%rax,8),%xmm3
mulsd  %xmm2,%xmm3
addsd  (%rdi),%xmm3
movsd  %xmm3,(%rdi)
add    $0x1,%ebx
add    %rdx,%rdi
cmp    %ecx,%ebx
jl     1860 <strsv_+0x740>
mov    0xc(%rsp),%esi
mov    0x14(%rsp),%eax
mov    0x10(%rsp),%edi
jmp    17d2 <strsv_+0x6b2>
lea    -0x1(%rax),%r13d
imul   %r13d,%r11d
mov    0x2796(%rip),%ecx
lea    (%r11,%rcx,1),%esi
mov    %esi,0x278c(%rip)
test   %eax,%eax
jle    126a <strsv_+0x14a>
mov    0x2781(%rip),%r8d
mov    (%r15),%r15d
mov    0x58(%rsp),%rdx
mov    (%rdx),%r10d
lea    -0x1(%r15),%edx
mov    %edx,0xc(%rsp)
add    %ecx,%r11d
add    $0xffffffff,%r11d
jmp    18ef <strsv_+0x7cf>
movsd  %xmm0,0x0(%rbp,%rdx,8)
sub    %r10d,%esi
add    $0xffffffff,%r13d
cmp    $0x1,%eax
mov    %ecx,%eax
jle    126a <strsv_+0x14a>
movslq %esi,%rdx
movsd  -0x8(%rbp,%rdx,8),%xmm0
cmp    %eax,%r15d
jle    1940 <strsv_+0x820>
mov    0x58(%rsp),%rcx
mov    (%rcx),%edi
mov    (%r14),%ecx
imul   %r13d,%ecx
add    0xc(%rsp),%ecx
movslq %ecx,%rcx
lea    (%r12,%rcx,8),%rbx
mov    %r11d,%ecx
mov    %r15d,%r9d
nopl   0x0(%rax)
add    $0xffffffff,%r9d
movsd  (%rbx),%xmm1
movslq %ecx,%rcx
mulsd  0x0(%rbp,%rcx,8),%xmm1
subsd  %xmm1,%xmm0
add    $0xfffffffffffffff8,%rbx
sub    %edi,%ecx
cmp    %eax,%r9d
jg     1920 <strsv_+0x800>
add    $0xffffffffffffffff,%rdx
lea    -0x1(%rax),%ecx
test   %r8d,%r8d
je     18d7 <strsv_+0x7b7>
mov    (%r14),%edi
imul   %ecx,%edi
add    %ecx,%edi
movslq %edi,%rdi
divsd  (%r12,%rdi,8),%xmm0
jmp    18d7 <strsv_+0x7b7>

LLVM IR (-O0):
@strsv_.info = internal global i32 0
@strsv_.temp = internal global double 0.000000e+00
@strsv_.i = internal global i32 0
@strsv_.j = internal global i32 0
@strsv_.ix = internal global i32 0
@strsv_.jx = internal global i32 0
@strsv_.kx = internal global i32 0
@strsv_.nounit = internal global i32 0
@.str = [2 x i8] c"U\00"
@.str.1 = [2 x i8] c"L\00"
@.str.2 = [2 x i8] c"N\00"
@.str.3 = [2 x i8] c"T\00"
@.str.4 = [2 x i8] c"C\00"
@.str.5 = [7 x i8] c"STRSV \00"
define i32 @strsv_(i8* %0, i8* %1, i8* %2, i32* %3, double* %4, i32* %5, double* %6, i32* %7) {
%9 = alloca i32
%10 = alloca i8*
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i32*
%14 = alloca double*
%15 = alloca i32*
%16 = alloca double*
%17 = alloca i32*
store i8* %0, i8** %10
store i8* %1, i8** %11
store i8* %2, i8** %12
store i32* %3, i32** %13
store double* %4, double** %14
store i32* %5, i32** %15
store double* %6, double** %16
store i32* %7, i32** %17
store i32 0, i32* @strsv_.info
%18 = load i8*, i8** %10
%19 = call i32 @lsame_(i8* %18, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%20 = icmp ne i32 %19, 0
br i1 %20, label %26, label %21
21: ; preds = %8
%22 = load i8*, i8** %10
%23 = call i32 @lsame_(i8* %22, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%24 = icmp ne i32 %23, 0
br i1 %24, label %26, label %25
25: ; preds = %21
store i32 1, i32* @strsv_.info
br label %77
26: ; preds = %21, %8
%27 = load i8*, i8** %11
%28 = call i32 @lsame_(i8* %27, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%29 = icmp ne i32 %28, 0
br i1 %29, label %39, label %30
30: ; preds = %26
%31 = load i8*, i8** %11
%32 = call i32 @lsame_(i8* %31, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%33 = icmp ne i32 %32, 0
br i1 %33, label %39, label %34
34: ; preds = %30
%35 = load i8*, i8** %11
%36 = call i32 @lsame_(i8* %35, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
%37 = icmp ne i32 %36, 0
br i1 %37, label %39, label %38
38: ; preds = %34
store i32 2, i32* @strsv_.info
br label %76
39: ; preds = %34, %30, %26
%40 = load i8*, i8** %12
%41 = call i32 @lsame_(i8* %40, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%42 = icmp ne i32 %41, 0
br i1 %42, label %48, label %43
43: ; preds = %39
%44 = load i8*, i8** %12
%45 = call i32 @lsame_(i8* %44, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%46 = icmp ne i32 %45, 0
br i1 %46, label %48, label %47
47: ; preds = %43
store i32 3, i32* @strsv_.info
br label %75
48: ; preds = %43, %39
%49 = load i32*, i32** %13
%50 = load i32, i32* %49
%51 = icmp slt i32 %50, 0
br i1 %51, label %52, label %53
52: ; preds = %48
store i32 4, i32* @strsv_.info
br label %74
53: ; preds = %48
%54 = load i32*, i32** %15
%55 = load i32, i32* %54
%56 = load i32*, i32** %13
%57 = load i32, i32* %56
%58 = icmp sgt i32 1, %57
br i1 %58, label %59, label %60
59: ; preds = %53
br label %63
60: ; preds = %53
%61 = load i32*, i32** %13
%62 = load i32, i32* %61
br label %63
63: ; preds = %60, %59
%64 = phi i32 [ 1, %59 ], [ %62, %60 ]
%65 = icmp slt i32 %55, %64
br i1 %65, label %66, label %67
66: ; preds = %63
store i32 6, i32* @strsv_.info
br label %73
67: ; preds = %63
%68 = load i32*, i32** %17
%69 = load i32, i32* %68
%70 = icmp eq i32 %69, 0
br i1 %70, label %71, label %72
71: ; preds = %67
store i32 8, i32* @strsv_.info
br label %72
72: ; preds = %71, %67
br label %73
73: ; preds = %72, %66
br label %74
74: ; preds = %73, %52
br label %75
75: ; preds = %74, %47
br label %76
76: ; preds = %75, %38
br label %77
77: ; preds = %76, %25
%78 = load i32, i32* @strsv_.info
%79 = icmp ne i32 %78, 0
br i1 %79, label %80, label %82
80: ; preds = %77
%81 = call i32 @xerbla_(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), i32* @strsv_.info)
store i32 0, i32* %9
br label %813
82: ; preds = %77
%83 = load i32*, i32** %13
%84 = load i32, i32* %83
%85 = icmp eq i32 %84, 0
br i1 %85, label %86, label %87
86: ; preds = %82
store i32 0, i32* %9
br label %813
87: ; preds = %82
%88 = load i8*, i8** %12
%89 = call i32 @lsame_(i8* %88, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
store i32 %89, i32* @strsv_.nounit
%90 = load i32*, i32** %17
%91 = load i32, i32* %90
%92 = icmp sle i32 %91, 0
br i1 %92, label %93, label %101
93: ; preds = %87
%94 = load i32*, i32** %13
%95 = load i32, i32* %94
%96 = sub nsw i32 %95, 1
%97 = load i32*, i32** %17
%98 = load i32, i32* %97
%99 = mul nsw i32 %96, %98
%100 = sub nsw i32 1, %99
store i32 %100, i32* @strsv_.kx
br label %107
101: ; preds = %87
%102 = load i32*, i32** %17
%103 = load i32, i32* %102
%104 = icmp ne i32 %103, 1
br i1 %104, label %105, label %106
105: ; preds = %101
store i32 1, i32* @strsv_.kx
br label %106
106: ; preds = %105, %101
br label %107
107: ; preds = %106, %93
%108 = load i8*, i8** %11
%109 = call i32 @lsame_(i8* %108, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%110 = icmp ne i32 %109, 0
br i1 %110, label %111, label %477
111: ; preds = %107
%112 = load i8*, i8** %10
%113 = call i32 @lsame_(i8* %112, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%114 = icmp ne i32 %113, 0
br i1 %114, label %115, label %297
115: ; preds = %111
%116 = load i32*, i32** %17
%117 = load i32, i32* %116
%118 = icmp eq i32 %117, 1
br i1 %118, label %119, label %199
119: ; preds = %115
%120 = load i32*, i32** %13
%121 = load i32, i32* %120
store i32 %121, i32* @strsv_.j
br label %122
122: ; preds = %195, %119
%123 = load i32, i32* @strsv_.j
%124 = icmp sge i32 %123, 1
br i1 %124, label %125, label %198
125: ; preds = %122
%126 = load double*, double** %16
%127 = load i32, i32* @strsv_.j
%128 = sub nsw i32 %127, 1
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds double, double* %126, i64 %129
%131 = load double, double* %130
%132 = fcmp une double %131, 0.000000e+00
br i1 %132, label %133, label %194
133: ; preds = %125
%134 = load i32, i32* @strsv_.nounit
%135 = icmp ne i32 %134, 0
br i1 %135, label %136, label %156
136: ; preds = %133
%137 = load double*, double** %14
%138 = load i32, i32* @strsv_.j
%139 = sub nsw i32 %138, 1
%140 = load i32, i32* @strsv_.j
%141 = sub nsw i32 %140, 1
%142 = load i32*, i32** %15
%143 = load i32, i32* %142
%144 = mul nsw i32 %141, %143
%145 = add nsw i32 %139, %144
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds double, double* %137, i64 %146
%148 = load double, double* %147
%149 = load double*, double** %16
%150 = load i32, i32* @strsv_.j
%151 = sub nsw i32 %150, 1
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds double, double* %149, i64 %152
%154 = load double, double* %153
%155 = fdiv double %154, %148
store double %155, double* %153
br label %156
156: ; preds = %136, %133
%157 = load double*, double** %16
%158 = load i32, i32* @strsv_.j
%159 = sub nsw i32 %158, 1
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds double, double* %157, i64 %160
%162 = load double, double* %161
store double %162, double* @strsv_.temp
%163 = load i32, i32* @strsv_.j
%164 = sub nsw i32 %163, 1
store i32 %164, i32* @strsv_.i
br label %165
165: ; preds = %190, %156
%166 = load i32, i32* @strsv_.i
%167 = icmp sge i32 %166, 1
br i1 %167, label %168, label %193
168: ; preds = %165
%169 = load double, double* @strsv_.temp
%170 = load double*, double** %14
%171 = load i32, i32* @strsv_.i
%172 = sub nsw i32 %171, 1
%173 = load i32, i32* @strsv_.j
%174 = sub nsw i32 %173, 1
%175 = load i32*, i32** %15
%176 = load i32, i32* %175
%177 = mul nsw i32 %174, %176
%178 = add nsw i32 %172, %177
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds double, double* %170, i64 %179
%181 = load double, double* %180
%182 = load double*, double** %16
%183 = load i32, i32* @strsv_.i
%184 = sub nsw i32 %183, 1
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds double, double* %182, i64 %185
%187 = load double, double* %186
%188 = fneg double %169
%189 = call double @llvm.fmuladd.f64(double %188, double %181, double %187)
store double %189, double* %186
br label %190
190: ; preds = %168
%191 = load i32, i32* @strsv_.i
%192 = add nsw i32 %191, -1
store i32 %192, i32* @strsv_.i
br label %165
193: ; preds = %165
br label %194
194: ; preds = %193, %125
br label %195
195: ; preds = %194
%196 = load i32, i32* @strsv_.j
%197 = add nsw i32 %196, -1
store i32 %197, i32* @strsv_.j
br label %122
198: ; preds = %122
br label %296
199: ; preds = %115
%200 = load i32, i32* @strsv_.kx
%201 = load i32*, i32** %13
%202 = load i32, i32* %201
%203 = sub nsw i32 %202, 1
%204 = load i32*, i32** %17
%205 = load i32, i32* %204
%206 = mul nsw i32 %203, %205
%207 = add nsw i32 %200, %206
store i32 %207, i32* @strsv_.jx
%208 = load i32*, i32** %13
%209 = load i32, i32* %208
store i32 %209, i32* @strsv_.j
br label %210
210: ; preds = %292, %199
%211 = load i32, i32* @strsv_.j
%212 = icmp sge i32 %211, 1
br i1 %212, label %213, label %295
213: ; preds = %210
%214 = load double*, double** %16
%215 = load i32, i32* @strsv_.jx
%216 = sub nsw i32 %215, 1
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds double, double* %214, i64 %217
%219 = load double, double* %218
%220 = fcmp une double %219, 0.000000e+00
br i1 %220, label %221, label %287
221: ; preds = %213
%222 = load i32, i32* @strsv_.nounit
%223 = icmp ne i32 %222, 0
br i1 %223, label %224, label %244
224: ; preds = %221
%225 = load double*, double** %14
%226 = load i32, i32* @strsv_.j
%227 = sub nsw i32 %226, 1
%228 = load i32, i32* @strsv_.j
%229 = sub nsw i32 %228, 1
%230 = load i32*, i32** %15
%231 = load i32, i32* %230
%232 = mul nsw i32 %229, %231
%233 = add nsw i32 %227, %232
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds double, double* %225, i64 %234
%236 = load double, double* %235
%237 = load double*, double** %16
%238 = load i32, i32* @strsv_.jx
%239 = sub nsw i32 %238, 1
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds double, double* %237, i64 %240
%242 = load double, double* %241
%243 = fdiv double %242, %236
store double %243, double* %241
br label %244
244: ; preds = %224, %221
%245 = load double*, double** %16
%246 = load i32, i32* @strsv_.jx
%247 = sub nsw i32 %246, 1
%248 = sext i32 %247 to i64
%249 = getelementptr inbounds double, double* %245, i64 %248
%250 = load double, double* %249
store double %250, double* @strsv_.temp
%251 = load i32, i32* @strsv_.jx
store i32 %251, i32* @strsv_.ix
%252 = load i32, i32* @strsv_.j
%253 = sub nsw i32 %252, 1
store i32 %253, i32* @strsv_.i
br label %254
254: ; preds = %283, %244
%255 = load i32, i32* @strsv_.i
%256 = icmp sge i32 %255, 1
br i1 %256, label %257, label %286
257: ; preds = %254
%258 = load i32*, i32** %17
%259 = load i32, i32* %258
%260 = load i32, i32* @strsv_.ix
%261 = sub nsw i32 %260, %259
store i32 %261, i32* @strsv_.ix
%262 = load double, double* @strsv_.temp
%263 = load double*, double** %14
%264 = load i32, i32* @strsv_.i
%265 = sub nsw i32 %264, 1
%266 = load i32, i32* @strsv_.j
%267 = sub nsw i32 %266, 1
%268 = load i32*, i32** %15
%269 = load i32, i32* %268
%270 = mul nsw i32 %267, %269
%271 = add nsw i32 %265, %270
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds double, double* %263, i64 %272
%274 = load double, double* %273
%275 = load double*, double** %16
%276 = load i32, i32* @strsv_.ix
%277 = sub nsw i32 %276, 1
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds double, double* %275, i64 %278
%280 = load double, double* %279
%281 = fneg double %262
%282 = call double @llvm.fmuladd.f64(double %281, double %274, double %280)
store double %282, double* %279
br label %283
283: ; preds = %257
%284 = load i32, i32* @strsv_.i
%285 = add nsw i32 %284, -1
store i32 %285, i32* @strsv_.i
br label %254
286: ; preds = %254
br label %287
287: ; preds = %286, %213
%288 = load i32*, i32** %17
%289 = load i32, i32* %288
%290 = load i32, i32* @strsv_.jx
%291 = sub nsw i32 %290, %289
store i32 %291, i32* @strsv_.jx
br label %292
292: ; preds = %287
%293 = load i32, i32* @strsv_.j
%294 = add nsw i32 %293, -1
store i32 %294, i32* @strsv_.j
br label %210
295: ; preds = %210
br label %296
296: ; preds = %295, %198
br label %476
297: ; preds = %111
%298 = load i32*, i32** %17
%299 = load i32, i32* %298
%300 = icmp eq i32 %299, 1
br i1 %300, label %301, label %383
301: ; preds = %297
store i32 1, i32* @strsv_.j
br label %302
302: ; preds = %379, %301
%303 = load i32, i32* @strsv_.j
%304 = load i32*, i32** %13
%305 = load i32, i32* %304
%306 = icmp sle i32 %303, %305
br i1 %306, label %307, label %382
307: ; preds = %302
%308 = load double*, double** %16
%309 = load i32, i32* @strsv_.j
%310 = sub nsw i32 %309, 1
%311 = sext i32 %310 to i64
%312 = getelementptr inbounds double, double* %308, i64 %311
%313 = load double, double* %312
%314 = fcmp une double %313, 0.000000e+00
br i1 %314, label %315, label %378
315: ; preds = %307
%316 = load i32, i32* @strsv_.nounit
%317 = icmp ne i32 %316, 0
br i1 %317, label %318, label %338
318: ; preds = %315
%319 = load double*, double** %14
%320 = load i32, i32* @strsv_.j
%321 = sub nsw i32 %320, 1
%322 = load i32, i32* @strsv_.j
%323 = sub nsw i32 %322, 1
%324 = load i32*, i32** %15
%325 = load i32, i32* %324
%326 = mul nsw i32 %323, %325
%327 = add nsw i32 %321, %326
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds double, double* %319, i64 %328
%330 = load double, double* %329
%331 = load double*, double** %16
%332 = load i32, i32* @strsv_.j
%333 = sub nsw i32 %332, 1
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds double, double* %331, i64 %334
%336 = load double, double* %335
%337 = fdiv double %336, %330
store double %337, double* %335
br label %338
338: ; preds = %318, %315
%339 = load double*, double** %16
%340 = load i32, i32* @strsv_.j
%341 = sub nsw i32 %340, 1
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds double, double* %339, i64 %342
%344 = load double, double* %343
store double %344, double* @strsv_.temp
%345 = load i32, i32* @strsv_.j
%346 = add nsw i32 %345, 1
store i32 %346, i32* @strsv_.i
br label %347
347: ; preds = %374, %338
%348 = load i32, i32* @strsv_.i
%349 = load i32*, i32** %13
%350 = load i32, i32* %349
%351 = icmp sle i32 %348, %350
br i1 %351, label %352, label %377
352: ; preds = %347
%353 = load double, double* @strsv_.temp
%354 = load double*, double** %14
%355 = load i32, i32* @strsv_.i
%356 = sub nsw i32 %355, 1
%357 = load i32, i32* @strsv_.j
%358 = sub nsw i32 %357, 1
%359 = load i32*, i32** %15
%360 = load i32, i32* %359
%361 = mul nsw i32 %358, %360
%362 = add nsw i32 %356, %361
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds double, double* %354, i64 %363
%365 = load double, double* %364
%366 = load double*, double** %16
%367 = load i32, i32* @strsv_.i
%368 = sub nsw i32 %367, 1
%369 = sext i32 %368 to i64
%370 = getelementptr inbounds double, double* %366, i64 %369
%371 = load double, double* %370
%372 = fneg double %353
%373 = call double @llvm.fmuladd.f64(double %372, double %365, double %371)
store double %373, double* %370
br label %374
374: ; preds = %352
%375 = load i32, i32* @strsv_.i
%376 = add nsw i32 %375, 1
store i32 %376, i32* @strsv_.i
br label %347
377: ; preds = %347
br label %378
378: ; preds = %377, %307
br label %379
379: ; preds = %378
%380 = load i32, i32* @strsv_.j
%381 = add nsw i32 %380, 1
store i32 %381, i32* @strsv_.j
br label %302
382: ; preds = %302
br label %475
383: ; preds = %297
%384 = load i32, i32* @strsv_.kx
store i32 %384, i32* @strsv_.jx
store i32 1, i32* @strsv_.j
br label %385
385: ; preds = %471, %383
%386 = load i32, i32* @strsv_.j
%387 = load i32*, i32** %13
%388 = load i32, i32* %387
%389 = icmp sle i32 %386, %388
br i1 %389, label %390, label %474
390: ; preds = %385
%391 = load double*, double** %16
%392 = load i32, i32* @strsv_.jx
%393 = sub nsw i32 %392, 1
%394 = sext i32 %393 to i64
%395 = getelementptr inbounds double, double* %391, i64 %394
%396 = load double, double* %395
%397 = fcmp une double %396, 0.000000e+00
br i1 %397, label %398, label %466
398: ; preds = %390
%399 = load i32, i32* @strsv_.nounit
%400 = icmp ne i32 %399, 0
br i1 %400, label %401, label %421
401: ; preds = %398
%402 = load double*, double** %14
%403 = load i32, i32* @strsv_.j
%404 = sub nsw i32 %403, 1
%405 = load i32, i32* @strsv_.j
%406 = sub nsw i32 %405, 1
%407 = load i32*, i32** %15
%408 = load i32, i32* %407
%409 = mul nsw i32 %406, %408
%410 = add nsw i32 %404, %409
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds double, double* %402, i64 %411
%413 = load double, double* %412
%414 = load double*, double** %16
%415 = load i32, i32* @strsv_.jx
%416 = sub nsw i32 %415, 1
%417 = sext i32 %416 to i64
%418 = getelementptr inbounds double, double* %414, i64 %417
%419 = load double, double* %418
%420 = fdiv double %419, %413
store double %420, double* %418
br label %421
421: ; preds = %401, %398
%422 = load double*, double** %16
%423 = load i32, i32* @strsv_.jx
%424 = sub nsw i32 %423, 1
%425 = sext i32 %424 to i64
%426 = getelementptr inbounds double, double* %422, i64 %425
%427 = load double, double* %426
store double %427, double* @strsv_.temp
%428 = load i32, i32* @strsv_.jx
store i32 %428, i32* @strsv_.ix
%429 = load i32, i32* @strsv_.j
%430 = add nsw i32 %429, 1
store i32 %430, i32* @strsv_.i
br label %431
431: ; preds = %462, %421
%432 = load i32, i32* @strsv_.i
%433 = load i32*, i32** %13
%434 = load i32, i32* %433
%435 = icmp sle i32 %432, %434
br i1 %435, label %436, label %465
436: ; preds = %431
%437 = load i32*, i32** %17
%438 = load i32, i32* %437
%439 = load i32, i32* @strsv_.ix
%440 = add nsw i32 %439, %438
store i32 %440, i32* @strsv_.ix
%441 = load double, double* @strsv_.temp
%442 = load double*, double** %14
%443 = load i32, i32* @strsv_.i
%444 = sub nsw i32 %443, 1
%445 = load i32, i32* @strsv_.j
%446 = sub nsw i32 %445, 1
%447 = load i32*, i32** %15
%448 = load i32, i32* %447
%449 = mul nsw i32 %446, %448
%450 = add nsw i32 %444, %449
%451 = sext i32 %450 to i64
%452 = getelementptr inbounds double, double* %442, i64 %451
%453 = load double, double* %452
%454 = load double*, double** %16
%455 = load i32, i32* @strsv_.ix
%456 = sub nsw i32 %455, 1
%457 = sext i32 %456 to i64
%458 = getelementptr inbounds double, double* %454, i64 %457
%459 = load double, double* %458
%460 = fneg double %441
%461 = call double @llvm.fmuladd.f64(double %460, double %453, double %459)
store double %461, double* %458
br label %462
462: ; preds = %436
%463 = load i32, i32* @strsv_.i
%464 = add nsw i32 %463, 1
store i32 %464, i32* @strsv_.i
br label %431
465: ; preds = %431
br label %466
466: ; preds = %465, %390
%467 = load i32*, i32** %17
%468 = load i32, i32* %467
%469 = load i32, i32* @strsv_.jx
%470 = add nsw i32 %469, %468
store i32 %470, i32* @strsv_.jx
br label %471
471: ; preds = %466
%472 = load i32, i32* @strsv_.j
%473 = add nsw i32 %472, 1
store i32 %473, i32* @strsv_.j
br label %385
474: ; preds = %385
br label %475
475: ; preds = %474, %382
br label %476
476: ; preds = %475, %296
br label %812
477: ; preds = %107
%478 = load i8*, i8** %10
%479 = call i32 @lsame_(i8* %478, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%480 = icmp ne i32 %479, 0
br i1 %480, label %481, label %640
481: ; preds = %477
%482 = load i32*, i32** %17
%483 = load i32, i32* %482
%484 = icmp eq i32 %483, 1
br i1 %484, label %485, label %557
485: ; preds = %481
store i32 1, i32* @strsv_.j
br label %486
486: ; preds = %553, %485
%487 = load i32, i32* @strsv_.j
%488 = load i32*, i32** %13
%489 = load i32, i32* %488
%490 = icmp sle i32 %487, %489
br i1 %490, label %491, label %556
491: ; preds = %486
%492 = load double*, double** %16
%493 = load i32, i32* @strsv_.j
%494 = sub nsw i32 %493, 1
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds double, double* %492, i64 %495
%497 = load double, double* %496
store double %497, double* @strsv_.temp
store i32 1, i32* @strsv_.i
br label %498
498: ; preds = %525, %491
%499 = load i32, i32* @strsv_.i
%500 = load i32, i32* @strsv_.j
%501 = sub nsw i32 %500, 1
%502 = icmp sle i32 %499, %501
br i1 %502, label %503, label %528
503: ; preds = %498
%504 = load double*, double** %14
%505 = load i32, i32* @strsv_.i
%506 = sub nsw i32 %505, 1
%507 = load i32, i32* @strsv_.j
%508 = sub nsw i32 %507, 1
%509 = load i32*, i32** %15
%510 = load i32, i32* %509
%511 = mul nsw i32 %508, %510
%512 = add nsw i32 %506, %511
%513 = sext i32 %512 to i64
%514 = getelementptr inbounds double, double* %504, i64 %513
%515 = load double, double* %514
%516 = load double*, double** %16
%517 = load i32, i32* @strsv_.i
%518 = sub nsw i32 %517, 1
%519 = sext i32 %518 to i64
%520 = getelementptr inbounds double, double* %516, i64 %519
%521 = load double, double* %520
%522 = load double, double* @strsv_.temp
%523 = fneg double %515
%524 = call double @llvm.fmuladd.f64(double %523, double %521, double %522)
store double %524, double* @strsv_.temp
br label %525
525: ; preds = %503
%526 = load i32, i32* @strsv_.i
%527 = add nsw i32 %526, 1
store i32 %527, i32* @strsv_.i
br label %498
528: ; preds = %498
%529 = load i32, i32* @strsv_.nounit
%530 = icmp ne i32 %529, 0
br i1 %530, label %531, label %546
531: ; preds = %528
%532 = load double*, double** %14
%533 = load i32, i32* @strsv_.j
%534 = sub nsw i32 %533, 1
%535 = load i32, i32* @strsv_.j
%536 = sub nsw i32 %535, 1
%537 = load i32*, i32** %15
%538 = load i32, i32* %537
%539 = mul nsw i32 %536, %538
%540 = add nsw i32 %534, %539
%541 = sext i32 %540 to i64
%542 = getelementptr inbounds double, double* %532, i64 %541
%543 = load double, double* %542
%544 = load double, double* @strsv_.temp
%545 = fdiv double %544, %543
store double %545, double* @strsv_.temp
br label %546
546: ; preds = %531, %528
%547 = load double, double* @strsv_.temp
%548 = load double*, double** %16
%549 = load i32, i32* @strsv_.j
%550 = sub nsw i32 %549, 1
%551 = sext i32 %550 to i64
%552 = getelementptr inbounds double, double* %548, i64 %551
store double %547, double* %552
br label %553
553: ; preds = %546
%554 = load i32, i32* @strsv_.j
%555 = add nsw i32 %554, 1
store i32 %555, i32* @strsv_.j
br label %486
556: ; preds = %486
br label %639
557: ; preds = %481
%558 = load i32, i32* @strsv_.kx
store i32 %558, i32* @strsv_.jx
store i32 1, i32* @strsv_.j
br label %559
559: ; preds = %635, %557
%560 = load i32, i32* @strsv_.j
%561 = load i32*, i32** %13
%562 = load i32, i32* %561
%563 = icmp sle i32 %560, %562
br i1 %563, label %564, label %638
564: ; preds = %559
%565 = load double*, double** %16
%566 = load i32, i32* @strsv_.jx
%567 = sub nsw i32 %566, 1
%568 = sext i32 %567 to i64
%569 = getelementptr inbounds double, double* %565, i64 %568
%570 = load double, double* %569
store double %570, double* @strsv_.temp
%571 = load i32, i32* @strsv_.kx
store i32 %571, i32* @strsv_.ix
store i32 1, i32* @strsv_.i
br label %572
572: ; preds = %603, %564
%573 = load i32, i32* @strsv_.i
%574 = load i32, i32* @strsv_.j
%575 = sub nsw i32 %574, 1
%576 = icmp sle i32 %573, %575
br i1 %576, label %577, label %606
577: ; preds = %572
%578 = load double*, double** %14
%579 = load i32, i32* @strsv_.i
%580 = sub nsw i32 %579, 1
%581 = load i32, i32* @strsv_.j
%582 = sub nsw i32 %581, 1
%583 = load i32*, i32** %15
%584 = load i32, i32* %583
%585 = mul nsw i32 %582, %584
%586 = add nsw i32 %580, %585
%587 = sext i32 %586 to i64
%588 = getelementptr inbounds double, double* %578, i64 %587
%589 = load double, double* %588
%590 = load double*, double** %16
%591 = load i32, i32* @strsv_.ix
%592 = sub nsw i32 %591, 1
%593 = sext i32 %592 to i64
%594 = getelementptr inbounds double, double* %590, i64 %593
%595 = load double, double* %594
%596 = load double, double* @strsv_.temp
%597 = fneg double %589
%598 = call double @llvm.fmuladd.f64(double %597, double %595, double %596)
store double %598, double* @strsv_.temp
%599 = load i32*, i32** %17
%600 = load i32, i32* %599
%601 = load i32, i32* @strsv_.ix
%602 = add nsw i32 %601, %600
store i32 %602, i32* @strsv_.ix
br label %603
603: ; preds = %577
%604 = load i32, i32* @strsv_.i
%605 = add nsw i32 %604, 1
store i32 %605, i32* @strsv_.i
br label %572
606: ; preds = %572
%607 = load i32, i32* @strsv_.nounit
%608 = icmp ne i32 %607, 0
br i1 %608, label %609, label %624
609: ; preds = %606
%610 = load double*, double** %14
%611 = load i32, i32* @strsv_.j
%612 = sub nsw i32 %611, 1
%613 = load i32, i32* @strsv_.j
%614 = sub nsw i32 %613, 1
%615 = load i32*, i32** %15
%616 = load i32, i32* %615
%617 = mul nsw i32 %614, %616
%618 = add nsw i32 %612, %617
%619 = sext i32 %618 to i64
%620 = getelementptr inbounds double, double* %610, i64 %619
%621 = load double, double* %620
%622 = load double, double* @strsv_.temp
%623 = fdiv double %622, %621
store double %623, double* @strsv_.temp
br label %624
624: ; preds = %609, %606
%625 = load double, double* @strsv_.temp
%626 = load double*, double** %16
%627 = load i32, i32* @strsv_.jx
%628 = sub nsw i32 %627, 1
%629 = sext i32 %628 to i64
%630 = getelementptr inbounds double, double* %626, i64 %629
store double %625, double* %630
%631 = load i32*, i32** %17
%632 = load i32, i32* %631
%633 = load i32, i32* @strsv_.jx
%634 = add nsw i32 %633, %632
store i32 %634, i32* @strsv_.jx
br label %635
635: ; preds = %624
%636 = load i32, i32* @strsv_.j
%637 = add nsw i32 %636, 1
store i32 %637, i32* @strsv_.j
br label %559
638: ; preds = %559
br label %639
639: ; preds = %638, %556
br label %811
640: ; preds = %477
%641 = load i32*, i32** %17
%642 = load i32, i32* %641
%643 = icmp eq i32 %642, 1
br i1 %643, label %644, label %718
644: ; preds = %640
%645 = load i32*, i32** %13
%646 = load i32, i32* %645
store i32 %646, i32* @strsv_.j
br label %647
647: ; preds = %714, %644
%648 = load i32, i32* @strsv_.j
%649 = icmp sge i32 %648, 1
br i1 %649, label %650, label %717
650: ; preds = %647
%651 = load double*, double** %16
%652 = load i32, i32* @strsv_.j
%653 = sub nsw i32 %652, 1
%654 = sext i32 %653 to i64
%655 = getelementptr inbounds double, double* %651, i64 %654
%656 = load double, double* %655
store double %656, double* @strsv_.temp
%657 = load i32*, i32** %13
%658 = load i32, i32* %657
store i32 %658, i32* @strsv_.i
br label %659
659: ; preds = %686, %650
%660 = load i32, i32* @strsv_.i
%661 = load i32, i32* @strsv_.j
%662 = add nsw i32 %661, 1
%663 = icmp sge i32 %660, %662
br i1 %663, label %664, label %689
664: ; preds = %659
%665 = load double*, double** %14
%666 = load i32, i32* @strsv_.i
%667 = sub nsw i32 %666, 1
%668 = load i32, i32* @strsv_.j
%669 = sub nsw i32 %668, 1
%670 = load i32*, i32** %15
%671 = load i32, i32* %670
%672 = mul nsw i32 %669, %671
%673 = add nsw i32 %667, %672
%674 = sext i32 %673 to i64
%675 = getelementptr inbounds double, double* %665, i64 %674
%676 = load double, double* %675
%677 = load double*, double** %16
%678 = load i32, i32* @strsv_.i
%679 = sub nsw i32 %678, 1
%680 = sext i32 %679 to i64
%681 = getelementptr inbounds double, double* %677, i64 %680
%682 = load double, double* %681
%683 = load double, double* @strsv_.temp
%684 = fneg double %676
%685 = call double @llvm.fmuladd.f64(double %684, double %682, double %683)
store double %685, double* @strsv_.temp
br label %686
686: ; preds = %664
%687 = load i32, i32* @strsv_.i
%688 = add nsw i32 %687, -1
store i32 %688, i32* @strsv_.i
br label %659
689: ; preds = %659
%690 = load i32, i32* @strsv_.nounit
%691 = icmp ne i32 %690, 0
br i1 %691, label %692, label %707
692: ; preds = %689
%693 = load double*, double** %14
%694 = load i32, i32* @strsv_.j
%695 = sub nsw i32 %694, 1
%696 = load i32, i32* @strsv_.j
%697 = sub nsw i32 %696, 1
%698 = load i32*, i32** %15
%699 = load i32, i32* %698
%700 = mul nsw i32 %697, %699
%701 = add nsw i32 %695, %700
%702 = sext i32 %701 to i64
%703 = getelementptr inbounds double, double* %693, i64 %702
%704 = load double, double* %703
%705 = load double, double* @strsv_.temp
%706 = fdiv double %705, %704
store double %706, double* @strsv_.temp
br label %707
707: ; preds = %692, %689
%708 = load double, double* @strsv_.temp
%709 = load double*, double** %16
%710 = load i32, i32* @strsv_.j
%711 = sub nsw i32 %710, 1
%712 = sext i32 %711 to i64
%713 = getelementptr inbounds double, double* %709, i64 %712
store double %708, double* %713
br label %714
714: ; preds = %707
%715 = load i32, i32* @strsv_.j
%716 = add nsw i32 %715, -1
store i32 %716, i32* @strsv_.j
br label %647
717: ; preds = %647
br label %810
718: ; preds = %640
%719 = load i32*, i32** %13
%720 = load i32, i32* %719
%721 = sub nsw i32 %720, 1
%722 = load i32*, i32** %17
%723 = load i32, i32* %722
%724 = mul nsw i32 %721, %723
%725 = load i32, i32* @strsv_.kx
%726 = add nsw i32 %725, %724
store i32 %726, i32* @strsv_.kx
%727 = load i32, i32* @strsv_.kx
store i32 %727, i32* @strsv_.jx
%728 = load i32*, i32** %13
%729 = load i32, i32* %728
store i32 %729, i32* @strsv_.j
br label %730
730: ; preds = %806, %718
%731 = load i32, i32* @strsv_.j
%732 = icmp sge i32 %731, 1
br i1 %732, label %733, label %809
733: ; preds = %730
%734 = load double*, double** %16
%735 = load i32, i32* @strsv_.jx
%736 = sub nsw i32 %735, 1
%737 = sext i32 %736 to i64
%738 = getelementptr inbounds double, double* %734, i64 %737
%739 = load double, double* %738
store double %739, double* @strsv_.temp
%740 = load i32, i32* @strsv_.kx
store i32 %740, i32* @strsv_.ix
%741 = load i32*, i32** %13
%742 = load i32, i32* %741
store i32 %742, i32* @strsv_.i
br label %743
743: ; preds = %774, %733
%744 = load i32, i32* @strsv_.i
%745 = load i32, i32* @strsv_.j
%746 = add nsw i32 %745, 1
%747 = icmp sge i32 %744, %746
br i1 %747, label %748, label %777
748: ; preds = %743
%749 = load double*, double** %14
%750 = load i32, i32* @strsv_.i
%751 = sub nsw i32 %750, 1
%752 = load i32, i32* @strsv_.j
%753 = sub nsw i32 %752, 1
%754 = load i32*, i32** %15
%755 = load i32, i32* %754
%756 = mul nsw i32 %753, %755
%757 = add nsw i32 %751, %756
%758 = sext i32 %757 to i64
%759 = getelementptr inbounds double, double* %749, i64 %758
%760 = load double, double* %759
%761 = load double*, double** %16
%762 = load i32, i32* @strsv_.ix
%763 = sub nsw i32 %762, 1
%764 = sext i32 %763 to i64
%765 = getelementptr inbounds double, double* %761, i64 %764
%766 = load double, double* %765
%767 = load double, double* @strsv_.temp
%768 = fneg double %760
%769 = call double @llvm.fmuladd.f64(double %768, double %766, double %767)
store double %769, double* @strsv_.temp
%770 = load i32*, i32** %17
%771 = load i32, i32* %770
%772 = load i32, i32* @strsv_.ix
%773 = sub nsw i32 %772, %771
store i32 %773, i32* @strsv_.ix
br label %774
774: ; preds = %748
%775 = load i32, i32* @strsv_.i
%776 = add nsw i32 %775, -1
store i32 %776, i32* @strsv_.i
br label %743
777: ; preds = %743
%778 = load i32, i32* @strsv_.nounit
%779 = icmp ne i32 %778, 0
br i1 %779, label %780, label %795
780: ; preds = %777
%781 = load double*, double** %14
%782 = load i32, i32* @strsv_.j
%783 = sub nsw i32 %782, 1
%784 = load i32, i32* @strsv_.j
%785 = sub nsw i32 %784, 1
%786 = load i32*, i32** %15
%787 = load i32, i32* %786
%788 = mul nsw i32 %785, %787
%789 = add nsw i32 %783, %788
%790 = sext i32 %789 to i64
%791 = getelementptr inbounds double, double* %781, i64 %790
%792 = load double, double* %791
%793 = load double, double* @strsv_.temp
%794 = fdiv double %793, %792
store double %794, double* @strsv_.temp
br label %795
795: ; preds = %780, %777
%796 = load double, double* @strsv_.temp
%797 = load double*, double** %16
%798 = load i32, i32* @strsv_.jx
%799 = sub nsw i32 %798, 1
%800 = sext i32 %799 to i64
%801 = getelementptr inbounds double, double* %797, i64 %800
store double %796, double* %801
%802 = load i32*, i32** %17
%803 = load i32, i32* %802
%804 = load i32, i32* @strsv_.jx
%805 = sub nsw i32 %804, %803
store i32 %805, i32* @strsv_.jx
br label %806
806: ; preds = %795
%807 = load i32, i32* @strsv_.j
%808 = add nsw i32 %807, -1
store i32 %808, i32* @strsv_.j
br label %730
809: ; preds = %730
br label %810
810: ; preds = %809, %717
br label %811
811: ; preds = %810, %639
br label %812
812: ; preds = %811, %476
store i32 0, i32* %9
br label %813
813: ; preds = %812, %86, %80
%814 = load i32, i32* %9
ret i32 %814
}

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