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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int c_sasum(int, double *);
int /*<<< orphan*/ c_saxpy(int, double, double *, double *);
scalar_t__ c_sdot(int, double *, double *);
int /*<<< orphan*/ c_sgefa(double *, int, int, int *, int *);
int /*<<< orphan*/ c_sscal(int, double, double *);
int fabs(double);
int /*<<< orphan*/ memset(double *, int /*<<< orphan*/, int);
void c_sgeco(double *a, int lda, int n, int *ipvt, double *rcond, double *z) {
  int info;
  register int j, k, kb, kp1, l;
  double anorm, ek, s, sm, t, wk, wkm, ynorm;
  anorm = 0.;
  for (j = 1; j <= n; j++) {
    anorm = ({
      const double _x = (double)(anorm);
      const double _y = (double)(c_sasum(n, &a[1 - 1 + (j - 1) * lda]));
      _x > _y ? _x : _y;
    });
  }
  c_sgefa(a, lda, n, ipvt, &info);
  ek = 1.;
  memset(z, 0, n * sizeof(double));
  for (k = 1; k <= n; k++) {
    if (z[k - 1] != 0.) {
      ek = ((-z[k - 1]) >= 0. ? fabs(ek) : -fabs(ek));
    }
    if (fabs(ek - z[k - 1]) > fabs(a[k - 1 + (k - 1) * lda])) {
      s = fabs(a[k - 1 + (k - 1) * lda]) / fabs(ek - z[k - 1]);
      c_sscal(n, s, z);
      ek *= s;
    }
    wk = ek - z[k - 1];
    wkm = -ek - z[k - 1];
    s = fabs(wk);
    sm = fabs(wkm);
    if (a[k - 1 + (k - 1) * lda] != 0.) {
      wk /= a[k - 1 + (k - 1) * lda];
      wkm /= a[k - 1 + (k - 1) * lda];
    } else {
      wk = 1.;
      wkm = 1.;
    }
    kp1 = k + 1;
    if (kp1 <= n) {
      for (j = kp1; j <= n; j++) {
        sm += fabs(z[j - 1] + wkm * a[k - 1 + (j - 1) * lda]);
        z[j - 1] += wk * a[k - 1 + (j - 1) * lda];
        s += fabs(z[j - 1]);
      }
      if (s < sm) {
        t = wkm - wk;
        wk = wkm;
        for (j = kp1; j <= n; j++) {
          z[j - 1] += t * a[k - 1 + (j - 1) * lda];
        }
      }
    }
    z[k - 1] = wk;
  }
  s = 1. / c_sasum(n, z);
  c_sscal(n, s, z);
  for (kb = 1; kb <= n; kb++) {
    k = n + 1 - kb;
    if (k < n) {
      z[k - 1] += c_sdot(n - k, &a[k + 1 - 1 + (k - 1) * lda], &z[k + 1 - 1]);
    }
    if (fabs(z[k - 1]) > 1.) {
      s = 1. / fabs(z[k - 1]);
      c_sscal(n, s, z);
    }
    l = ipvt[k - 1];
    t = z[l - 1];
    z[l - 1] = z[k - 1];
    z[k - 1] = t;
  }
  s = 1. / c_sasum(n, z);
  c_sscal(n, s, z);
  ynorm = 1.;
  for (k = 1; k <= n; k++) {
    l = ipvt[k - 1];
    t = z[l - 1];
    z[l - 1] = z[k - 1];
    z[k - 1] = t;
    if (k < n) {
      c_saxpy(n - k, t, &a[k + 1 - 1 + (k - 1) * lda], &z[k + 1 - 1]);
    }
    if (fabs(z[k - 1]) > 1.) {
      s = 1. / fabs(z[k - 1]);
      c_sscal(n, s, z);
      ynorm *= s;
    }
  }
  s = 1. / c_sasum(n, z);
  c_sscal(n, s, z);
  ynorm *= s;
  for (kb = 1; kb <= n; kb++) {
    k = n + 1 - kb;
    if (fabs(z[k - 1]) > fabs(a[k - 1 + (k - 1) * lda])) {
      s = fabs(a[k - 1 + (k - 1) * lda]) / fabs(z[k - 1]);
      c_sscal(n, s, z);
      ynorm *= s;
    }
    if (a[k - 1 + (k - 1) * lda] != 0.) {
      z[k - 1] /= a[k - 1 + (k - 1) * lda];
    } else {
      z[k - 1] = 1.;
    }
    t = -z[k - 1];
    c_saxpy(k - 1, t, &a[1 - 1 + (k - 1) * lda], &z[1 - 1]);
  }
  s = 1. / c_sasum(n, z);
  c_sscal(n, s, z);
  ynorm *= s;
  if (anorm != 0.) {
    *rcond = ynorm / anorm;
  } else {
    *rcond = 0.;
  }
  return;
}


x86 assembly (clang, -O0):
<c_sgeco>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     124d <c_sgeco+0xdd>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%edi
mov    -0x8(%rbp),%rsi
mov    -0x30(%rbp),%eax
sub    $0x1,%eax
imul   -0xc(%rbp),%eax
add    $0x0,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1080 <c_sasum@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
ucomisd -0x90(%rbp),%xmm0
ff
jbe    1212 <c_sgeco+0xa2>
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
jmp    1222 <c_sgeco+0xb2>
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11a0 <c_sgeco+0x30>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0x18(%rbp),%rcx
lea    -0x2c(%rbp),%r8
call   1050 <c_sgefa@plt>
movsd  0xd94(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x28(%rbp),%rdi
movslq -0x10(%rbp),%rax
shl    $0x3,%rax
mov    %eax,%edx
xor    %esi,%esi
call   1040 <memset@plt>
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     16cd <c_sgeco+0x55d>
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12c3 <c_sgeco+0x153>
jp     12c3 <c_sgeco+0x153>
jmp    1333 <c_sgeco+0x1c3>
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     130e <c_sgeco+0x19e>
movsd  -0x50(%rbp),%xmm0
call   1060 <fabs@plt>
mov    %eax,-0xa4(%rbp)
jmp    1324 <c_sgeco+0x1b4>
movsd  -0x50(%rbp),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    %eax,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,-0xa8(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ecx
mov    -0xa8(%rbp),%eax
cmp    %ecx,%eax
jle    1401 <c_sgeco+0x291>
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,-0xac(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ecx
mov    -0xac(%rbp),%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
movsd  -0x58(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x78(%rbp),%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14ac <c_sgeco+0x33c>
jp     14ac <c_sgeco+0x33c>
jmp    1509 <c_sgeco+0x399>
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x78(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1523 <c_sgeco+0x3b3>
movsd  0xaef(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xae2(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     16a8 <c_sgeco+0x538>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     160f <c_sgeco+0x49f>
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    153e <c_sgeco+0x3ce>
movsd  -0x58(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    16a3 <c_sgeco+0x533>
movsd  -0x78(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     169e <c_sgeco+0x52e>
movsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x30(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1642 <c_sgeco+0x4d2>
jmp    16a3 <c_sgeco+0x533>
jmp    16a8 <c_sgeco+0x538>
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    128d <c_sgeco+0x11d>
mov    -0x10(%rbp),%edi
mov    -0x28(%rbp),%rsi
call   1080 <c_sasum@plt>
cvtsi2sd %eax,%xmm1
movsd  0x91b(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     1866 <c_sgeco+0x6f6>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1789 <c_sgeco+0x619>
mov    -0x10(%rbp),%edi
sub    -0x34(%rbp),%edi
mov    -0x8(%rbp),%rsi
mov    -0x34(%rbp),%eax
add    $0x1,%eax
sub    $0x1,%eax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
imul   -0xc(%rbp),%ecx
add    %ecx,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
mov    -0x28(%rbp),%rdx
mov    -0x34(%rbp),%eax
add    $0x1,%eax
sub    $0x1,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
call   1070 <c_sdot@plt>
cvtsi2sd %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  0x854(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    17f3 <c_sgeco+0x683>
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm1
movsd  0x827(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1706 <c_sgeco+0x596>
mov    -0x10(%rbp),%edi
mov    -0x28(%rbp),%rsi
call   1080 <c_sasum@plt>
cvtsi2sd %eax,%xmm1
movsd  0x782(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
movsd  0x760(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     19fd <c_sgeco+0x88d>
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1971 <c_sgeco+0x801>
mov    -0x10(%rbp),%edi
sub    -0x34(%rbp),%edi
movsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rsi
mov    -0x34(%rbp),%eax
add    $0x1,%eax
sub    $0x1,%eax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
imul   -0xc(%rbp),%ecx
add    %ecx,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
mov    -0x28(%rbp),%rdx
mov    -0x34(%rbp),%eax
add    $0x1,%eax
sub    $0x1,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
call   1090 <c_saxpy@plt>
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  0x66c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    19ea <c_sgeco+0x87a>
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
cvtsi2sd %eax,%xmm1
movsd  0x63f(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
movsd  -0x58(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    19ef <c_sgeco+0x87f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    18ac <c_sgeco+0x73c>
mov    -0x10(%rbp),%edi
mov    -0x28(%rbp),%rsi
call   1080 <c_sasum@plt>
cvtsi2sd %eax,%xmm1
movsd  0x5eb(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
movsd  -0x58(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     1c19 <c_sgeco+0xaa9>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,-0xb0(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ecx
mov    -0xb0(%rbp),%eax
cmp    %ecx,%eax
jle    1b21 <c_sgeco+0x9b1>
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,-0xb4(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ecx
mov    -0xb4(%rbp),%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
movsd  -0x58(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1b57 <c_sgeco+0x9e7>
jp     1b57 <c_sgeco+0x9e7>
jmp    1b95 <c_sgeco+0xa25>
mov    -0x8(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
mov    -0x34(%rbp),%edx
sub    $0x1,%edx
imul   -0xc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1baf <c_sgeco+0xa3f>
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  0x456(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x34(%rbp),%edi
sub    $0x1,%edi
movsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rsi
mov    -0x34(%rbp),%eax
sub    $0x1,%eax
imul   -0xc(%rbp),%eax
add    $0x0,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
mov    -0x28(%rbp),%rdx
call   1090 <c_saxpy@plt>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1a45 <c_sgeco+0x8d5>
mov    -0x10(%rbp),%edi
mov    -0x28(%rbp),%rsi
call   1080 <c_sasum@plt>
cvtsi2sd %eax,%xmm1
movsd  0x3cf(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%edi
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rsi
call   1030 <c_sscal@plt>
movsd  -0x58(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1c77 <c_sgeco+0xb07>
jp     1c77 <c_sgeco+0xb07>
jmp    1c8e <c_sgeco+0xb1e>
movsd  -0x80(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1c99 <c_sgeco+0xb29>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<c_sgeco>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x128,%rsp
mov    %r9,%r12
mov    %rcx,0x60(%rsp)
mov    %edx,%r15d
mov    %rdi,%r13
mov    %esi,0x14(%rsp)
movslq %esi,%rax
mov    %edx,%ebx
test   %edx,%edx
mov    %r8,0xc8(%rsp)
mov    %rbx,0x50(%rsp)
mov    %rax,0x58(%rsp)
jle    11f9 <c_sgeco+0x89>
lea    0x0(,%rax,8),%r14
xorps  %xmm0,%xmm0
mov    %r13,%rbp
nopl   0x0(%rax)
movsd  %xmm0,0x40(%rsp)
mov    %r15d,%edi
mov    %rbp,%rsi
call   1080 <c_sasum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x40(%rsp),%xmm1
maxsd  %xmm0,%xmm1
movsd  %xmm1,0x40(%rsp)
movsd  0x40(%rsp),%xmm0
add    %r14,%rbp
add    $0xffffffffffffffff,%rbx
jne    11c0 <c_sgeco+0x50>
jmp    11fc <c_sgeco+0x8c>
xorps  %xmm0,%xmm0
movsd  %xmm0,0x40(%rsp)
lea    0xfc(%rsp),%r8
mov    %r13,%rdi
mov    0x14(%rsp),%ebx
mov    %ebx,%esi
mov    %r15d,%edx
mov    0x60(%rsp),%rcx
call   1050 <c_sgefa@plt>
lea    0x0(,%r15,8),%edx
mov    %r12,%rdi
xor    %esi,%esi
call   1040 <memset@plt>
not    %ebx
mov    %ebx,0x4c(%rsp)
test   %r15d,%r15d
mov    %r12,0x68(%rsp)
mov    %r15,0x18(%rsp)
mov    %r13,0x38(%rsp)
jle    17dd <c_sgeco+0x66d>
lea    0x1(%r15),%eax
mov    %rax,0x98(%rsp)
lea    -0x2(%r15),%eax
mov    %eax,0x78(%rsp)
lea    -0x8(%r12),%rax
mov    %rax,0xd8(%rsp)
mov    %r13,%rax
mov    0x58(%rsp),%rdx
lea    0x0(,%rdx,8),%r13
lea    -0x1(%r15),%ebx
shl    $0x4,%rdx
mov    %rdx,0xd0(%rsp)
movsd  0xd67(%rip),%xmm0
movl   $0x2,0x48(%rsp)
mov    $0x1,%r9d
xor    %edi,%edi
xorpd  %xmm1,%xmm1
xor    %esi,%esi
mov    %rbx,0xc0(%rsp)
mov    %rax,0xa0(%rsp)
jmp    1318 <c_sgeco+0x1a8>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x98(%rsp),%rbp
mov    0xa8(%rsp),%rdi
movapd 0x80(%rsp),%xmm0
mov    0x70(%rsp),%rax
movsd  %xmm5,-0x8(%r12,%rax,8)
addl   $0x1,0x48(%rsp)
add    $0x1,%rsi
addq   $0x8,0xa0(%rsp)
add    $0xffffffffffffffff,%rbx
add    $0x8,%rdi
cmp    %rbp,%r9
je     16c1 <c_sgeco+0x551>
lea    -0x1(%r9),%rax
mov    %rax,0xb0(%rsp)
lea    -0x1(%r9),%r15d
movsd  -0x8(%r12,%r9,8),%xmm2
ucomisd %xmm1,%xmm2
mov    %r9,0x70(%rsp)
mov    %rdi,0xa8(%rsp)
mov    %rsi,0xb8(%rsp)
jne    134c <c_sgeco+0x1dc>
jnp    1379 <c_sgeco+0x209>
mov    %r9,%rbp
movsd  %xmm2,0x20(%rsp)
call   1060 <fabs@plt>
mov    %eax,%ecx
neg    %ecx
xorpd  %xmm0,%xmm0
ucomisd 0x20(%rsp),%xmm0
cmovae %eax,%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  -0x8(%r12,%rbp,8),%xmm2
movapd %xmm0,0x80(%rsp)
subsd  %xmm2,%xmm0
call   1060 <fabs@plt>
mov    %eax,%r14d
imul   0x14(%rsp),%r15d
movslq %r15d,%rbp
add    0xb0(%rsp),%rbp
mov    0x38(%rsp),%r15
movsd  (%r15,%rbp,8),%xmm0
call   1060 <fabs@plt>
cmp    %eax,%r14d
jle    1420 <c_sgeco+0x2b0>
movsd  (%r15,%rbp,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,0x20(%rsp)
movapd 0x80(%rsp),%xmm0
mov    0x70(%rsp),%r14
subsd  -0x8(%r12,%r14,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ecx
mov    0x20(%rsp),%eax
cltd
idiv   %ecx
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
mov    0x18(%rsp),%rdi
mov    %r12,%rsi
call   1030 <c_sscal@plt>
movapd 0x80(%rsp),%xmm1
mulsd  0x20(%rsp),%xmm1
jmp    142e <c_sgeco+0x2be>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movapd 0x80(%rsp),%xmm1
mov    0x70(%rsp),%r14
movapd %xmm1,%xmm0
xorpd  0xbd6(%rip),%xmm0
movapd %xmm1,0x80(%rsp)
unpcklpd %xmm0,%xmm1
movsd  -0x8(%r12,%r14,8),%xmm0
unpcklpd %xmm0,%xmm0
subpd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
movapd %xmm1,%xmm0
call   1060 <fabs@plt>
mov    %eax,0x8(%rsp)
movaps 0x20(%rsp),%xmm0
movhlps %xmm0,%xmm0
call   1060 <fabs@plt>
movsd  (%r15,%rbp,8),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movapd 0xb94(%rip),%xmm5
jne    1490 <c_sgeco+0x320>
jnp    149e <c_sgeco+0x32e>
unpcklpd %xmm0,%xmm0
movapd 0x20(%rsp),%xmm5
divpd  %xmm0,%xmm5
lea    0x1(%r14),%r9
mov    0x50(%rsp),%r15
cmp    %r15,%r14
mov    0xb8(%rsp),%rsi
jae    12d0 <c_sgeco+0x160>
mov    %r9,0xe8(%rsp)
movslq 0x48(%rsp),%r14
lea    -0x1(%r14),%rdx
imul   0x58(%rsp),%rdx
mov    0xd8(%rsp),%rcx
lea    (%rcx,%r14,8),%rbp
mov    0xa0(%rsp),%rcx
mov    %rdx,0xe0(%rsp)
lea    (%rcx,%rdx,8),%r15
mov    %esi,%ecx
not    %ecx
add    0x18(%rsp),%ecx
mov    %ecx,0x7c(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x8(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movapd %xmm5,%xmm0
unpckhpd %xmm5,%xmm0
movapd %xmm0,0x110(%rsp)
movapd %xmm0,%xmm4
xor    %r12d,%r12d
movapd %xmm5,0x100(%rsp)
movsd  %xmm0,0xf0(%rsp)
nopl   0x0(%rax,%rax,1)
movsd  %xmm1,0x8(%rsp)
movsd  (%r15),%xmm0
mulsd  %xmm4,%xmm0
addsd  0x0(%rbp,%r12,8),%xmm0
call   1060 <fabs@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x20(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  (%r15),%xmm0
mulsd  0x100(%rsp),%xmm0
addsd  0x0(%rbp,%r12,8),%xmm0
movsd  %xmm0,0x0(%rbp,%r12,8)
call   1060 <fabs@plt>
movsd  0x8(%rsp),%xmm1
movsd  0xf0(%rsp),%xmm4
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  %xmm0,%xmm1
add    $0x1,%r12
add    %r13,%r15
cmp    %r12d,%ebx
jne    1540 <c_sgeco+0x3d0>
movsd  0x20(%rsp),%xmm0
ucomisd %xmm1,%xmm0
mov    0x68(%rsp),%r12
mov    0x50(%rsp),%r15
mov    0x98(%rsp),%rbp
mov    0xd0(%rsp),%r8
mov    0xa8(%rsp),%rdi
xorpd  %xmm1,%xmm1
mov    0xb8(%rsp),%rsi
movapd 0x80(%rsp),%xmm0
mov    0xe8(%rsp),%r9
movapd 0x100(%rsp),%xmm5
jbe    12e9 <c_sgeco+0x179>
movapd 0x110(%rsp),%xmm3
subsd  %xmm5,%xmm3
testb  $0x1,0x7c(%rsp)
je     1655 <c_sgeco+0x4e5>
mov    0xe0(%rsp),%rcx
add    0xb0(%rsp),%rcx
mov    0x38(%rsp),%rax
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm3,%xmm2
addsd  -0x8(%r12,%r14,8),%xmm2
movsd  %xmm2,-0x8(%r12,%r14,8)
add    $0x1,%r14
cmp    %esi,0x78(%rsp)
je     16b8 <c_sgeco+0x548>
mov    0x58(%rsp),%rax
imul   %r14,%rax
add    %rsi,%rax
lea    -0x1(%r14),%rcx
imul   %r13,%rcx
add    %rdi,%rcx
mov    0x38(%rsp),%rdx
nopw   0x0(%rax,%rax,1)
movsd  (%rdx,%rcx,1),%xmm2
mulsd  %xmm3,%xmm2
addsd  -0x8(%r12,%r14,8),%xmm2
movsd  %xmm2,-0x8(%r12,%r14,8)
movsd  (%rdx,%rax,8),%xmm2
mulsd  %xmm3,%xmm2
addsd  (%r12,%r14,8),%xmm2
movsd  %xmm2,(%r12,%r14,8)
add    $0x2,%r14
add    %r8,%rdx
cmp    %r14d,%ebp
jne    1680 <c_sgeco+0x510>
movapd %xmm4,%xmm5
jmp    12e9 <c_sgeco+0x179>
mov    0x18(%rsp),%rbx
mov    %ebx,%edi
mov    %r12,%rsi
call   1080 <c_sasum@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x921(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    %ebx,%edi
mov    %r12,%rsi
call   1030 <c_sscal@plt>
test   %ebx,%ebx
jle    1930 <c_sgeco+0x7c0>
mov    0xc0(%rsp),%rax
imul   0x14(%rsp),%eax
add    %ebx,%eax
xor    %r14d,%r14d
jmp    174a <c_sgeco+0x5da>
nopl   0x0(%rax)
mov    0x60(%rsp),%rax
movslq (%rax,%rbp,4),%rax
movsd  -0x8(%r12,%rax,8),%xmm0
movsd  (%r12,%rbp,8),%xmm1
movsd  %xmm1,-0x8(%r12,%rax,8)
movsd  %xmm0,(%r12,%rbp,8)
add    $0xffffffff,%ebx
mov    %r13,%rax
add    0x4c(%rsp),%eax
add    $0x1,%r14
cmp    %r14,%r15
je     1806 <c_sgeco+0x696>
cmp    0x18(%rsp),%ebx
jge    1790 <c_sgeco+0x620>
lea    -0x1(%rbx),%ebp
mov    %rax,%r13
cltq
mov    0x38(%rsp),%rcx
lea    (%rcx,%rax,8),%rsi
movslq %ebx,%rax
lea    (%r12,%rax,8),%rdx
mov    %r14d,%edi
call   1070 <c_sdot@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movslq %ebp,%rbp
addsd  (%r12,%rbp,8),%xmm0
movsd  %xmm0,(%r12,%rbp,8)
jmp    1799 <c_sgeco+0x629>
nopl   0x0(%rax)
mov    %rax,%r13
lea    -0x1(%rbx),%eax
movslq %eax,%rbp
movsd  (%r12,%rbp,8),%xmm0
call   1060 <fabs@plt>
cmp    $0x2,%eax
jl     1710 <c_sgeco+0x5a0>
movsd  (%r12,%rbp,8),%xmm0
call   1060 <fabs@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x839(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    0x18(%rsp),%rdi
mov    %r12,%rsi
call   1030 <c_sscal@plt>
jmp    1710 <c_sgeco+0x5a0>
mov    %r15d,%edi
mov    %r12,%rsi
call   1080 <c_sasum@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x809(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    %r15d,%edi
mov    %r12,%rsi
call   1030 <c_sscal@plt>
mov    0x18(%rsp),%rbx
mov    %ebx,%edi
mov    %r12,%rsi
call   1080 <c_sasum@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x7dc(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
divsd  %xmm1,%xmm0
mov    %ebx,%edi
mov    %r12,%rsi
call   1030 <c_sscal@plt>
test   %ebx,%ebx
jle    1965 <c_sgeco+0x7f5>
mov    0x18(%rsp),%rax
lea    0x1(%rax),%r15d
lea    -0x1(%rax),%r14d
movsd  0x7ab(%rip),%xmm0
mov    $0x1,%ebp
xor    %r13d,%r13d
mov    $0x8,%ebx
movsd  %xmm0,0x8(%rsp)
jmp    188a <c_sgeco+0x71a>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rbp
add    $0xffffffff,%r14d
add    0x14(%rsp),%r13d
add    $0x8,%rbx
cmp    %rbp,%r15
je     1965 <c_sgeco+0x7f5>
mov    0x60(%rsp),%rax
movslq -0x4(%rax,%rbp,4),%rax
movsd  -0x8(%r12,%rax,8),%xmm0
movsd  -0x8(%r12,%rbp,8),%xmm1
movsd  %xmm1,-0x8(%r12,%rax,8)
movsd  %xmm0,-0x8(%r12,%rbp,8)
cmp    0x50(%rsp),%rbp
jae    18d9 <c_sgeco+0x769>
movslq %r13d,%rax
add    %rbp,%rax
mov    0x38(%rsp),%rcx
lea    (%rcx,%rax,8),%rsi
lea    (%r12,%rbx,1),%rdx
mov    %r14d,%edi
call   1090 <c_saxpy@plt>
movsd  -0x8(%r12,%rbp,8),%xmm0
call   1060 <fabs@plt>
cmp    $0x2,%eax
jl     1870 <c_sgeco+0x700>
movsd  -0x8(%r12,%rbp,8),%xmm0
call   1060 <fabs@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x702(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
mov    0x18(%rsp),%rdi
movapd %xmm1,%xmm0
mov    %r12,%rsi
call   1030 <c_sscal@plt>
movsd  0x8(%rsp),%xmm0
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
jmp    1870 <c_sgeco+0x700>
mov    %ebx,%edi
mov    %r12,%rsi
call   1080 <c_sasum@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x6b7(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x6a9(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    %ebx,%edi
mov    %r12,%rsi
call   1030 <c_sscal@plt>
mov    0x18(%rsp),%rbx
mov    %ebx,%edi
mov    %r12,%rsi
call   1080 <c_sasum@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x67d(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
mov    %ebx,%edi
movapd %xmm1,%xmm0
mov    %r12,%rsi
call   1030 <c_sscal@plt>
movsd  0x20(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
test   %ebx,%ebx
jle    1abb <c_sgeco+0x94b>
lea    -0x1(%rbx),%eax
mov    0x14(%rsp),%ecx
mov    %ecx,%ebp
imul   %eax,%ebp
lea    (%rbx,%rbp,1),%r15d
add    $0xffffffff,%r15d
mov    0x38(%rsp),%r13
jmp    1a10 <c_sgeco+0x8a0>
movsd  %xmm0,(%r12,%r14,8)
xorpd  0x632(%rip),%xmm0
movslq %ebp,%rbp
lea    0x0(,%rbp,8),%rsi
add    %r13,%rsi
mov    %r14d,%edi
mov    %r12,%rdx
call   1090 <c_saxpy@plt>
lea    -0x1(%r14),%eax
add    0x4c(%rsp),%r15d
sub    0x14(%rsp),%ebp
addq   $0xffffffffffffffff,0x50(%rsp)
je     1abb <c_sgeco+0x94b>
movslq %eax,%r14
movsd  (%r12,%r14,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ebx
movslq %r15d,%r12
movsd  0x0(%r13,%r12,8),%xmm0
call   1060 <fabs@plt>
cmp    %eax,%ebx
jle    1a88 <c_sgeco+0x918>
movsd  0x0(%r13,%r12,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,0x8(%rsp)
mov    0x68(%rsp),%rbx
movsd  (%rbx,%r14,8),%xmm0
call   1060 <fabs@plt>
mov    %eax,%ecx
mov    0x8(%rsp),%eax
cltd
idiv   %ecx
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    0x18(%rsp),%rdi
mov    %rbx,%rsi
call   1030 <c_sscal@plt>
movsd  0x20(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x0(%r13,%r12,8),%xmm1
ucomisd 0x571(%rip),%xmm1
movsd  0x561(%rip),%xmm0
mov    0x68(%rsp),%r12
jne    1aac <c_sgeco+0x93c>
jnp    19d0 <c_sgeco+0x860>
movsd  (%r12,%r14,8),%xmm0
divsd  %xmm1,%xmm0
jmp    19d0 <c_sgeco+0x860>
mov    0x18(%rsp),%rbx
mov    %ebx,%edi
mov    %r12,%rsi
call   1080 <c_sasum@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x527(%rip),%xmm0
divsd  %xmm1,%xmm0
mov    %ebx,%edi
movsd  %xmm0,0x8(%rsp)
mov    %r12,%rsi
call   1030 <c_sscal@plt>
xorpd  %xmm0,%xmm0
movsd  0x40(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jne    1aff <c_sgeco+0x98f>
jnp    1b0f <c_sgeco+0x99f>
movsd  0x20(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
divsd  %xmm1,%xmm0
mov    0xc8(%rsp),%rax
movsd  %xmm0,(%rax)
add    $0x128,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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