int zgtsv_(int *n, int *nrhs, double *dl_r, double *dl_i, double *d__r,
           double *d__i, double *du_r, double *du_i, double *b_r, double *b_i,
           int *ldb, int *info) {
  static int b_dim1, b_offset, i__1, i__2, i__3, i__4, i__5, i__6, i__7;
  static double d__1, d__2, d__3, d__4;
  static double z__1_r, z__1_i, z__2_r, z__2_i, z__3_r, z__3_i, z__4_r, z__4_i,
      z__5_r, z__5_i;
  void z_div(double *, double *, double *, double *, double *, double *);
  static double temp_r, temp_i, mult_r, mult_i;
  static int j, k;
  --dl_r;
  --dl_i;
  --d__r;
  --d__i;
  --du_r;
  --du_i;
  b_dim1 = *ldb;
  b_offset = 1 + b_dim1 * 1;
  b_r -= b_offset;
  b_i -= b_offset;
  *info = 0;
  if (*n < 0) {
    *info = -1;
  } else if (*nrhs < 0) {
    *info = -2;
  } else if (*ldb < ((1) >= (*n) ? (1) : (*n))) {
    *info = -7;
  }
  if (*info != 0) {
    i__1 = -(*info);
    return 0;
  }
  if (*n == 0) {
    return 0;
  }
  i__1 = *n - 1;
  for (k = 1; k <= i__1; ++k) {
    i__2 = k;
    if (dl_r[i__2] == 0. && dl_i[i__2] == 0.) {
      i__2 = k;
      if (d__r[i__2] == 0. && d__i[i__2] == 0.) {
        *info = k;
        return 0;
      }
    } else {
      i__2 = k;
      i__3 = k;
      if ((d__1 = d__r[i__2], abs(d__1)) + (d__2 = d__i[k], abs(d__2)) >=
          (d__3 = dl_r[i__3], abs(d__3)) + (d__4 = dl_i[k], abs(d__4))) {
        z_div(&z__1_r, &z__1_i, &dl_r[k], &dl_i[k], &d__r[k], &d__i[k]);
        mult_r = z__1_r, mult_i = z__1_i;
        i__2 = k + 1;
        i__3 = k + 1;
        i__4 = k;
        z__2_r = mult_r * du_r[i__4] - mult_i * du_i[i__4],
        z__2_i = mult_r * du_i[i__4] + mult_i * du_r[i__4];
        z__1_r = d__r[i__3] - z__2_r, z__1_i = d__i[i__3] - z__2_i;
        d__r[i__2] = z__1_r, d__i[i__2] = z__1_i;
        i__2 = *nrhs;
        for (j = 1; j <= i__2; ++j) {
          i__3 = (j)*b_dim1 + k + 1;
          i__4 = (j)*b_dim1 + k + 1;
          i__5 = (j)*b_dim1 + k;
          z__2_r = mult_r * b_r[i__5] - mult_i * b_i[i__5],
          z__2_i = mult_r * b_i[i__5] + mult_i * b_r[i__5];
          z__1_r = b_r[i__4] - z__2_r, z__1_i = b_i[i__4] - z__2_i;
          b_r[i__3] = z__1_r, b_i[i__3] = z__1_i;
        }
        if (k < *n - 1) {
          i__2 = k;
          dl_r[i__2] = 0., dl_i[i__2] = 0.;
        }
      } else {
        z_div(&z__1_r, &z__1_i, &d__r[k], &d__i[k], &dl_r[k], &dl_i[k]);
        mult_r = z__1_r, mult_i = z__1_i;
        i__2 = k;
        i__3 = k;
        d__r[i__2] = dl_r[i__3], d__i[i__2] = dl_i[i__3];
        i__2 = k + 1;
        temp_r = d__r[i__2], temp_i = d__i[i__2];
        i__2 = k + 1;
        i__3 = k;
        z__2_r = mult_r * temp_r - mult_i * temp_i,
        z__2_i = mult_r * temp_i + mult_i * temp_r;
        z__1_r = du_r[i__3] - z__2_r, z__1_i = du_i[i__3] - z__2_i;
        d__r[i__2] = z__1_r, d__i[i__2] = z__1_i;
        if (k < *n - 1) {
          i__2 = k;
          i__3 = k + 1;
          dl_r[i__2] = du_r[i__3], dl_i[i__2] = du_i[i__3];
          i__2 = k + 1;
          z__2_r = -mult_r, z__2_i = -mult_i;
          i__3 = k;
          z__1_r = z__2_r * dl_r[i__3] - z__2_i * dl_i[i__3],
          z__1_i = z__2_r * dl_i[i__3] + z__2_i * dl_r[i__3];
          du_r[i__2] = z__1_r, du_i[i__2] = z__1_i;
        }
        i__2 = k;
        du_r[i__2] = temp_r, du_i[i__2] = temp_i;
        i__2 = *nrhs;
        for (j = 1; j <= i__2; ++j) {
          i__3 = (j)*b_dim1 + k;
          temp_r = b_r[i__3], temp_i = b_i[i__3];
          i__3 = (j)*b_dim1 + k;
          i__4 = (j)*b_dim1 + k + 1;
          b_r[i__3] = b_r[i__4], b_i[i__3] = b_i[i__4];
          i__3 = (j)*b_dim1 + k + 1;
          i__4 = (j)*b_dim1 + k + 1;
          z__2_r = mult_r * b_r[i__4] - mult_i * b_i[i__4],
          z__2_i = mult_r * b_i[i__4] + mult_i * b_r[i__4];
          z__1_r = temp_r - z__2_r, z__1_i = temp_i - z__2_i;
          b_r[i__3] = z__1_r, b_i[i__3] = z__1_i;
        }
      }
    }
  }
  i__1 = *n;
  if (d__r[i__1] == 0. && d__i[i__1] == 0.) {
    *info = *n;
    return 0;
  }
  i__1 = *nrhs;
  for (j = 1; j <= i__1; ++j) {
    i__2 = (j)*b_dim1 + *n;
    z_div(&z__1_r, &z__1_i, &b_r[(j)*b_dim1 + *n], &b_i[(j)*b_dim1 + *n],
          &d__r[*n], &d__i[*n]);
    b_r[i__2] = z__1_r, b_i[i__2] = z__1_i;
    if (*n > 1) {
      i__2 = (j)*b_dim1 + *n - 1;
      i__3 = (j)*b_dim1 + *n - 1;
      i__4 = *n - 1;
      i__5 = (j)*b_dim1 + *n;
      z__3_r = du_r[i__4] * b_r[i__5] - du_i[i__4] * b_i[i__5],
      z__3_i = du_r[i__4] * b_i[i__5] + du_i[i__4] * b_r[i__5];
      z__2_r = b_r[i__3] - z__3_r, z__2_i = b_i[i__3] - z__3_i;
      z_div(&z__1_r, &z__1_i, &z__2_r, &z__2_i, &d__r[*n - 1], &d__i[*n - 1]);
      b_r[i__2] = z__1_r, b_i[i__2] = z__1_i;
    }
    for (k = *n - 2; k >= 1; --k) {
      i__2 = (j)*b_dim1 + k;
      i__3 = (j)*b_dim1 + k;
      i__4 = k;
      i__5 = (j)*b_dim1 + k + 1;
      z__4_r = du_r[i__4] * b_r[i__5] - du_i[i__4] * b_i[i__5],
      z__4_i = du_r[i__4] * b_i[i__5] + du_i[i__4] * b_r[i__5];
      z__3_r = b_r[i__3] - z__4_r, z__3_i = b_i[i__3] - z__4_i;
      i__6 = k;
      i__7 = (j)*b_dim1 + k + 2;
      z__5_r = dl_r[i__6] * b_r[i__7] - dl_i[i__6] * b_i[i__7],
      z__5_i = dl_r[i__6] * b_i[i__7] + dl_i[i__6] * b_r[i__7];
      z__2_r = z__3_r - z__5_r, z__2_i = z__3_i - z__5_i;
      z_div(&z__1_r, &z__1_i, &z__2_r, &z__2_i, &d__r[k], &d__i[k]);
      b_r[i__2] = z__1_r, b_i[i__2] = z__1_i;
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<zgtsv_>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
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)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x38(%rbp)
mov    0x10(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,0x10(%rbp)
mov    0x18(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,0x18(%rbp)
mov    0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3e8c(%rip)
mov    0x3e86(%rip),%eax
shl    $0x0,%eax
add    $0x1,%eax
mov    %eax,0x3e7e(%rip)
mov    0x3e78(%rip),%ecx
mov    0x20(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,0x20(%rbp)
mov    0x3e5b(%rip),%ecx
mov    0x28(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,0x28(%rbp)
mov    0x38(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jge    121e <zgtsv_+0xfe>
mov    0x38(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    128c <zgtsv_+0x16c>
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jge    123a <zgtsv_+0x11a>
mov    0x38(%rbp),%rax
movl   $0xfffffffe,(%rax)
jmp    1287 <zgtsv_+0x167>
mov    0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jl     1261 <zgtsv_+0x141>
mov    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    126a <zgtsv_+0x14a>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
mov    -0x40(%rbp),%ecx
cmp    %ecx,%eax
jge    1282 <zgtsv_+0x162>
mov    0x38(%rbp),%rax
movl   $0xfffffff9,(%rax)
jmp    1287 <zgtsv_+0x167>
jmp    128c <zgtsv_+0x16c>
mov    0x38(%rbp),%rax
cmpl   $0x0,(%rax)
je     12b3 <zgtsv_+0x193>
mov    0x38(%rbp),%rcx
xor    %eax,%eax
sub    (%rcx),%eax
mov    %eax,0x3d99(%rip)
movl   $0x0,-0x4(%rbp)
jmp    24aa <zgtsv_+0x138a>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jne    12cc <zgtsv_+0x1ac>
movl   $0x0,-0x4(%rbp)
jmp    24aa <zgtsv_+0x138a>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
sub    $0x1,%eax
mov    %eax,0x3d65(%rip)
movl   $0x1,0x3e0f(%rip)
mov    0x3e09(%rip),%eax
cmp    0x3d4f(%rip),%eax
jg     1e52 <zgtsv_+0xd32>
mov    0x3df7(%rip),%eax
mov    %eax,0x3d41(%rip)
mov    -0x20(%rbp),%rax
movslq 0x3d36(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13b8 <zgtsv_+0x298>
jp     13b8 <zgtsv_+0x298>
mov    -0x28(%rbp),%rax
movslq 0x3d13(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13b8 <zgtsv_+0x298>
jp     13b8 <zgtsv_+0x298>
mov    0x3da5(%rip),%eax
mov    %eax,0x3cef(%rip)
mov    -0x30(%rbp),%rax
movslq 0x3ce4(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13b3 <zgtsv_+0x293>
jp     13b3 <zgtsv_+0x293>
mov    -0x38(%rbp),%rax
movslq 0x3cc1(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13b3 <zgtsv_+0x293>
jp     13b3 <zgtsv_+0x293>
mov    0x3d53(%rip),%ecx
mov    0x38(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    24aa <zgtsv_+0x138a>
jmp    1e39 <zgtsv_+0xd19>
mov    0x3d36(%rip),%eax
mov    %eax,0x3c80(%rip)
mov    0x3d2a(%rip),%eax
mov    %eax,0x3c78(%rip)
mov    -0x30(%rbp),%rax
movslq 0x3c69(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3c78(%rip)
cvttsd2si 0x3c70(%rip),%edi
call   1030 <abs@plt>
mov    %eax,-0x4c(%rbp)
mov    -0x38(%rbp),%rax
movslq 0x3cf1(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3c58(%rip)
cvttsd2si 0x3c50(%rip),%edi
call   1030 <abs@plt>
mov    %eax,%ecx
mov    -0x4c(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x44(%rbp)
mov    -0x20(%rbp),%rax
movslq 0x3c16(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3c31(%rip)
cvttsd2si 0x3c29(%rip),%edi
call   1030 <abs@plt>
mov    %eax,-0x48(%rbp)
mov    -0x28(%rbp),%rax
movslq 0x3c9a(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3c11(%rip)
cvttsd2si 0x3c09(%rip),%edi
call   1030 <abs@plt>
mov    -0x48(%rbp),%ecx
mov    %eax,%edx
mov    -0x44(%rbp),%eax
add    %edx,%ecx
cmp    %ecx,%eax
jl     1814 <zgtsv_+0x6f4>
mov    -0x20(%rbp),%rdx
movslq 0x3c63(%rip),%rax
shl    $0x3,%rax
add    %rax,%rdx
mov    -0x28(%rbp),%rcx
movslq 0x3c51(%rip),%rax
shl    $0x3,%rax
add    %rax,%rcx
mov    -0x30(%rbp),%r8
movslq 0x3c3f(%rip),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x38(%rbp),%r9
movslq 0x3c2d(%rip),%rax
shl    $0x3,%rax
add    %rax,%r9
lea    0x3bab(%rip),%rdi
lea    0x3bac(%rip),%rsi
call   1040 <z_div@plt>
movsd  0x3b97(%rip),%xmm0
movsd  %xmm0,0x3bef(%rip)
movsd  0x3b8f(%rip),%xmm0
movsd  %xmm0,0x3be7(%rip)
mov    0x3bed(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3b34(%rip)
mov    0x3bde(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3b29(%rip)
mov    0x3bcf(%rip),%eax
mov    %eax,0x3b21(%rip)
movsd  0x3bad(%rip),%xmm0
mov    0x10(%rbp),%rax
movslq 0x3b0e(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x3b9d(%rip),%xmm1
mov    0x18(%rbp),%rax
movslq 0x3af6(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3b0e(%rip)
movsd  0x3b56(%rip),%xmm0
mov    0x18(%rbp),%rax
movslq 0x3ab7(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x3b46(%rip),%xmm1
mov    0x10(%rbp),%rax
movslq 0x3a9f(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3ad6(%rip)
mov    -0x30(%rbp),%rax
movslq 0x3a7b(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x3ab6(%rip),%xmm0
movsd  %xmm0,0x3a9e(%rip)
mov    -0x38(%rbp),%rax
movslq 0x3a5b(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x3a9e(%rip),%xmm0
movsd  %xmm0,0x3a86(%rip)
movsd  0x3a76(%rip),%xmm0
mov    -0x30(%rbp),%rax
movslq 0x3a2f(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x3a66(%rip),%xmm0
mov    -0x38(%rbp),%rax
movslq 0x3a17(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3a06(%rip)
movl   $0x1,0x3aa8(%rip)
mov    0x3aa2(%rip),%eax
cmp    0x39f0(%rip),%eax
jg     17c6 <zgtsv_+0x6a6>
mov    0x3a90(%rip),%eax
imul   0x39d1(%rip),%eax
add    0x3a87(%rip),%eax
add    $0x1,%eax
mov    %eax,0x39d2(%rip)
mov    0x3a74(%rip),%eax
imul   0x39b5(%rip),%eax
add    0x3a6b(%rip),%eax
add    $0x1,%eax
mov    %eax,0x39ba(%rip)
mov    0x3a58(%rip),%eax
imul   0x3999(%rip),%eax
add    0x3a4f(%rip),%eax
mov    %eax,0x39a5(%rip)
movsd  0x3a2d(%rip),%xmm0
mov    0x20(%rbp),%rax
movslq 0x3992(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x3a1d(%rip),%xmm1
mov    0x28(%rbp),%rax
movslq 0x397a(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x398e(%rip)
movsd  0x39d6(%rip),%xmm0
mov    0x28(%rbp),%rax
movslq 0x393b(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x39c6(%rip),%xmm1
mov    0x20(%rbp),%rax
movslq 0x3923(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3956(%rip)
mov    0x20(%rbp),%rax
movslq 0x38ff(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x3936(%rip),%xmm0
movsd  %xmm0,0x391e(%rip)
mov    0x28(%rbp),%rax
movslq 0x38df(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x391e(%rip),%xmm0
movsd  %xmm0,0x3906(%rip)
movsd  0x38f6(%rip),%xmm0
mov    0x20(%rbp),%rax
movslq 0x38b3(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x38e6(%rip),%xmm0
mov    0x28(%rbp),%rax
movslq 0x389b(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x3938(%rip),%eax
add    $0x1,%eax
mov    %eax,0x392f(%rip)
jmp    1648 <zgtsv_+0x528>
mov    0x3928(%rip),%eax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    180f <zgtsv_+0x6ef>
mov    0x3911(%rip),%eax
mov    %eax,0x385b(%rip)
mov    -0x20(%rbp),%rax
movslq 0x3850(%rip),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq 0x383d(%rip),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e34 <zgtsv_+0xd14>
mov    -0x30(%rbp),%rdx
movslq 0x38d5(%rip),%rax
shl    $0x3,%rax
add    %rax,%rdx
mov    -0x38(%rbp),%rcx
movslq 0x38c3(%rip),%rax
shl    $0x3,%rax
add    %rax,%rcx
mov    -0x20(%rbp),%r8
movslq 0x38b1(%rip),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x28(%rbp),%r9
movslq 0x389f(%rip),%rax
shl    $0x3,%rax
add    %rax,%r9
lea    0x381d(%rip),%rdi
lea    0x381e(%rip),%rsi
call   1040 <z_div@plt>
movsd  0x3809(%rip),%xmm0
movsd  %xmm0,0x3861(%rip)
movsd  0x3801(%rip),%xmm0
movsd  %xmm0,0x3859(%rip)
mov    0x385f(%rip),%eax
mov    %eax,0x37a9(%rip)
mov    0x3853(%rip),%eax
mov    %eax,0x37a1(%rip)
mov    -0x20(%rbp),%rax
movslq 0x3796(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movslq 0x3782(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq 0x3776(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movslq 0x3762(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x3807(%rip),%eax
add    $0x1,%eax
mov    %eax,0x374e(%rip)
mov    -0x30(%rbp),%rax
movslq 0x3743(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x37c2(%rip)
mov    -0x38(%rbp),%rax
movslq 0x372b(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x37b2(%rip)
mov    0x37c8(%rip),%eax
add    $0x1,%eax
mov    %eax,0x370f(%rip)
mov    0x37b9(%rip),%eax
mov    %eax,0x3707(%rip)
movsd  0x3797(%rip),%xmm0
movsd  0x377f(%rip),%xmm2
movsd  0x378f(%rip),%xmm1
mulsd  0x3777(%rip),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3708(%rip)
movsd  0x3750(%rip),%xmm0
movsd  0x3740(%rip),%xmm2
movsd  0x3748(%rip),%xmm1
mulsd  0x3728(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x36e0(%rip)
mov    0x10(%rbp),%rax
movslq 0x3685(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x36c0(%rip),%xmm0
movsd  %xmm0,0x36a8(%rip)
mov    0x18(%rbp),%rax
movslq 0x3665(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x36a8(%rip),%xmm0
movsd  %xmm0,0x3690(%rip)
movsd  0x3680(%rip),%xmm0
mov    -0x30(%rbp),%rax
movslq 0x3639(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x3670(%rip),%xmm0
mov    -0x38(%rbp),%rax
movslq 0x3621(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x36c6(%rip),%eax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1bca <zgtsv_+0xaaa>
mov    0x36af(%rip),%eax
mov    %eax,0x35f9(%rip)
mov    0x36a3(%rip),%eax
add    $0x1,%eax
mov    %eax,0x35ee(%rip)
mov    0x10(%rbp),%rax
movslq 0x35e3(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq 0x35cf(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq 0x35c3(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq 0x35af(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x3654(%rip),%eax
add    $0x1,%eax
mov    %eax,0x359b(%rip)
movsd  0x362f(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,0x35c0(%rip)
movsd  0x3610(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,0x35a1(%rip)
mov    0x35f7(%rip),%eax
mov    %eax,0x3545(%rip)
movsd  0x3585(%rip),%xmm0
mov    -0x20(%rbp),%rax
movslq 0x3532(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x3575(%rip),%xmm1
mov    -0x28(%rbp),%rax
movslq 0x351a(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3526(%rip)
movsd  0x352e(%rip),%xmm0
mov    -0x28(%rbp),%rax
movslq 0x34db(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x351e(%rip),%xmm1
mov    -0x20(%rbp),%rax
movslq 0x34c3(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x34ee(%rip)
movsd  0x34de(%rip),%xmm0
mov    0x10(%rbp),%rax
movslq 0x3497(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x34ce(%rip),%xmm0
mov    0x18(%rbp),%rax
movslq 0x347f(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x3524(%rip),%eax
mov    %eax,0x346e(%rip)
movsd  0x34f2(%rip),%xmm0
mov    0x10(%rbp),%rax
movslq 0x345b(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x34e2(%rip),%xmm0
mov    0x18(%rbp),%rax
movslq 0x3443(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3432(%rip)
movl   $0x1,0x34d4(%rip)
mov    0x34ce(%rip),%eax
cmp    0x341c(%rip),%eax
jg     1e2f <zgtsv_+0xd0f>
mov    0x34bc(%rip),%eax
imul   0x33fd(%rip),%eax
add    0x34b3(%rip),%eax
mov    %eax,0x3401(%rip)
mov    0x20(%rbp),%rax
movslq 0x33f6(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3471(%rip)
mov    0x28(%rbp),%rax
movslq 0x33de(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x3461(%rip)
mov    0x3473(%rip),%eax
imul   0x33b4(%rip),%eax
add    0x346a(%rip),%eax
mov    %eax,0x33b8(%rip)
mov    0x345a(%rip),%eax
imul   0x339b(%rip),%eax
add    0x3451(%rip),%eax
add    $0x1,%eax
mov    %eax,0x33a0(%rip)
mov    0x20(%rbp),%rax
movslq 0x3395(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq 0x3381(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
movslq 0x3375(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq 0x3361(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x33fe(%rip),%eax
imul   0x333f(%rip),%eax
add    0x33f5(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3340(%rip)
mov    0x33e2(%rip),%eax
imul   0x3323(%rip),%eax
add    0x33d9(%rip),%eax
add    $0x1,%eax
mov    %eax,0x3328(%rip)
movsd  0x33b4(%rip),%xmm0
mov    0x20(%rbp),%rax
movslq 0x3315(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x33a4(%rip),%xmm1
mov    0x28(%rbp),%rax
movslq 0x32fd(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3315(%rip)
movsd  0x335d(%rip),%xmm0
mov    0x28(%rbp),%rax
movslq 0x32be(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  0x334d(%rip),%xmm1
mov    0x20(%rbp),%rax
movslq 0x32a6(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x32dd(%rip)
movsd  0x330d(%rip),%xmm0
subsd  0x32c5(%rip),%xmm0
movsd  %xmm0,0x32ad(%rip)
movsd  0x32fd(%rip),%xmm0
subsd  0x32b5(%rip),%xmm0
movsd  %xmm0,0x329d(%rip)
movsd  0x328d(%rip),%xmm0
mov    0x20(%rbp),%rax
movslq 0x324a(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x327d(%rip),%xmm0
mov    0x28(%rbp),%rax
movslq 0x3232(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x32cf(%rip),%eax
add    $0x1,%eax
mov    %eax,0x32c6(%rip)
jmp    1c1c <zgtsv_+0xafc>
jmp    1e34 <zgtsv_+0xd14>
jmp    1e39 <zgtsv_+0xd19>
jmp    1e3e <zgtsv_+0xd1e>
mov    0x32b0(%rip),%eax
add    $0x1,%eax
mov    %eax,0x32a7(%rip)
jmp    12e5 <zgtsv_+0x1c5>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x31e2(%rip)
mov    -0x30(%rbp),%rax
movslq 0x31d7(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1ebc <zgtsv_+0xd9c>
jp     1ebc <zgtsv_+0xd9c>
mov    -0x38(%rbp),%rax
movslq 0x31b4(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1ebc <zgtsv_+0xd9c>
jp     1ebc <zgtsv_+0xd9c>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
mov    0x38(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    24aa <zgtsv_+0x138a>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x3178(%rip)
movl   $0x1,0x321e(%rip)
mov    0x3218(%rip),%eax
cmp    0x3162(%rip),%eax
jg     24a3 <zgtsv_+0x1383>
mov    0x3206(%rip),%eax
imul   0x3147(%rip),%eax
mov    -0x10(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,0x3147(%rip)
mov    0x20(%rbp),%rdx
mov    0x31e9(%rip),%eax
imul   0x312a(%rip),%eax
mov    -0x10(%rbp),%rcx
add    (%rcx),%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    0x28(%rbp),%rcx
mov    0x31c9(%rip),%eax
imul   0x310a(%rip),%eax
mov    -0x10(%rbp),%rsi
add    (%rsi),%eax
cltq
shl    $0x3,%rax
add    %rax,%rcx
mov    -0x30(%rbp),%r8
mov    -0x10(%rbp),%rax
movslq (%rax),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x38(%rbp),%r9
mov    -0x10(%rbp),%rax
movslq (%rax),%rax
shl    $0x3,%rax
add    %rax,%r9
lea    0x3118(%rip),%rdi
lea    0x3119(%rip),%rsi
call   1040 <z_div@plt>
movsd  0x3104(%rip),%xmm0
mov    0x20(%rbp),%rax
movslq 0x30bd(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x30f4(%rip),%xmm0
mov    0x28(%rbp),%rax
movslq 0x30a5(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
jle    2185 <zgtsv_+0x1065>
mov    0x3139(%rip),%eax
imul   0x307a(%rip),%eax
mov    -0x10(%rbp),%rcx
add    (%rcx),%eax
sub    $0x1,%eax
mov    %eax,0x3077(%rip)
mov    0x311d(%rip),%eax
imul   0x305e(%rip),%eax
mov    -0x10(%rbp),%rcx
add    (%rcx),%eax
sub    $0x1,%eax
mov    %eax,0x305f(%rip)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
sub    $0x1,%eax
mov    %eax,0x3054(%rip)
mov    0x30f2(%rip),%eax
imul   0x3033(%rip),%eax
mov    -0x10(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,0x303f(%rip)
mov    0x10(%rbp),%rax
movslq 0x3030(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq 0x3024(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x18(%rbp),%rax
movslq 0x3010(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x28(%rbp),%rax
movslq 0x3004(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x3028(%rip)
mov    0x10(%rbp),%rax
movslq 0x2fc9(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq 0x2fbd(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x18(%rbp),%rax
movslq 0x2fa9(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x20(%rbp),%rax
movslq 0x2f9d(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2fe0(%rip)
mov    0x20(%rbp),%rax
movslq 0x2f75(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x2fc0(%rip),%xmm0
movsd  %xmm0,0x2fa8(%rip)
mov    0x28(%rbp),%rax
movslq 0x2f55(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x2fa8(%rip),%xmm0
movsd  %xmm0,0x2f90(%rip)
mov    -0x30(%rbp),%r8
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
sub    $0x1,%eax
cltq
shl    $0x3,%rax
add    %rax,%r8
mov    -0x38(%rbp),%r9
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
sub    $0x1,%eax
cltq
shl    $0x3,%rax
add    %rax,%r9
lea    0x2f45(%rip),%rdi
lea    0x2f46(%rip),%rsi
lea    0x2f47(%rip),%rdx
lea    0x2f48(%rip),%rcx
call   1040 <z_div@plt>
movsd  0x2f23(%rip),%xmm0
mov    0x20(%rbp),%rax
movslq 0x2edc(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x2f13(%rip),%xmm0
mov    0x28(%rbp),%rax
movslq 0x2ec4(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
sub    $0x2,%eax
mov    %eax,0x2f60(%rip)
cmpl   $0x1,0x2f59(%rip)
jl     248a <zgtsv_+0x136a>
mov    0x2f49(%rip),%eax
imul   0x2e8a(%rip),%eax
add    0x2f40(%rip),%eax
mov    %eax,0x2e8a(%rip)
mov    0x2f30(%rip),%eax
imul   0x2e71(%rip),%eax
add    0x2f27(%rip),%eax
mov    %eax,0x2e75(%rip)
mov    0x2f1b(%rip),%eax
mov    %eax,0x2e6d(%rip)
mov    0x2f0b(%rip),%eax
imul   0x2e4c(%rip),%eax
add    0x2f02(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2e55(%rip)
mov    0x10(%rbp),%rax
movslq 0x2e46(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq 0x2e3a(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x18(%rbp),%rax
movslq 0x2e26(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x28(%rbp),%rax
movslq 0x2e1a(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2e4e(%rip)
mov    0x10(%rbp),%rax
movslq 0x2ddf(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq 0x2dd3(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x18(%rbp),%rax
movslq 0x2dbf(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x20(%rbp),%rax
movslq 0x2db3(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2e06(%rip)
mov    0x20(%rbp),%rax
movslq 0x2d8b(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x2de6(%rip),%xmm0
movsd  %xmm0,0x2dce(%rip)
mov    0x28(%rbp),%rax
movslq 0x2d6b(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  0x2dce(%rip),%xmm0
movsd  %xmm0,0x2db6(%rip)
mov    0x2dfc(%rip),%eax
mov    %eax,0x2d56(%rip)
mov    0x2dec(%rip),%eax
imul   0x2d2d(%rip),%eax
add    0x2de3(%rip),%eax
add    $0x2,%eax
mov    %eax,0x2d3e(%rip)
mov    -0x20(%rbp),%rax
movslq 0x2d2f(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq 0x2d23(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x28(%rbp),%rax
movslq 0x2d0f(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x28(%rbp),%rax
movslq 0x2d03(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2d3f(%rip)
mov    -0x20(%rbp),%rax
movslq 0x2cc8(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq 0x2cbc(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x28(%rbp),%rax
movslq 0x2ca8(%rip),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x20(%rbp),%rax
movslq 0x2c9c(%rip),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2cf7(%rip)
movsd  0x2cc7(%rip),%xmm0
subsd  0x2cdf(%rip),%xmm0
movsd  %xmm0,0x2ca7(%rip)
movsd  0x2cb7(%rip),%xmm0
subsd  0x2ccf(%rip),%xmm0
movsd  %xmm0,0x2c97(%rip)
mov    -0x30(%rbp),%r8
movslq 0x2ce8(%rip),%rax
shl    $0x3,%rax
add    %rax,%r8
mov    -0x38(%rbp),%r9
movslq 0x2cd6(%rip),%rax
shl    $0x3,%rax
add    %rax,%r9
lea    0x2c54(%rip),%rdi
lea    0x2c55(%rip),%rsi
lea    0x2c56(%rip),%rdx
lea    0x2c57(%rip),%rcx
call   1040 <z_div@plt>
movsd  0x2c32(%rip),%xmm0
mov    0x20(%rbp),%rax
movslq 0x2beb(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x2c22(%rip),%xmm0
mov    0x28(%rbp),%rax
movslq 0x2bd3(%rip),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x2c78(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,0x2c6f(%rip)
jmp    2194 <zgtsv_+0x1074>
jmp    248f <zgtsv_+0x136f>
mov    0x2c5b(%rip),%eax
add    $0x1,%eax
mov    %eax,0x2c52(%rip)
jmp    1ed2 <zgtsv_+0xdb2>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<zgtsv_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %rdx,0x20(%rsp)
mov    %rdi,%r13
mov    0xc8(%rsp),%rdi
mov    0xc0(%rsp),%rax
movslq (%rax),%rbp
mov    %ebp,0x2ef1(%rip)
movl   $0x0,(%rdi)
mov    0x0(%r13),%r11d
test   %r11d,%r11d
js     1170 <zgtsv_+0x60>
mov    (%rsi),%ebx
test   %ebx,%ebx
js     117c <zgtsv_+0x6c>
test   %r11d,%r11d
mov    $0x1,%edx
cmovne %r11d,%edx
cmp    %edx,(%rax)
jge    119f <zgtsv_+0x8f>
mov    $0x7,%eax
mov    $0xfffffff9,%ecx
jmp    1186 <zgtsv_+0x76>
mov    $0x1,%eax
mov    $0xffffffff,%ecx
jmp    1186 <zgtsv_+0x76>
mov    $0x2,%eax
mov    $0xfffffffe,%ecx
mov    %ecx,(%rdi)
mov    %eax,0x2ea6(%rip)
xor    %eax,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
test   %r11d,%r11d
je     118e <zgtsv_+0x7e>
mov    %rbx,0x40(%rsp)
mov    0xb8(%rsp),%rdx
mov    0xb0(%rsp),%rdi
addq   $0xfffffffffffffff8,0x20(%rsp)
mov    %rcx,%r15
add    $0xfffffffffffffff8,%r15
mov    %r8,%r12
add    $0xfffffffffffffff8,%r12
add    $0xfffffffffffffff8,%r9
not    %rbp
lea    (%rdi,%rbp,8),%r14
lea    (%rdx,%rbp,8),%rbx
lea    -0x1(%r11),%eax
mov    %eax,0x2e4e(%rip)
movl   $0x1,0x2e74(%rip)
cmp    $0x1,%r11d
mov    %r9,%rcx
mov    %r9,0x10(%rsp)
mov    %r12,0x18(%rsp)
mov    %r15,(%rsp)
mov    %r13,0x8(%rsp)
jne    156e <zgtsv_+0x45e>
mov    $0x1,%r11d
mov    %rcx,%rsi
mov    %r11d,0x2e14(%rip)
movslq %r11d,%rax
movsd  (%r12,%rax,8),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    1252 <zgtsv_+0x142>
jp     1252 <zgtsv_+0x142>
movsd  (%rsi,%rax,8),%xmm1
ucomisd %xmm0,%xmm1
jne    1252 <zgtsv_+0x142>
jp     1252 <zgtsv_+0x142>
mov    0xc8(%rsp),%rax
mov    %r11d,(%rax)
jmp    118e <zgtsv_+0x7e>
mov    0x40(%rsp),%rax
mov    %eax,0x2dd7(%rip)
movl   $0x1,0x2df9(%rip)
test   %eax,%eax
jle    118e <zgtsv_+0x7e>
mov    $0x1,%eax
lea    0x2dc5(%rip),%rbp
lea    0x2dc6(%rip),%r12
lea    0x2dc7(%rip),%r15
mov    %r14,0x60(%rsp)
xchg   %ax,%ax
imul   0x2d99(%rip),%eax
add    %r11d,%eax
mov    %eax,0x2d98(%rip)
cltq
lea    (%r14,%rax,8),%rdx
lea    (%rbx,%rax,8),%rcx
movslq %r11d,%rax
mov    0x18(%rsp),%rsi
lea    (%rsi,%rax,8),%r8
mov    0x10(%rsp),%rsi
lea    (%rsi,%rax,8),%r9
mov    %rbp,%rdi
mov    %r12,%rsi
call   1030 <z_div@plt>
movsd  0x2d6e(%rip),%xmm0
movslq 0x2d5f(%rip),%rax
movsd  %xmm0,(%r14,%rax,8)
movsd  0x2d61(%rip),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
mov    0x0(%r13),%eax
cmp    $0x1,%eax
jle    1530 <zgtsv_+0x420>
mov    0x2d31(%rip),%ecx
imul   0x2d5a(%rip),%ecx
lea    (%rcx,%rax,1),%edx
add    $0xffffffff,%edx
add    %eax,%ecx
mov    %edx,0x2d24(%rip)
add    $0xffffffff,%eax
mov    0xa0(%rsp),%rdx
movsd  -0x8(%rdx,%rax,8),%xmm0
movslq %ecx,%rcx
movsd  -0x8(%r14,%rcx,8),%xmm1
movsd  (%r14,%rcx,8),%xmm2
mov    0xa8(%rsp),%rdx
movsd  -0x8(%rdx,%rax,8),%xmm3
movsd  (%rbx,%rcx,8),%xmm4
movapd %xmm0,%xmm5
mulsd  %xmm4,%xmm0
mulsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm5
subsd  %xmm4,%xmm5
subsd  %xmm5,%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  %xmm1,0x2ce0(%rip)
movsd  -0x8(%rbx,%rcx,8),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x2cd6(%rip)
mov    0x18(%rsp),%rcx
lea    (%rcx,%rax,8),%r8
mov    0x10(%rsp),%rcx
lea    (%rcx,%rax,8),%r9
mov    %rbp,%rdi
mov    %r12,%rsi
mov    %r15,%rdx
lea    0x2cb4(%rip),%rcx
call   1030 <z_div@plt>
movsd  0x2c8f(%rip),%xmm0
movslq 0x2c80(%rip),%rax
movsd  %xmm0,(%r14,%rax,8)
movsd  0x2c82(%rip),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
mov    0x0(%r13),%ecx
lea    -0x2(%rcx),%eax
mov    %eax,0x2c8c(%rip)
cmp    $0x3,%ecx
mov    %rbp,%rdi
mov    %r12,%r13
mov    (%rsp),%rsi
mov    0x20(%rsp),%rbp
jl     153f <zgtsv_+0x42f>
mov    0x2c3a(%rip),%ecx
imul   0x2c63(%rip),%ecx
add    %eax,%ecx
mov    %ecx,0x2c33(%rip)
mov    %eax,%eax
mov    0xa0(%rsp),%rdx
movsd  -0x8(%rdx,%rax,8),%xmm2
movslq %ecx,%rcx
movsd  (%r14,%rcx,8),%xmm0
movsd  0x8(%r14,%rcx,8),%xmm3
mov    0xa8(%rsp),%rdx
movsd  -0x8(%rdx,%rax,8),%xmm4
movsd  (%rbx,%rcx,8),%xmm1
movsd  0x8(%rbx,%rcx,8),%xmm5
movapd %xmm2,%xmm6
mulsd  %xmm5,%xmm2
mulsd  %xmm4,%xmm5
mulsd  %xmm3,%xmm6
subsd  %xmm5,%xmm6
subsd  %xmm6,%xmm0
mulsd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
movsd  0x0(%rbp,%rax,8),%xmm2
movsd  0x10(%r14,%rcx,8),%xmm3
movsd  (%rsi,%rax,8),%xmm4
movsd  0x10(%rbx,%rcx,8),%xmm5
movapd %xmm2,%xmm6
mulsd  %xmm5,%xmm2
mulsd  %xmm4,%xmm5
mulsd  %xmm3,%xmm6
subsd  %xmm5,%xmm6
subsd  %xmm6,%xmm0
mulsd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
movsd  %xmm0,0x2baa(%rip)
movsd  %xmm1,0x2baa(%rip)
mov    0x18(%rsp),%rcx
lea    (%rcx,%rax,8),%r8
mov    0x10(%rsp),%rcx
lea    (%rcx,%rax,8),%r9
mov    %rbx,%r14
mov    %rsi,%rbx
mov    %r13,%rsi
mov    %r15,%rdx
lea    0x2b85(%rip),%rcx
mov    %r15,%r12
mov    %rdi,%r15
call   1030 <z_div@plt>
mov    %r15,%rdi
mov    %r12,%r15
mov    %rbx,%rsi
mov    %r14,%rbx
mov    0x60(%rsp),%r14
movsd  0x2b49(%rip),%xmm0
movslq 0x2b3a(%rip),%rax
movsd  %xmm0,(%r14,%rax,8)
movsd  0x2b3c(%rip),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
mov    0x2b4d(%rip),%ecx
lea    -0x1(%rcx),%eax
mov    %eax,0x2b44(%rip)
cmp    $0x1,%ecx
jg     13f0 <zgtsv_+0x2e0>
jmp    153f <zgtsv_+0x42f>
nopl   0x0(%rax,%rax,1)
add    $0xfffffffe,%eax
mov    %eax,0x2b2b(%rip)
mov    %rbp,%rdi
mov    %r12,%r13
mov    %r13,%r12
mov    0x2b18(%rip),%ecx
lea    0x1(%rcx),%eax
mov    %eax,0x2b0f(%rip)
cmp    0x2add(%rip),%ecx
mov    0x8(%rsp),%r13
jge    118e <zgtsv_+0x7e>
mov    %rdi,%rbp
mov    0x0(%r13),%r11d
jmp    1290 <zgtsv_+0x180>
mov    %rsi,0x58(%rsp)
lea    (%rdi,%rbp,8),%rax
add    $0x8,%rax
mov    %rax,0x30(%rsp)
lea    0x8(%rdi),%rax
mov    %rax,0x50(%rsp)
mov    %rbp,0x38(%rsp)
lea    0x8(%rdx,%rbp,8),%rax
mov    %rax,0x28(%rsp)
lea    0x8(%rdx),%rax
mov    %rax,0x48(%rsp)
mov    $0x1,%r10d
xorpd  %xmm3,%xmm3
mov    0x20(%rsp),%r9
mov    %rcx,%rsi
jmp    15e9 <zgtsv_+0x4d9>
mov    $0x1,%r8d
mov    (%rsp),%r15
mov    0x8(%rsp),%r13
mov    %r8d,0x2a95(%rip)
xorpd  %xmm3,%xmm3
lea    0x1(%r10),%eax
mov    %eax,0x2a8b(%rip)
cmp    0x2a54(%rip),%r10d
mov    %eax,%r10d
jge    1219 <zgtsv_+0x109>
movslq %r10d,%rcx
movsd  (%r9,%rcx,8),%xmm0
ucomisd %xmm3,%xmm0
movsd  (%r15,%rcx,8),%xmm1
mov    %ecx,0x2a36(%rip)
movsd  (%r12,%rcx,8),%xmm2
jne    1630 <zgtsv_+0x520>
jp     1630 <zgtsv_+0x520>
ucomisd %xmm3,%xmm1
jne    1630 <zgtsv_+0x520>
jp     1630 <zgtsv_+0x520>
ucomisd %xmm3,%xmm2
jne    15cf <zgtsv_+0x4bf>
jp     15cf <zgtsv_+0x4bf>
movsd  (%rsi,%rcx,8),%xmm0
ucomisd %xmm3,%xmm0
jne    15cf <zgtsv_+0x4bf>
jp     15cf <zgtsv_+0x4bf>
jmp    1d93 <zgtsv_+0xc83>
xchg   %ax,%ax
lea    (%r9,%rcx,8),%r8
lea    (%r12,%rcx,8),%rax
mov    %r9,%r13
lea    (%rsi,%rcx,8),%r9
movsd  (%rsi,%rcx,8),%xmm3
unpcklpd %xmm2,%xmm3
cvttpd2dq %xmm3,%xmm2
movapd %xmm2,%xmm3
psrad  $0x1f,%xmm3
paddd  %xmm3,%xmm2
pxor   %xmm3,%xmm2
pshufd $0x55,%xmm2,%xmm3
paddd  %xmm2,%xmm3
movd   %xmm3,%edx
unpcklpd %xmm0,%xmm1
cvttpd2dq %xmm1,%xmm0
lea    (%r15,%rcx,8),%rbp
movapd %xmm0,%xmm1
psrad  $0x1f,%xmm1
paddd  %xmm1,%xmm0
pxor   %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%ecx
lea    0x29a5(%rip),%rdi
cmp    %ecx,%edx
jae    1970 <zgtsv_+0x860>
lea    0x299e(%rip),%rsi
mov    %rax,%rdx
mov    %r9,%rcx
mov    %rbp,%r9
call   1030 <z_div@plt>
mov    0x10(%rsp),%rsi
movsd  0x297b(%rip),%xmm0
movsd  0x297b(%rip),%xmm1
mov    0x2990(%rip),%r10d
movslq %r10d,%rbp
movsd  0x0(%r13,%rbp,8),%xmm2
movsd  %xmm2,(%r12,%rbp,8)
movsd  (%r15,%rbp,8),%xmm2
movsd  %xmm2,(%rsi,%rbp,8)
movsd  0x8(%r12,%rbp,8),%xmm3
movsd  0x8(%rsi,%rbp,8),%xmm4
movapd %xmm1,%xmm2
xorpd  0x8f8(%rip),%xmm2
movapd %xmm4,%xmm5
mulsd  %xmm1,%xmm5
movapd %xmm0,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm5,%xmm6
movsd  %xmm6,0x292c(%rip)
movapd %xmm1,%xmm5
mulsd  %xmm3,%xmm5
movapd %xmm0,%xmm7
mulsd  %xmm4,%xmm7
addsd  %xmm5,%xmm7
movsd  %xmm7,0x2918(%rip)
mov    0xa0(%rsp),%rdx
movsd  -0x8(%rdx,%rbp,8),%xmm5
subsd  %xmm6,%xmm5
movsd  %xmm5,0x28e6(%rip)
mov    0xa8(%rsp),%rcx
movsd  -0x8(%rcx,%rbp,8),%xmm6
subsd  %xmm7,%xmm6
movsd  %xmm6,0x28d4(%rip)
movsd  %xmm5,0x8(%r12,%rbp,8)
movsd  0x28c5(%rip),%xmm5
movsd  %xmm5,0x8(%rsi,%rbp,8)
mov    0x8(%rsp),%rax
mov    (%rax),%r11d
lea    -0x1(%r11),%eax
cmp    %eax,%ebp
mov    %r13,%r9
jge    182b <zgtsv_+0x71b>
mov    %ebp,0x2892(%rip)
movsd  (%rdx,%rbp,8),%xmm5
movsd  %xmm5,(%r9,%rbp,8)
movsd  (%rcx,%rbp,8),%xmm5
mov    (%rsp),%rax
movsd  %xmm5,(%rax,%rbp,8)
movapd %xmm0,%xmm5
xorpd  0x835(%rip),%xmm5
movlpd %xmm5,0x287d(%rip)
movsd  %xmm2,0x287d(%rip)
movsd  (%rax,%rbp,8),%xmm5
mulsd  %xmm1,%xmm5
movsd  (%r9,%rbp,8),%xmm6
mulsd  %xmm0,%xmm6
subsd  %xmm6,%xmm5
movsd  %xmm5,0x2846(%rip)
movsd  (%r9,%rbp,8),%xmm6
mulsd  %xmm2,%xmm6
movsd  (%rax,%rbp,8),%xmm7
mulsd  %xmm0,%xmm7
subsd  %xmm7,%xmm6
movsd  %xmm6,0x282f(%rip)
movsd  %xmm5,(%rdx,%rbp,8)
movsd  0x2822(%rip),%xmm5
movsd  %xmm5,(%rcx,%rbp,8)
movsd  %xmm3,-0x8(%rdx,%rbp,8)
movsd  %xmm4,-0x8(%rcx,%rbp,8)
mov    0x58(%rsp),%rax
mov    (%rax),%eax
mov    %eax,0x27f4(%rip)
test   %eax,%eax
mov    %rax,0x40(%rsp)
jle    15b5 <zgtsv_+0x4a5>
mov    0x27d8(%rip),%r15d
movslq %r15d,%rsi
mov    0x30(%rsp),%rcx
lea    (%rcx,%rbp,8),%r12
mov    0x38(%rsp),%rcx
lea    (%rcx,%rbp,1),%rdx
lea    0x1(%rax,%rdx,1),%rdx
lea    0x1(%rax),%r8
mov    0x50(%rsp),%rcx
lea    (%rcx,%rdx,8),%rdi
mov    0x28(%rsp),%rcx
lea    (%rcx,%rbp,8),%rcx
mov    0x48(%rsp),%rax
lea    (%rax,%rdx,8),%rdx
cmp    %rdx,%r12
setb   %dl
cmp    %rdi,%rcx
setb   %cl
test   %cl,%dl
jne    1bde <zgtsv_+0xace>
cmp    $0x1,%r15d
jne    1bde <zgtsv_+0xace>
mov    0x30(%rsp),%rax
movsd  (%rax,%rbp,8),%xmm3
mov    0x28(%rsp),%rax
movsd  (%rax,%rbp,8),%xmm4
lea    (%r14,%rbp,8),%rdx
shl    $0x3,%rsi
lea    (%rbx,%rbp,8),%rbp
mov    %r8,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rsi,%rdi
mov    0x8(%rsp),%r13
xchg   %ax,%ax
movsd  0x8(%rdx,%rdi,1),%xmm5
movsd  %xmm5,(%rdx,%rdi,1)
movsd  0x8(%rbp,%rdi,1),%xmm5
movsd  %xmm5,0x0(%rbp,%rdi,1)
mulsd  %xmm2,%xmm5
movsd  0x8(%rdx,%rdi,1),%xmm6
mulsd  %xmm0,%xmm6
addsd  %xmm5,%xmm6
movsd  %xmm6,0x273f(%rip)
movsd  0x8(%rdx,%rdi,1),%xmm5
mulsd  %xmm1,%xmm5
movsd  0x8(%rbp,%rdi,1),%xmm7
mulsd  %xmm0,%xmm7
addsd  %xmm5,%xmm7
movsd  %xmm7,0x2727(%rip)
subsd  %xmm6,%xmm3
movsd  %xmm3,0x2703(%rip)
subsd  %xmm7,%xmm4
movsd  %xmm4,0x26ff(%rip)
movsd  %xmm3,0x8(%rdx,%rdi,1)
movsd  0x26f1(%rip),%xmm4
movsd  %xmm4,0x8(%rbp,%rdi,1)
add    %rsi,%rdi
add    $0xffffffffffffffff,%rcx
jne    18e0 <zgtsv_+0x7d0>
jmp    1c93 <zgtsv_+0xb83>
nop
mov    %rsi,%r15
lea    0x26ce(%rip),%rsi
mov    %r8,%rdx
mov    %rbp,%rcx
mov    %rax,%r8
call   1030 <z_div@plt>
movsd  0x26b0(%rip),%xmm0
movsd  0x26b0(%rip),%xmm1
mov    0x26c5(%rip),%r10d
movslq %r10d,%rdx
mov    0xa8(%rsp),%rax
movsd  -0x8(%rax,%rdx,8),%xmm2
mulsd  %xmm1,%xmm2
mov    0xa0(%rsp),%rcx
movsd  -0x8(%rcx,%rdx,8),%xmm3
mulsd  %xmm0,%xmm3
subsd  %xmm2,%xmm3
movsd  %xmm3,0x267e(%rip)
movsd  -0x8(%rcx,%rdx,8),%xmm2
mulsd  %xmm1,%xmm2
movsd  -0x8(%rax,%rdx,8),%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm2,%xmm4
movsd  %xmm4,0x2666(%rip)
movsd  0x8(%r12,%rdx,8),%xmm2
subsd  %xmm3,%xmm2
movsd  %xmm2,0x263b(%rip)
movsd  0x8(%r15,%rdx,8),%xmm3
subsd  %xmm4,%xmm3
movsd  %xmm3,0x2630(%rip)
movsd  %xmm2,0x8(%r12,%rdx,8)
movsd  0x2621(%rip),%xmm2
movsd  %xmm2,0x8(%r15,%rdx,8)
mov    0x58(%rsp),%rax
mov    (%rax),%ecx
mov    %ecx,0x25fd(%rip)
test   %ecx,%ecx
mov    %rcx,0x40(%rsp)
jle    1bc2 <zgtsv_+0xab2>
movapd %xmm1,%xmm2
xorpd  0x5ac(%rip),%xmm2
mov    0x30(%rsp),%rax
lea    (%rax,%rdx,8),%r15
mov    0x38(%rsp),%rax
add    %rdx,%rax
lea    0x1(%rcx,%rax,1),%rax
mov    0x50(%rsp),%rsi
lea    (%rsi,%rax,8),%rdi
mov    0x28(%rsp),%rsi
lea    (%rsi,%rdx,8),%rbp
lea    0x25cd(%rip),%r9
cmp    %r9,%rdi
seta   %r8b
mov    0x48(%rsp),%rsi
lea    (%rsi,%rax,8),%rsi
lea    0x25be(%rip),%r11
cmp    %r11,%r15
setb   %r12b
cmp    %r9,%rsi
seta   %al
cmp    %r11,%rbp
setb   %r13b
cmp    %rsi,%r15
mov    0x2579(%rip),%esi
setb   %r9b
cmp    %rdi,%rbp
movslq %esi,%rdi
lea    0x1(%rcx),%rbp
setb   %r11b
test   %r12b,%r8b
jne    1ca6 <zgtsv_+0xb96>
and    %r13b,%al
jne    1ca6 <zgtsv_+0xb96>
and    %r11b,%r9b
jne    1ca6 <zgtsv_+0xb96>
cmp    $0x1,%esi
jne    1ca6 <zgtsv_+0xb96>
mov    0x28(%rsp),%rax
movsd  (%rax,%rdx,8),%xmm4
mov    0x30(%rsp),%rax
movsd  (%rax,%rdx,8),%xmm3
mov    0x38(%rsp),%rax
add    %rdi,%rax
add    %rdx,%rax
lea    0x8(,%rax,8),%rcx
shl    $0x3,%rdi
mov    %rbp,%r8
mov    %rbp,%rax
add    $0xffffffffffffffff,%rax
mov    (%rsp),%r15
mov    0x20(%rsp),%r9
mov    0x8(%rsp),%r13
mov    0xb8(%rsp),%rsi
mov    0xb0(%rsp),%rbp
movapd %xmm0,%xmm5
mulsd  %xmm4,%xmm5
mulsd  %xmm2,%xmm4
movapd %xmm0,%xmm6
mulsd  %xmm3,%xmm6
addsd  %xmm4,%xmm6
movsd  %xmm6,0x24f0(%rip)
mulsd  %xmm1,%xmm3
addsd  %xmm5,%xmm3
movsd  %xmm3,0x24e8(%rip)
movsd  0x0(%rbp,%rcx,1),%xmm5
subsd  %xmm6,%xmm5
movsd  %xmm5,0x24be(%rip)
movsd  (%rsi,%rcx,1),%xmm4
subsd  %xmm3,%xmm4
movsd  %xmm4,0x24b5(%rip)
movsd  %xmm5,0x0(%rbp,%rcx,1)
movsd  0x24a7(%rip),%xmm4
movsd  %xmm4,(%rsi,%rcx,1)
add    %rdi,%rcx
movapd %xmm5,%xmm3
add    $0xffffffffffffffff,%rax
jne    1b40 <zgtsv_+0xa30>
mov    0x10(%rsp),%rsi
mov    0x18(%rsp),%r12
jmp    1d5b <zgtsv_+0xc4b>
mov    %r15,%rsi
mov    $0x1,%r8d
mov    (%rsp),%r15
mov    0x20(%rsp),%r9
mov    0x8(%rsp),%r13
jmp    1d5b <zgtsv_+0xc4b>
mov    %r8,%rdx
add    $0xffffffffffffffff,%rdx
lea    (%rbx,%rbp,8),%rcx
shl    $0x3,%rsi
lea    (%r14,%rbp,8),%rdi
mov    %rsi,%rax
mov    0x8(%rsp),%r13
nopl   0x0(%rax)
movsd  (%rcx,%rax,1),%xmm3
movsd  (%rdi,%rax,1),%xmm4
movsd  0x8(%rdi,%rax,1),%xmm5
movsd  %xmm5,(%rdi,%rax,1)
movsd  0x8(%rcx,%rax,1),%xmm5
movsd  %xmm5,(%rcx,%rax,1)
mulsd  %xmm2,%xmm5
movsd  0x8(%rdi,%rax,1),%xmm6
mulsd  %xmm0,%xmm6
addsd  %xmm5,%xmm6
movsd  %xmm6,0x2416(%rip)
movsd  0x8(%rdi,%rax,1),%xmm5
mulsd  %xmm1,%xmm5
movsd  0x8(%rcx,%rax,1),%xmm7
mulsd  %xmm0,%xmm7
addsd  %xmm5,%xmm7
movsd  %xmm7,0x23fe(%rip)
subsd  %xmm6,%xmm4
movsd  %xmm4,0x23da(%rip)
subsd  %xmm7,%xmm3
movsd  %xmm3,0x23d6(%rip)
movsd  %xmm4,0x8(%rdi,%rax,1)
movsd  0x23c8(%rip),%xmm3
movsd  %xmm3,0x8(%rcx,%rax,1)
add    %rsi,%rax
add    $0xffffffffffffffff,%rdx
jne    1c00 <zgtsv_+0xaf0>
mov    0x18(%rsp),%r12
mov    (%rsp),%r15
mov    0x10(%rsp),%rsi
jmp    15c4 <zgtsv_+0x4b4>
mov    %rbp,%r8
mov    %rbp,%rcx
add    $0xffffffffffffffff,%rcx
lea    (%rbx,%rdi,8),%rax
lea    0x0(,%rdx,8),%rbp
lea    (%r14,%rdi,8),%rsi
shl    $0x3,%rdi
mov    0x20(%rsp),%r9
mov    0x8(%rsp),%r13
xchg   %ax,%ax
movsd  (%rax,%rbp,1),%xmm3
mulsd  %xmm2,%xmm3
movsd  (%rsi,%rbp,1),%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,0x2362(%rip)
movsd  (%rsi,%rbp,1),%xmm3
mulsd  %xmm1,%xmm3
movsd  (%rax,%rbp,1),%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm3,%xmm5
movsd  %xmm5,0x234c(%rip)
movsd  0x8(%rsi,%rbp,1),%xmm3
subsd  %xmm4,%xmm3
movsd  %xmm3,0x2322(%rip)
movsd  0x8(%rax,%rbp,1),%xmm4
subsd  %xmm5,%xmm4
movsd  %xmm4,0x2318(%rip)
movsd  %xmm3,0x8(%rsi,%rbp,1)
movsd  0x230a(%rip),%xmm3
movsd  %xmm3,0x8(%rax,%rbp,1)
add    %rdi,%rbp
add    $0xffffffffffffffff,%rcx
jne    1cd0 <zgtsv_+0xbc0>
mov    0x10(%rsp),%rsi
mov    0x18(%rsp),%r12
mov    (%rsp),%r15
mov    %r8d,0x22fe(%rip)
mov    0x0(%r13),%r11d
lea    -0x1(%r11),%eax
cmp    %eax,%r10d
xorpd  %xmm3,%xmm3
jge    15cf <zgtsv_+0x4bf>
mov    %r10d,0x22ba(%rip)
movq   $0x0,(%r9,%rdx,8)
movq   $0x0,(%r15,%rdx,8)
jmp    15cf <zgtsv_+0x4bf>
mov    0xc8(%rsp),%rax
mov    %r10d,(%rax)
jmp    118e <zgtsv_+0x7e>

LLVM IR (-O0):
@zgtsv_.b_dim1 = internal global i32 0
@zgtsv_.b_offset = internal global i32 0
@zgtsv_.i__1 = internal global i32 0
@zgtsv_.i__2 = internal global i32 0
@zgtsv_.i__3 = internal global i32 0
@zgtsv_.i__4 = internal global i32 0
@zgtsv_.i__5 = internal global i32 0
@zgtsv_.i__6 = internal global i32 0
@zgtsv_.i__7 = internal global i32 0
@zgtsv_.d__1 = internal global double 0.000000e+00
@zgtsv_.d__2 = internal global double 0.000000e+00
@zgtsv_.d__3 = internal global double 0.000000e+00
@zgtsv_.d__4 = internal global double 0.000000e+00
@zgtsv_.z__1_r = internal global double 0.000000e+00
@zgtsv_.z__1_i = internal global double 0.000000e+00
@zgtsv_.z__2_r = internal global double 0.000000e+00
@zgtsv_.z__2_i = internal global double 0.000000e+00
@zgtsv_.z__3_r = internal global double 0.000000e+00
@zgtsv_.z__3_i = internal global double 0.000000e+00
@zgtsv_.z__4_r = internal global double 0.000000e+00
@zgtsv_.z__4_i = internal global double 0.000000e+00
@zgtsv_.z__5_r = internal global double 0.000000e+00
@zgtsv_.z__5_i = internal global double 0.000000e+00
@zgtsv_.temp_r = internal global double 0.000000e+00
@zgtsv_.temp_i = internal global double 0.000000e+00
@zgtsv_.mult_r = internal global double 0.000000e+00
@zgtsv_.mult_i = internal global double 0.000000e+00
@zgtsv_.j = internal global i32 0
@zgtsv_.k = internal global i32 0
define i32 @zgtsv_(i32* %0, i32* %1, double* %2, double* %3, double* %4, double* %5, double* %6, double* %7, double* %8, double* %9, i32* %10, i32* %11) {
%13 = alloca i32
%14 = alloca i32*
%15 = alloca i32*
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca double*
%20 = alloca double*
%21 = alloca double*
%22 = alloca double*
%23 = alloca double*
%24 = alloca i32*
%25 = alloca i32*
store i32* %0, i32** %14
store i32* %1, i32** %15
store double* %2, double** %16
store double* %3, double** %17
store double* %4, double** %18
store double* %5, double** %19
store double* %6, double** %20
store double* %7, double** %21
store double* %8, double** %22
store double* %9, double** %23
store i32* %10, i32** %24
store i32* %11, i32** %25
%26 = load double*, double** %16
%27 = getelementptr inbounds double, double* %26, i32 -1
store double* %27, double** %16
%28 = load double*, double** %17
%29 = getelementptr inbounds double, double* %28, i32 -1
store double* %29, double** %17
%30 = load double*, double** %18
%31 = getelementptr inbounds double, double* %30, i32 -1
store double* %31, double** %18
%32 = load double*, double** %19
%33 = getelementptr inbounds double, double* %32, i32 -1
store double* %33, double** %19
%34 = load double*, double** %20
%35 = getelementptr inbounds double, double* %34, i32 -1
store double* %35, double** %20
%36 = load double*, double** %21
%37 = getelementptr inbounds double, double* %36, i32 -1
store double* %37, double** %21
%38 = load i32*, i32** %24
%39 = load i32, i32* %38
store i32 %39, i32* @zgtsv_.b_dim1
%40 = load i32, i32* @zgtsv_.b_dim1
%41 = mul nsw i32 %40, 1
%42 = add nsw i32 1, %41
store i32 %42, i32* @zgtsv_.b_offset
%43 = load i32, i32* @zgtsv_.b_offset
%44 = load double*, double** %22
%45 = sext i32 %43 to i64
%46 = sub i64 0, %45
%47 = getelementptr inbounds double, double* %44, i64 %46
store double* %47, double** %22
%48 = load i32, i32* @zgtsv_.b_offset
%49 = load double*, double** %23
%50 = sext i32 %48 to i64
%51 = sub i64 0, %50
%52 = getelementptr inbounds double, double* %49, i64 %51
store double* %52, double** %23
%53 = load i32*, i32** %25
store i32 0, i32* %53
%54 = load i32*, i32** %14
%55 = load i32, i32* %54
%56 = icmp slt i32 %55, 0
br i1 %56, label %57, label %59
57: ; preds = %12
%58 = load i32*, i32** %25
store i32 -1, i32* %58
br label %82
59: ; preds = %12
%60 = load i32*, i32** %15
%61 = load i32, i32* %60
%62 = icmp slt i32 %61, 0
br i1 %62, label %63, label %65
63: ; preds = %59
%64 = load i32*, i32** %25
store i32 -2, i32* %64
br label %81
65: ; preds = %59
%66 = load i32*, i32** %24
%67 = load i32, i32* %66
%68 = load i32*, i32** %14
%69 = load i32, i32* %68
%70 = icmp sge i32 1, %69
br i1 %70, label %71, label %72
71: ; preds = %65
br label %75
72: ; preds = %65
%73 = load i32*, i32** %14
%74 = load i32, i32* %73
br label %75
75: ; preds = %72, %71
%76 = phi i32 [ 1, %71 ], [ %74, %72 ]
%77 = icmp slt i32 %67, %76
br i1 %77, label %78, label %80
78: ; preds = %75
%79 = load i32*, i32** %25
store i32 -7, i32* %79
br label %80
80: ; preds = %78, %75
br label %81
81: ; preds = %80, %63
br label %82
82: ; preds = %81, %57
%83 = load i32*, i32** %25
%84 = load i32, i32* %83
%85 = icmp ne i32 %84, 0
br i1 %85, label %86, label %90
86: ; preds = %82
%87 = load i32*, i32** %25
%88 = load i32, i32* %87
%89 = sub nsw i32 0, %88
store i32 %89, i32* @zgtsv_.i__1
store i32 0, i32* %13
br label %990
90: ; preds = %82
%91 = load i32*, i32** %14
%92 = load i32, i32* %91
%93 = icmp eq i32 %92, 0
br i1 %93, label %94, label %95
94: ; preds = %90
store i32 0, i32* %13
br label %990
95: ; preds = %90
%96 = load i32*, i32** %14
%97 = load i32, i32* %96
%98 = sub nsw i32 %97, 1
store i32 %98, i32* @zgtsv_.i__1
store i32 1, i32* @zgtsv_.k
br label %99
99: ; preds = %639, %95
%100 = load i32, i32* @zgtsv_.k
%101 = load i32, i32* @zgtsv_.i__1
%102 = icmp sle i32 %100, %101
br i1 %102, label %103, label %642
103: ; preds = %99
%104 = load i32, i32* @zgtsv_.k
store i32 %104, i32* @zgtsv_.i__2
%105 = load double*, double** %16
%106 = load i32, i32* @zgtsv_.i__2
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds double, double* %105, i64 %107
%109 = load double, double* %108
%110 = fcmp oeq double %109, 0.000000e+00
br i1 %110, label %111, label %137
111: ; preds = %103
%112 = load double*, double** %17
%113 = load i32, i32* @zgtsv_.i__2
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds double, double* %112, i64 %114
%116 = load double, double* %115
%117 = fcmp oeq double %116, 0.000000e+00
br i1 %117, label %118, label %137
118: ; preds = %111
%119 = load i32, i32* @zgtsv_.k
store i32 %119, i32* @zgtsv_.i__2
%120 = load double*, double** %18
%121 = load i32, i32* @zgtsv_.i__2
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds double, double* %120, i64 %122
%124 = load double, double* %123
%125 = fcmp oeq double %124, 0.000000e+00
br i1 %125, label %126, label %136
126: ; preds = %118
%127 = load double*, double** %19
%128 = load i32, i32* @zgtsv_.i__2
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds double, double* %127, i64 %129
%131 = load double, double* %130
%132 = fcmp oeq double %131, 0.000000e+00
br i1 %132, label %133, label %136
133: ; preds = %126
%134 = load i32, i32* @zgtsv_.k
%135 = load i32*, i32** %25
store i32 %134, i32* %135
store i32 0, i32* %13
br label %990
136: ; preds = %126, %118
br label %638
137: ; preds = %111, %103
%138 = load i32, i32* @zgtsv_.k
store i32 %138, i32* @zgtsv_.i__2
%139 = load i32, i32* @zgtsv_.k
store i32 %139, i32* @zgtsv_.i__3
%140 = load double*, double** %18
%141 = load i32, i32* @zgtsv_.i__2
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds double, double* %140, i64 %142
%144 = load double, double* %143
store double %144, double* @zgtsv_.d__1
%145 = load double, double* @zgtsv_.d__1
%146 = fptosi double %145 to i32
%147 = call i32 @abs(i32 %146)
%148 = load double*, double** %19
%149 = load i32, i32* @zgtsv_.k
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds double, double* %148, i64 %150
%152 = load double, double* %151
store double %152, double* @zgtsv_.d__2
%153 = load double, double* @zgtsv_.d__2
%154 = fptosi double %153 to i32
%155 = call i32 @abs(i32 %154)
%156 = add nsw i32 %147, %155
%157 = load double*, double** %16
%158 = load i32, i32* @zgtsv_.i__3
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds double, double* %157, i64 %159
%161 = load double, double* %160
store double %161, double* @zgtsv_.d__3
%162 = load double, double* @zgtsv_.d__3
%163 = fptosi double %162 to i32
%164 = call i32 @abs(i32 %163)
%165 = load double*, double** %17
%166 = load i32, i32* @zgtsv_.k
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %165, i64 %167
%169 = load double, double* %168
store double %169, double* @zgtsv_.d__4
%170 = load double, double* @zgtsv_.d__4
%171 = fptosi double %170 to i32
%172 = call i32 @abs(i32 %171)
%173 = add nsw i32 %164, %172
%174 = icmp sge i32 %156, %173
br i1 %174, label %175, label %349
175: ; preds = %137
%176 = load double*, double** %16
%177 = load i32, i32* @zgtsv_.k
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds double, double* %176, i64 %178
%180 = load double*, double** %17
%181 = load i32, i32* @zgtsv_.k
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds double, double* %180, i64 %182
%184 = load double*, double** %18
%185 = load i32, i32* @zgtsv_.k
%186 = sext i32 %185 to i64
%187 = getelementptr inbounds double, double* %184, i64 %186
%188 = load double*, double** %19
%189 = load i32, i32* @zgtsv_.k
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds double, double* %188, i64 %190
%192 = load double, double* @zgtsv_.z__1_r
store double %192, double* @zgtsv_.mult_r
%193 = load double, double* @zgtsv_.z__1_i
store double %193, double* @zgtsv_.mult_i
%194 = load i32, i32* @zgtsv_.k
%195 = add nsw i32 %194, 1
store i32 %195, i32* @zgtsv_.i__2
%196 = load i32, i32* @zgtsv_.k
%197 = add nsw i32 %196, 1
store i32 %197, i32* @zgtsv_.i__3
%198 = load i32, i32* @zgtsv_.k
store i32 %198, i32* @zgtsv_.i__4
%199 = load double, double* @zgtsv_.mult_r
%200 = load double*, double** %20
%201 = load i32, i32* @zgtsv_.i__4
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds double, double* %200, i64 %202
%204 = load double, double* %203
%205 = load double, double* @zgtsv_.mult_i
%206 = load double*, double** %21
%207 = load i32, i32* @zgtsv_.i__4
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds double, double* %206, i64 %208
%210 = load double, double* %209
%211 = fmul double %205, %210
%212 = fneg double %211
%213 = call double @llvm.fmuladd.f64(double %199, double %204, double %212)
store double %213, double* @zgtsv_.z__2_r
%214 = load double, double* @zgtsv_.mult_r
%215 = load double*, double** %21
%216 = load i32, i32* @zgtsv_.i__4
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds double, double* %215, i64 %217
%219 = load double, double* %218
%220 = load double, double* @zgtsv_.mult_i
%221 = load double*, double** %20
%222 = load i32, i32* @zgtsv_.i__4
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds double, double* %221, i64 %223
%225 = load double, double* %224
%226 = fmul double %220, %225
%227 = call double @llvm.fmuladd.f64(double %214, double %219, double %226)
store double %227, double* @zgtsv_.z__2_i
%228 = load double*, double** %18
%229 = load i32, i32* @zgtsv_.i__3
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds double, double* %228, i64 %230
%232 = load double, double* %231
%233 = load double, double* @zgtsv_.z__2_r
%234 = fsub double %232, %233
store double %234, double* @zgtsv_.z__1_r
%235 = load double*, double** %19
%236 = load i32, i32* @zgtsv_.i__3
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds double, double* %235, i64 %237
%239 = load double, double* %238
%240 = load double, double* @zgtsv_.z__2_i
%241 = fsub double %239, %240
store double %241, double* @zgtsv_.z__1_i
%242 = load double, double* @zgtsv_.z__1_r
%243 = load double*, double** %18
%244 = load i32, i32* @zgtsv_.i__2
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds double, double* %243, i64 %245
store double %242, double* %246
%247 = load double, double* @zgtsv_.z__1_i
%248 = load double*, double** %19
%249 = load i32, i32* @zgtsv_.i__2
%250 = sext i32 %249 to i64
%251 = getelementptr inbounds double, double* %248, i64 %250
store double %247, double* %251
%252 = load i32*, i32** %15
%253 = load i32, i32* %252
store i32 %253, i32* @zgtsv_.i__2
store i32 1, i32* @zgtsv_.j
br label %254
254: ; preds = %329, %175
%255 = load i32, i32* @zgtsv_.j
%256 = load i32, i32* @zgtsv_.i__2
%257 = icmp sle i32 %255, %256
br i1 %257, label %258, label %332
258: ; preds = %254
%259 = load i32, i32* @zgtsv_.j
%260 = load i32, i32* @zgtsv_.b_dim1
%261 = mul nsw i32 %259, %260
%262 = load i32, i32* @zgtsv_.k
%263 = add nsw i32 %261, %262
%264 = add nsw i32 %263, 1
store i32 %264, i32* @zgtsv_.i__3
%265 = load i32, i32* @zgtsv_.j
%266 = load i32, i32* @zgtsv_.b_dim1
%267 = mul nsw i32 %265, %266
%268 = load i32, i32* @zgtsv_.k
%269 = add nsw i32 %267, %268
%270 = add nsw i32 %269, 1
store i32 %270, i32* @zgtsv_.i__4
%271 = load i32, i32* @zgtsv_.j
%272 = load i32, i32* @zgtsv_.b_dim1
%273 = mul nsw i32 %271, %272
%274 = load i32, i32* @zgtsv_.k
%275 = add nsw i32 %273, %274
store i32 %275, i32* @zgtsv_.i__5
%276 = load double, double* @zgtsv_.mult_r
%277 = load double*, double** %22
%278 = load i32, i32* @zgtsv_.i__5
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds double, double* %277, i64 %279
%281 = load double, double* %280
%282 = load double, double* @zgtsv_.mult_i
%283 = load double*, double** %23
%284 = load i32, i32* @zgtsv_.i__5
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds double, double* %283, i64 %285
%287 = load double, double* %286
%288 = fmul double %282, %287
%289 = fneg double %288
%290 = call double @llvm.fmuladd.f64(double %276, double %281, double %289)
store double %290, double* @zgtsv_.z__2_r
%291 = load double, double* @zgtsv_.mult_r
%292 = load double*, double** %23
%293 = load i32, i32* @zgtsv_.i__5
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds double, double* %292, i64 %294
%296 = load double, double* %295
%297 = load double, double* @zgtsv_.mult_i
%298 = load double*, double** %22
%299 = load i32, i32* @zgtsv_.i__5
%300 = sext i32 %299 to i64
%301 = getelementptr inbounds double, double* %298, i64 %300
%302 = load double, double* %301
%303 = fmul double %297, %302
%304 = call double @llvm.fmuladd.f64(double %291, double %296, double %303)
store double %304, double* @zgtsv_.z__2_i
%305 = load double*, double** %22
%306 = load i32, i32* @zgtsv_.i__4
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds double, double* %305, i64 %307
%309 = load double, double* %308
%310 = load double, double* @zgtsv_.z__2_r
%311 = fsub double %309, %310
store double %311, double* @zgtsv_.z__1_r
%312 = load double*, double** %23
%313 = load i32, i32* @zgtsv_.i__4
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds double, double* %312, i64 %314
%316 = load double, double* %315
%317 = load double, double* @zgtsv_.z__2_i
%318 = fsub double %316, %317
store double %318, double* @zgtsv_.z__1_i
%319 = load double, double* @zgtsv_.z__1_r
%320 = load double*, double** %22
%321 = load i32, i32* @zgtsv_.i__3
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds double, double* %320, i64 %322
store double %319, double* %323
%324 = load double, double* @zgtsv_.z__1_i
%325 = load double*, double** %23
%326 = load i32, i32* @zgtsv_.i__3
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds double, double* %325, i64 %327
store double %324, double* %328
br label %329
329: ; preds = %258
%330 = load i32, i32* @zgtsv_.j
%331 = add nsw i32 %330, 1
store i32 %331, i32* @zgtsv_.j
br label %254
332: ; preds = %254
%333 = load i32, i32* @zgtsv_.k
%334 = load i32*, i32** %14
%335 = load i32, i32* %334
%336 = sub nsw i32 %335, 1
%337 = icmp slt i32 %333, %336
br i1 %337, label %338, label %348
338: ; preds = %332
%339 = load i32, i32* @zgtsv_.k
store i32 %339, i32* @zgtsv_.i__2
%340 = load double*, double** %16
%341 = load i32, i32* @zgtsv_.i__2
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds double, double* %340, i64 %342
store double 0.000000e+00, double* %343
%344 = load double*, double** %17
%345 = load i32, i32* @zgtsv_.i__2
%346 = sext i32 %345 to i64
%347 = getelementptr inbounds double, double* %344, i64 %346
store double 0.000000e+00, double* %347
br label %348
348: ; preds = %338, %332
br label %637
349: ; preds = %137
%350 = load double*, double** %18
%351 = load i32, i32* @zgtsv_.k
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds double, double* %350, i64 %352
%354 = load double*, double** %19
%355 = load i32, i32* @zgtsv_.k
%356 = sext i32 %355 to i64
%357 = getelementptr inbounds double, double* %354, i64 %356
%358 = load double*, double** %16
%359 = load i32, i32* @zgtsv_.k
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds double, double* %358, i64 %360
%362 = load double*, double** %17
%363 = load i32, i32* @zgtsv_.k
%364 = sext i32 %363 to i64
%365 = getelementptr inbounds double, double* %362, i64 %364
%366 = load double, double* @zgtsv_.z__1_r
store double %366, double* @zgtsv_.mult_r
%367 = load double, double* @zgtsv_.z__1_i
store double %367, double* @zgtsv_.mult_i
%368 = load i32, i32* @zgtsv_.k
store i32 %368, i32* @zgtsv_.i__2
%369 = load i32, i32* @zgtsv_.k
store i32 %369, i32* @zgtsv_.i__3
%370 = load double*, double** %16
%371 = load i32, i32* @zgtsv_.i__3
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds double, double* %370, i64 %372
%374 = load double, double* %373
%375 = load double*, double** %18
%376 = load i32, i32* @zgtsv_.i__2
%377 = sext i32 %376 to i64
%378 = getelementptr inbounds double, double* %375, i64 %377
store double %374, double* %378
%379 = load double*, double** %17
%380 = load i32, i32* @zgtsv_.i__3
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds double, double* %379, i64 %381
%383 = load double, double* %382
%384 = load double*, double** %19
%385 = load i32, i32* @zgtsv_.i__2
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds double, double* %384, i64 %386
store double %383, double* %387
%388 = load i32, i32* @zgtsv_.k
%389 = add nsw i32 %388, 1
store i32 %389, i32* @zgtsv_.i__2
%390 = load double*, double** %18
%391 = load i32, i32* @zgtsv_.i__2
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds double, double* %390, i64 %392
%394 = load double, double* %393
store double %394, double* @zgtsv_.temp_r
%395 = load double*, double** %19
%396 = load i32, i32* @zgtsv_.i__2
%397 = sext i32 %396 to i64
%398 = getelementptr inbounds double, double* %395, i64 %397
%399 = load double, double* %398
store double %399, double* @zgtsv_.temp_i
%400 = load i32, i32* @zgtsv_.k
%401 = add nsw i32 %400, 1
store i32 %401, i32* @zgtsv_.i__2
%402 = load i32, i32* @zgtsv_.k
store i32 %402, i32* @zgtsv_.i__3
%403 = load double, double* @zgtsv_.mult_r
%404 = load double, double* @zgtsv_.temp_r
%405 = load double, double* @zgtsv_.mult_i
%406 = load double, double* @zgtsv_.temp_i
%407 = fmul double %405, %406
%408 = fneg double %407
%409 = call double @llvm.fmuladd.f64(double %403, double %404, double %408)
store double %409, double* @zgtsv_.z__2_r
%410 = load double, double* @zgtsv_.mult_r
%411 = load double, double* @zgtsv_.temp_i
%412 = load double, double* @zgtsv_.mult_i
%413 = load double, double* @zgtsv_.temp_r
%414 = fmul double %412, %413
%415 = call double @llvm.fmuladd.f64(double %410, double %411, double %414)
store double %415, double* @zgtsv_.z__2_i
%416 = load double*, double** %20
%417 = load i32, i32* @zgtsv_.i__3
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds double, double* %416, i64 %418
%420 = load double, double* %419
%421 = load double, double* @zgtsv_.z__2_r
%422 = fsub double %420, %421
store double %422, double* @zgtsv_.z__1_r
%423 = load double*, double** %21
%424 = load i32, i32* @zgtsv_.i__3
%425 = sext i32 %424 to i64
%426 = getelementptr inbounds double, double* %423, i64 %425
%427 = load double, double* %426
%428 = load double, double* @zgtsv_.z__2_i
%429 = fsub double %427, %428
store double %429, double* @zgtsv_.z__1_i
%430 = load double, double* @zgtsv_.z__1_r
%431 = load double*, double** %18
%432 = load i32, i32* @zgtsv_.i__2
%433 = sext i32 %432 to i64
%434 = getelementptr inbounds double, double* %431, i64 %433
store double %430, double* %434
%435 = load double, double* @zgtsv_.z__1_i
%436 = load double*, double** %19
%437 = load i32, i32* @zgtsv_.i__2
%438 = sext i32 %437 to i64
%439 = getelementptr inbounds double, double* %436, i64 %438
store double %435, double* %439
%440 = load i32, i32* @zgtsv_.k
%441 = load i32*, i32** %14
%442 = load i32, i32* %441
%443 = sub nsw i32 %442, 1
%444 = icmp slt i32 %440, %443
br i1 %444, label %445, label %513
445: ; preds = %349
%446 = load i32, i32* @zgtsv_.k
store i32 %446, i32* @zgtsv_.i__2
%447 = load i32, i32* @zgtsv_.k
%448 = add nsw i32 %447, 1
store i32 %448, i32* @zgtsv_.i__3
%449 = load double*, double** %20
%450 = load i32, i32* @zgtsv_.i__3
%451 = sext i32 %450 to i64
%452 = getelementptr inbounds double, double* %449, i64 %451
%453 = load double, double* %452
%454 = load double*, double** %16
%455 = load i32, i32* @zgtsv_.i__2
%456 = sext i32 %455 to i64
%457 = getelementptr inbounds double, double* %454, i64 %456
store double %453, double* %457
%458 = load double*, double** %21
%459 = load i32, i32* @zgtsv_.i__3
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds double, double* %458, i64 %460
%462 = load double, double* %461
%463 = load double*, double** %17
%464 = load i32, i32* @zgtsv_.i__2
%465 = sext i32 %464 to i64
%466 = getelementptr inbounds double, double* %463, i64 %465
store double %462, double* %466
%467 = load i32, i32* @zgtsv_.k
%468 = add nsw i32 %467, 1
store i32 %468, i32* @zgtsv_.i__2
%469 = load double, double* @zgtsv_.mult_r
%470 = fneg double %469
store double %470, double* @zgtsv_.z__2_r
%471 = load double, double* @zgtsv_.mult_i
%472 = fneg double %471
store double %472, double* @zgtsv_.z__2_i
%473 = load i32, i32* @zgtsv_.k
store i32 %473, i32* @zgtsv_.i__3
%474 = load double, double* @zgtsv_.z__2_r
%475 = load double*, double** %16
%476 = load i32, i32* @zgtsv_.i__3
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds double, double* %475, i64 %477
%479 = load double, double* %478
%480 = load double, double* @zgtsv_.z__2_i
%481 = load double*, double** %17
%482 = load i32, i32* @zgtsv_.i__3
%483 = sext i32 %482 to i64
%484 = getelementptr inbounds double, double* %481, i64 %483
%485 = load double, double* %484
%486 = fmul double %480, %485
%487 = fneg double %486
%488 = call double @llvm.fmuladd.f64(double %474, double %479, double %487)
store double %488, double* @zgtsv_.z__1_r
%489 = load double, double* @zgtsv_.z__2_r
%490 = load double*, double** %17
%491 = load i32, i32* @zgtsv_.i__3
%492 = sext i32 %491 to i64
%493 = getelementptr inbounds double, double* %490, i64 %492
%494 = load double, double* %493
%495 = load double, double* @zgtsv_.z__2_i
%496 = load double*, double** %16
%497 = load i32, i32* @zgtsv_.i__3
%498 = sext i32 %497 to i64
%499 = getelementptr inbounds double, double* %496, i64 %498
%500 = load double, double* %499
%501 = fmul double %495, %500
%502 = call double @llvm.fmuladd.f64(double %489, double %494, double %501)
store double %502, double* @zgtsv_.z__1_i
%503 = load double, double* @zgtsv_.z__1_r
%504 = load double*, double** %20
%505 = load i32, i32* @zgtsv_.i__2
%506 = sext i32 %505 to i64
%507 = getelementptr inbounds double, double* %504, i64 %506
store double %503, double* %507
%508 = load double, double* @zgtsv_.z__1_i
%509 = load double*, double** %21
%510 = load i32, i32* @zgtsv_.i__2
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds double, double* %509, i64 %511
store double %508, double* %512
br label %513
513: ; preds = %445, %349
%514 = load i32, i32* @zgtsv_.k
store i32 %514, i32* @zgtsv_.i__2
%515 = load double, double* @zgtsv_.temp_r
%516 = load double*, double** %20
%517 = load i32, i32* @zgtsv_.i__2
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds double, double* %516, i64 %518
store double %515, double* %519
%520 = load double, double* @zgtsv_.temp_i
%521 = load double*, double** %21
%522 = load i32, i32* @zgtsv_.i__2
%523 = sext i32 %522 to i64
%524 = getelementptr inbounds double, double* %521, i64 %523
store double %520, double* %524
%525 = load i32*, i32** %15
%526 = load i32, i32* %525
store i32 %526, i32* @zgtsv_.i__2
store i32 1, i32* @zgtsv_.j
br label %527
527: ; preds = %633, %513
%528 = load i32, i32* @zgtsv_.j
%529 = load i32, i32* @zgtsv_.i__2
%530 = icmp sle i32 %528, %529
br i1 %530, label %531, label %636
531: ; preds = %527
%532 = load i32, i32* @zgtsv_.j
%533 = load i32, i32* @zgtsv_.b_dim1
%534 = mul nsw i32 %532, %533
%535 = load i32, i32* @zgtsv_.k
%536 = add nsw i32 %534, %535
store i32 %536, i32* @zgtsv_.i__3
%537 = load double*, double** %22
%538 = load i32, i32* @zgtsv_.i__3
%539 = sext i32 %538 to i64
%540 = getelementptr inbounds double, double* %537, i64 %539
%541 = load double, double* %540
store double %541, double* @zgtsv_.temp_r
%542 = load double*, double** %23
%543 = load i32, i32* @zgtsv_.i__3
%544 = sext i32 %543 to i64
%545 = getelementptr inbounds double, double* %542, i64 %544
%546 = load double, double* %545
store double %546, double* @zgtsv_.temp_i
%547 = load i32, i32* @zgtsv_.j
%548 = load i32, i32* @zgtsv_.b_dim1
%549 = mul nsw i32 %547, %548
%550 = load i32, i32* @zgtsv_.k
%551 = add nsw i32 %549, %550
store i32 %551, i32* @zgtsv_.i__3
%552 = load i32, i32* @zgtsv_.j
%553 = load i32, i32* @zgtsv_.b_dim1
%554 = mul nsw i32 %552, %553
%555 = load i32, i32* @zgtsv_.k
%556 = add nsw i32 %554, %555
%557 = add nsw i32 %556, 1
store i32 %557, i32* @zgtsv_.i__4
%558 = load double*, double** %22
%559 = load i32, i32* @zgtsv_.i__4
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds double, double* %558, i64 %560
%562 = load double, double* %561
%563 = load double*, double** %22
%564 = load i32, i32* @zgtsv_.i__3
%565 = sext i32 %564 to i64
%566 = getelementptr inbounds double, double* %563, i64 %565
store double %562, double* %566
%567 = load double*, double** %23
%568 = load i32, i32* @zgtsv_.i__4
%569 = sext i32 %568 to i64
%570 = getelementptr inbounds double, double* %567, i64 %569
%571 = load double, double* %570
%572 = load double*, double** %23
%573 = load i32, i32* @zgtsv_.i__3
%574 = sext i32 %573 to i64
%575 = getelementptr inbounds double, double* %572, i64 %574
store double %571, double* %575
%576 = load i32, i32* @zgtsv_.j
%577 = load i32, i32* @zgtsv_.b_dim1
%578 = mul nsw i32 %576, %577
%579 = load i32, i32* @zgtsv_.k
%580 = add nsw i32 %578, %579
%581 = add nsw i32 %580, 1
store i32 %581, i32* @zgtsv_.i__3
%582 = load i32, i32* @zgtsv_.j
%583 = load i32, i32* @zgtsv_.b_dim1
%584 = mul nsw i32 %582, %583
%585 = load i32, i32* @zgtsv_.k
%586 = add nsw i32 %584, %585
%587 = add nsw i32 %586, 1
store i32 %587, i32* @zgtsv_.i__4
%588 = load double, double* @zgtsv_.mult_r
%589 = load double*, double** %22
%590 = load i32, i32* @zgtsv_.i__4
%591 = sext i32 %590 to i64
%592 = getelementptr inbounds double, double* %589, i64 %591
%593 = load double, double* %592
%594 = load double, double* @zgtsv_.mult_i
%595 = load double*, double** %23
%596 = load i32, i32* @zgtsv_.i__4
%597 = sext i32 %596 to i64
%598 = getelementptr inbounds double, double* %595, i64 %597
%599 = load double, double* %598
%600 = fmul double %594, %599
%601 = fneg double %600
%602 = call double @llvm.fmuladd.f64(double %588, double %593, double %601)
store double %602, double* @zgtsv_.z__2_r
%603 = load double, double* @zgtsv_.mult_r
%604 = load double*, double** %23
%605 = load i32, i32* @zgtsv_.i__4
%606 = sext i32 %605 to i64
%607 = getelementptr inbounds double, double* %604, i64 %606
%608 = load double, double* %607
%609 = load double, double* @zgtsv_.mult_i
%610 = load double*, double** %22
%611 = load i32, i32* @zgtsv_.i__4
%612 = sext i32 %611 to i64
%613 = getelementptr inbounds double, double* %610, i64 %612
%614 = load double, double* %613
%615 = fmul double %609, %614
%616 = call double @llvm.fmuladd.f64(double %603, double %608, double %615)
store double %616, double* @zgtsv_.z__2_i
%617 = load double, double* @zgtsv_.temp_r
%618 = load double, double* @zgtsv_.z__2_r
%619 = fsub double %617, %618
store double %619, double* @zgtsv_.z__1_r
%620 = load double, double* @zgtsv_.temp_i
%621 = load double, double* @zgtsv_.z__2_i
%622 = fsub double %620, %621
store double %622, double* @zgtsv_.z__1_i
%623 = load double, double* @zgtsv_.z__1_r
%624 = load double*, double** %22
%625 = load i32, i32* @zgtsv_.i__3
%626 = sext i32 %625 to i64
%627 = getelementptr inbounds double, double* %624, i64 %626
store double %623, double* %627
%628 = load double, double* @zgtsv_.z__1_i
%629 = load double*, double** %23
%630 = load i32, i32* @zgtsv_.i__3
%631 = sext i32 %630 to i64
%632 = getelementptr inbounds double, double* %629, i64 %631
store double %628, double* %632
br label %633
633: ; preds = %531
%634 = load i32, i32* @zgtsv_.j
%635 = add nsw i32 %634, 1
store i32 %635, i32* @zgtsv_.j
br label %527
636: ; preds = %527
br label %637
637: ; preds = %636, %348
br label %638
638: ; preds = %637, %136
br label %639
639: ; preds = %638
%640 = load i32, i32* @zgtsv_.k
%641 = add nsw i32 %640, 1
store i32 %641, i32* @zgtsv_.k
br label %99
642: ; preds = %99
%643 = load i32*, i32** %14
%644 = load i32, i32* %643
store i32 %644, i32* @zgtsv_.i__1
%645 = load double*, double** %18
%646 = load i32, i32* @zgtsv_.i__1
%647 = sext i32 %646 to i64
%648 = getelementptr inbounds double, double* %645, i64 %647
%649 = load double, double* %648
%650 = fcmp oeq double %649, 0.000000e+00
br i1 %650, label %651, label %662
651: ; preds = %642
%652 = load double*, double** %19
%653 = load i32, i32* @zgtsv_.i__1
%654 = sext i32 %653 to i64
%655 = getelementptr inbounds double, double* %652, i64 %654
%656 = load double, double* %655
%657 = fcmp oeq double %656, 0.000000e+00
br i1 %657, label %658, label %662
658: ; preds = %651
%659 = load i32*, i32** %14
%660 = load i32, i32* %659
%661 = load i32*, i32** %25
store i32 %660, i32* %661
store i32 0, i32* %13
br label %990
662: ; preds = %651, %642
%663 = load i32*, i32** %15
%664 = load i32, i32* %663
store i32 %664, i32* @zgtsv_.i__1
store i32 1, i32* @zgtsv_.j
br label %665
665: ; preds = %986, %662
%666 = load i32, i32* @zgtsv_.j
%667 = load i32, i32* @zgtsv_.i__1
%668 = icmp sle i32 %666, %667
br i1 %668, label %669, label %989
669: ; preds = %665
%670 = load i32, i32* @zgtsv_.j
%671 = load i32, i32* @zgtsv_.b_dim1
%672 = mul nsw i32 %670, %671
%673 = load i32*, i32** %14
%674 = load i32, i32* %673
%675 = add nsw i32 %672, %674
store i32 %675, i32* @zgtsv_.i__2
%676 = load double*, double** %22
%677 = load i32, i32* @zgtsv_.j
%678 = load i32, i32* @zgtsv_.b_dim1
%679 = mul nsw i32 %677, %678
%680 = load i32*, i32** %14
%681 = load i32, i32* %680
%682 = add nsw i32 %679, %681
%683 = sext i32 %682 to i64
%684 = getelementptr inbounds double, double* %676, i64 %683
%685 = load double*, double** %23
%686 = load i32, i32* @zgtsv_.j
%687 = load i32, i32* @zgtsv_.b_dim1
%688 = mul nsw i32 %686, %687
%689 = load i32*, i32** %14
%690 = load i32, i32* %689
%691 = add nsw i32 %688, %690
%692 = sext i32 %691 to i64
%693 = getelementptr inbounds double, double* %685, i64 %692
%694 = load double*, double** %18
%695 = load i32*, i32** %14
%696 = load i32, i32* %695
%697 = sext i32 %696 to i64
%698 = getelementptr inbounds double, double* %694, i64 %697
%699 = load double*, double** %19
%700 = load i32*, i32** %14
%701 = load i32, i32* %700
%702 = sext i32 %701 to i64
%703 = getelementptr inbounds double, double* %699, i64 %702
%704 = load double, double* @zgtsv_.z__1_r
%705 = load double*, double** %22
%706 = load i32, i32* @zgtsv_.i__2
%707 = sext i32 %706 to i64
%708 = getelementptr inbounds double, double* %705, i64 %707
store double %704, double* %708
%709 = load double, double* @zgtsv_.z__1_i
%710 = load double*, double** %23
%711 = load i32, i32* @zgtsv_.i__2
%712 = sext i32 %711 to i64
%713 = getelementptr inbounds double, double* %710, i64 %712
store double %709, double* %713
%714 = load i32*, i32** %14
%715 = load i32, i32* %714
%716 = icmp sgt i32 %715, 1
br i1 %716, label %717, label %822
717: ; preds = %669
%718 = load i32, i32* @zgtsv_.j
%719 = load i32, i32* @zgtsv_.b_dim1
%720 = mul nsw i32 %718, %719
%721 = load i32*, i32** %14
%722 = load i32, i32* %721
%723 = add nsw i32 %720, %722
%724 = sub nsw i32 %723, 1
store i32 %724, i32* @zgtsv_.i__2
%725 = load i32, i32* @zgtsv_.j
%726 = load i32, i32* @zgtsv_.b_dim1
%727 = mul nsw i32 %725, %726
%728 = load i32*, i32** %14
%729 = load i32, i32* %728
%730 = add nsw i32 %727, %729
%731 = sub nsw i32 %730, 1
store i32 %731, i32* @zgtsv_.i__3
%732 = load i32*, i32** %14
%733 = load i32, i32* %732
%734 = sub nsw i32 %733, 1
store i32 %734, i32* @zgtsv_.i__4
%735 = load i32, i32* @zgtsv_.j
%736 = load i32, i32* @zgtsv_.b_dim1
%737 = mul nsw i32 %735, %736
%738 = load i32*, i32** %14
%739 = load i32, i32* %738
%740 = add nsw i32 %737, %739
store i32 %740, i32* @zgtsv_.i__5
%741 = load double*, double** %20
%742 = load i32, i32* @zgtsv_.i__4
%743 = sext i32 %742 to i64
%744 = getelementptr inbounds double, double* %741, i64 %743
%745 = load double, double* %744
%746 = load double*, double** %22
%747 = load i32, i32* @zgtsv_.i__5
%748 = sext i32 %747 to i64
%749 = getelementptr inbounds double, double* %746, i64 %748
%750 = load double, double* %749
%751 = load double*, double** %21
%752 = load i32, i32* @zgtsv_.i__4
%753 = sext i32 %752 to i64
%754 = getelementptr inbounds double, double* %751, i64 %753
%755 = load double, double* %754
%756 = load double*, double** %23
%757 = load i32, i32* @zgtsv_.i__5
%758 = sext i32 %757 to i64
%759 = getelementptr inbounds double, double* %756, i64 %758
%760 = load double, double* %759
%761 = fmul double %755, %760
%762 = fneg double %761
%763 = call double @llvm.fmuladd.f64(double %745, double %750, double %762)
store double %763, double* @zgtsv_.z__3_r
%764 = load double*, double** %20
%765 = load i32, i32* @zgtsv_.i__4
%766 = sext i32 %765 to i64
%767 = getelementptr inbounds double, double* %764, i64 %766
%768 = load double, double* %767
%769 = load double*, double** %23
%770 = load i32, i32* @zgtsv_.i__5
%771 = sext i32 %770 to i64
%772 = getelementptr inbounds double, double* %769, i64 %771
%773 = load double, double* %772
%774 = load double*, double** %21
%775 = load i32, i32* @zgtsv_.i__4
%776 = sext i32 %775 to i64
%777 = getelementptr inbounds double, double* %774, i64 %776
%778 = load double, double* %777
%779 = load double*, double** %22
%780 = load i32, i32* @zgtsv_.i__5
%781 = sext i32 %780 to i64
%782 = getelementptr inbounds double, double* %779, i64 %781
%783 = load double, double* %782
%784 = fmul double %778, %783
%785 = call double @llvm.fmuladd.f64(double %768, double %773, double %784)
store double %785, double* @zgtsv_.z__3_i
%786 = load double*, double** %22
%787 = load i32, i32* @zgtsv_.i__3
%788 = sext i32 %787 to i64
%789 = getelementptr inbounds double, double* %786, i64 %788
%790 = load double, double* %789
%791 = load double, double* @zgtsv_.z__3_r
%792 = fsub double %790, %791
store double %792, double* @zgtsv_.z__2_r
%793 = load double*, double** %23
%794 = load i32, i32* @zgtsv_.i__3
%795 = sext i32 %794 to i64
%796 = getelementptr inbounds double, double* %793, i64 %795
%797 = load double, double* %796
%798 = load double, double* @zgtsv_.z__3_i
%799 = fsub double %797, %798
store double %799, double* @zgtsv_.z__2_i
%800 = load double*, double** %18
%801 = load i32*, i32** %14
%802 = load i32, i32* %801
%803 = sub nsw i32 %802, 1
%804 = sext i32 %803 to i64
%805 = getelementptr inbounds double, double* %800, i64 %804
%806 = load double*, double** %19
%807 = load i32*, i32** %14
%808 = load i32, i32* %807
%809 = sub nsw i32 %808, 1
%810 = sext i32 %809 to i64
%811 = getelementptr inbounds double, double* %806, i64 %810
%812 = load double, double* @zgtsv_.z__1_r
%813 = load double*, double** %22
%814 = load i32, i32* @zgtsv_.i__2
%815 = sext i32 %814 to i64
%816 = getelementptr inbounds double, double* %813, i64 %815
store double %812, double* %816
%817 = load double, double* @zgtsv_.z__1_i
%818 = load double*, double** %23
%819 = load i32, i32* @zgtsv_.i__2
%820 = sext i32 %819 to i64
%821 = getelementptr inbounds double, double* %818, i64 %820
store double %817, double* %821
br label %822
822: ; preds = %717, %669
%823 = load i32*, i32** %14
%824 = load i32, i32* %823
%825 = sub nsw i32 %824, 2
store i32 %825, i32* @zgtsv_.k
br label %826
826: ; preds = %982, %822
%827 = load i32, i32* @zgtsv_.k
%828 = icmp sge i32 %827, 1
br i1 %828, label %829, label %985
829: ; preds = %826
%830 = load i32, i32* @zgtsv_.j
%831 = load i32, i32* @zgtsv_.b_dim1
%832 = mul nsw i32 %830, %831
%833 = load i32, i32* @zgtsv_.k
%834 = add nsw i32 %832, %833
store i32 %834, i32* @zgtsv_.i__2
%835 = load i32, i32* @zgtsv_.j
%836 = load i32, i32* @zgtsv_.b_dim1
%837 = mul nsw i32 %835, %836
%838 = load i32, i32* @zgtsv_.k
%839 = add nsw i32 %837, %838
store i32 %839, i32* @zgtsv_.i__3
%840 = load i32, i32* @zgtsv_.k
store i32 %840, i32* @zgtsv_.i__4
%841 = load i32, i32* @zgtsv_.j
%842 = load i32, i32* @zgtsv_.b_dim1
%843 = mul nsw i32 %841, %842
%844 = load i32, i32* @zgtsv_.k
%845 = add nsw i32 %843, %844
%846 = add nsw i32 %845, 1
store i32 %846, i32* @zgtsv_.i__5
%847 = load double*, double** %20
%848 = load i32, i32* @zgtsv_.i__4
%849 = sext i32 %848 to i64
%850 = getelementptr inbounds double, double* %847, i64 %849
%851 = load double, double* %850
%852 = load double*, double** %22
%853 = load i32, i32* @zgtsv_.i__5
%854 = sext i32 %853 to i64
%855 = getelementptr inbounds double, double* %852, i64 %854
%856 = load double, double* %855
%857 = load double*, double** %21
%858 = load i32, i32* @zgtsv_.i__4
%859 = sext i32 %858 to i64
%860 = getelementptr inbounds double, double* %857, i64 %859
%861 = load double, double* %860
%862 = load double*, double** %23
%863 = load i32, i32* @zgtsv_.i__5
%864 = sext i32 %863 to i64
%865 = getelementptr inbounds double, double* %862, i64 %864
%866 = load double, double* %865
%867 = fmul double %861, %866
%868 = fneg double %867
%869 = call double @llvm.fmuladd.f64(double %851, double %856, double %868)
store double %869, double* @zgtsv_.z__4_r
%870 = load double*, double** %20
%871 = load i32, i32* @zgtsv_.i__4
%872 = sext i32 %871 to i64
%873 = getelementptr inbounds double, double* %870, i64 %872
%874 = load double, double* %873
%875 = load double*, double** %23
%876 = load i32, i32* @zgtsv_.i__5
%877 = sext i32 %876 to i64
%878 = getelementptr inbounds double, double* %875, i64 %877
%879 = load double, double* %878
%880 = load double*, double** %21
%881 = load i32, i32* @zgtsv_.i__4
%882 = sext i32 %881 to i64
%883 = getelementptr inbounds double, double* %880, i64 %882
%884 = load double, double* %883
%885 = load double*, double** %22
%886 = load i32, i32* @zgtsv_.i__5
%887 = sext i32 %886 to i64
%888 = getelementptr inbounds double, double* %885, i64 %887
%889 = load double, double* %888
%890 = fmul double %884, %889
%891 = call double @llvm.fmuladd.f64(double %874, double %879, double %890)
store double %891, double* @zgtsv_.z__4_i
%892 = load double*, double** %22
%893 = load i32, i32* @zgtsv_.i__3
%894 = sext i32 %893 to i64
%895 = getelementptr inbounds double, double* %892, i64 %894
%896 = load double, double* %895
%897 = load double, double* @zgtsv_.z__4_r
%898 = fsub double %896, %897
store double %898, double* @zgtsv_.z__3_r
%899 = load double*, double** %23
%900 = load i32, i32* @zgtsv_.i__3
%901 = sext i32 %900 to i64
%902 = getelementptr inbounds double, double* %899, i64 %901
%903 = load double, double* %902
%904 = load double, double* @zgtsv_.z__4_i
%905 = fsub double %903, %904
store double %905, double* @zgtsv_.z__3_i
%906 = load i32, i32* @zgtsv_.k
store i32 %906, i32* @zgtsv_.i__6
%907 = load i32, i32* @zgtsv_.j
%908 = load i32, i32* @zgtsv_.b_dim1
%909 = mul nsw i32 %907, %908
%910 = load i32, i32* @zgtsv_.k
%911 = add nsw i32 %909, %910
%912 = add nsw i32 %911, 2
store i32 %912, i32* @zgtsv_.i__7
%913 = load double*, double** %16
%914 = load i32, i32* @zgtsv_.i__6
%915 = sext i32 %914 to i64
%916 = getelementptr inbounds double, double* %913, i64 %915
%917 = load double, double* %916
%918 = load double*, double** %22
%919 = load i32, i32* @zgtsv_.i__7
%920 = sext i32 %919 to i64
%921 = getelementptr inbounds double, double* %918, i64 %920
%922 = load double, double* %921
%923 = load double*, double** %17
%924 = load i32, i32* @zgtsv_.i__6
%925 = sext i32 %924 to i64
%926 = getelementptr inbounds double, double* %923, i64 %925
%927 = load double, double* %926
%928 = load double*, double** %23
%929 = load i32, i32* @zgtsv_.i__7
%930 = sext i32 %929 to i64
%931 = getelementptr inbounds double, double* %928, i64 %930
%932 = load double, double* %931
%933 = fmul double %927, %932
%934 = fneg double %933
%935 = call double @llvm.fmuladd.f64(double %917, double %922, double %934)
store double %935, double* @zgtsv_.z__5_r
%936 = load double*, double** %16
%937 = load i32, i32* @zgtsv_.i__6
%938 = sext i32 %937 to i64
%939 = getelementptr inbounds double, double* %936, i64 %938
%940 = load double, double* %939
%941 = load double*, double** %23
%942 = load i32, i32* @zgtsv_.i__7
%943 = sext i32 %942 to i64
%944 = getelementptr inbounds double, double* %941, i64 %943
%945 = load double, double* %944
%946 = load double*, double** %17
%947 = load i32, i32* @zgtsv_.i__6
%948 = sext i32 %947 to i64
%949 = getelementptr inbounds double, double* %946, i64 %948
%950 = load double, double* %949
%951 = load double*, double** %22
%952 = load i32, i32* @zgtsv_.i__7
%953 = sext i32 %952 to i64
%954 = getelementptr inbounds double, double* %951, i64 %953
%955 = load double, double* %954
%956 = fmul double %950, %955
%957 = call double @llvm.fmuladd.f64(double %940, double %945, double %956)
store double %957, double* @zgtsv_.z__5_i
%958 = load double, double* @zgtsv_.z__3_r
%959 = load double, double* @zgtsv_.z__5_r
%960 = fsub double %958, %959
store double %960, double* @zgtsv_.z__2_r
%961 = load double, double* @zgtsv_.z__3_i
%962 = load double, double* @zgtsv_.z__5_i
%963 = fsub double %961, %962
store double %963, double* @zgtsv_.z__2_i
%964 = load double*, double** %18
%965 = load i32, i32* @zgtsv_.k
%966 = sext i32 %965 to i64
%967 = getelementptr inbounds double, double* %964, i64 %966
%968 = load double*, double** %19
%969 = load i32, i32* @zgtsv_.k
%970 = sext i32 %969 to i64
%971 = getelementptr inbounds double, double* %968, i64 %970
%972 = load double, double* @zgtsv_.z__1_r
%973 = load double*, double** %22
%974 = load i32, i32* @zgtsv_.i__2
%975 = sext i32 %974 to i64
%976 = getelementptr inbounds double, double* %973, i64 %975
store double %972, double* %976
%977 = load double, double* @zgtsv_.z__1_i
%978 = load double*, double** %23
%979 = load i32, i32* @zgtsv_.i__2
%980 = sext i32 %979 to i64
%981 = getelementptr inbounds double, double* %978, i64 %980
store double %977, double* %981
br label %982
982: ; preds = %829
%983 = load i32, i32* @zgtsv_.k
%984 = add nsw i32 %983, -1
store i32 %984, i32* @zgtsv_.k
br label %826
985: ; preds = %826
br label %986
986: ; preds = %985
%987 = load i32, i32* @zgtsv_.j
%988 = add nsw i32 %987, 1
store i32 %988, i32* @zgtsv_.j
br label %665
989: ; preds = %665
store i32 0, i32* %13
br label %990
990: ; preds = %989, %658, %133, %94, %86
%991 = load i32, i32* %13
ret i32 %991
}

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