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

/* Forward declarations */

/* Type definitions */
struct vtx_data {
  int dummy;
};
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int /*<<< orphan*/ *stdout;
void warnings(double *workn, struct vtx_data **A, double **y, int n,
              double *lambda, double *vwsqrt, double *Ares, double *bound,
              int *index, int d, int j, int maxj, double Sres_max,
              double eigtol, double *u, double Anorm, FILE *out_file) {
  extern int DEBUG_EVECS;
  extern int WARNING_EVECS;
  extern double WARNING_ORTHTOL;
  extern double WARNING_MISTOL;
  extern double SRESTOL;
  extern int LANCZOS_CONVERGENCE_MODE;
  extern int SRES_SWITCHES;
  int warning1 = 0;
  int warning2 = 0;
  int warning3 = 0;
  int i;
  int hosed;
  int pass;
  FILE *outfile = NULL;
  double checkeig();
  void doubleout_file();
  void bail();
  hosed = 0;
  for (pass = 1; pass <= 2; pass++) {
    if (pass == 1) {
      outfile = stdout;
    }
    if (pass == 2) {
      if (out_file != NULL) {
        outfile = out_file;
      } else if (hosed) {
        bail(NULL, 1);
      } else {
        return;
      }
    }
    if (DEBUG_EVECS > 0 || WARNING_EVECS > 0) {
      if (LANCZOS_CONVERGENCE_MODE == 1) {
        fprintf(
            outfile,
            "Note about warnings: in partition convergence monitoring mode.\n");
      }
      for (i = 1; i <= d; i++) {
        Ares[i] = checkeig(workn, A, y[i], n, lambda[i], vwsqrt, u);
      }
    }
    if (DEBUG_EVECS > 0) {
      if (pass == 1) {
        fprintf(outfile, "Lanczos itns. = %d\n", j);
      }
      fprintf(outfile, "          lambda                Ares est.              "
                       "Ares          index\n");
      for (i = 1; i <= d; i++) {
        fprintf(outfile, "%2d.", i);
        doubleout_file(outfile, lambda[i], 1);
        doubleout_file(outfile, bound[i], 1);
        doubleout_file(outfile, Ares[i], 1);
        fprintf(outfile, "   %3d\n", index[i]);
      }
      fprintf(outfile, "\n");
    }
    if (WARNING_EVECS > 0) {
      warning1 = 0;
      warning2 = 0;
      warning3 = 0;
      for (i = 1; i <= d; i++) {
        if (Ares[i] > eigtol) {
          warning1 = 1;
        }
        if (Ares[i] > WARNING_ORTHTOL * bound[i] && Ares[i] > .01 * eigtol) {
          warning2 = 1;
        }
        if (Ares[i] > WARNING_MISTOL * bound[i] && Ares[i] > .01 * eigtol) {
          warning3 = 1;
        }
      }
      if (j == maxj) {
        fprintf(outfile,
                "WARNING: Maximum number of Lanczos iterations reached.\n");
      }
      if (warning2 && !warning3) {
        fprintf(outfile,
                "WARNING: Minor loss of orthogonality (Ares/est. > %g).\n",
                WARNING_ORTHTOL);
      }
      if (warning3) {
        fprintf(
            outfile,
            "WARNING: Substantial loss of orthogonality (Ares/est. > %g).\n",
            WARNING_MISTOL);
      }
      if (warning1) {
        fprintf(outfile, "WARNING: Eigen pair tolerance (%g) not achieved.\n",
                eigtol);
      }
    }
    if (WARNING_EVECS > 1) {
      if (warning1 || warning2 || warning3) {
        if (DEBUG_EVECS <= 0) {
          fprintf(outfile, "          lambda                Ares est.          "
                           "    Ares          index\n");
          for (i = 1; i <= d; i++) {
            fprintf(outfile, "%2d.", i);
            doubleout_file(outfile, lambda[i], 1);
            doubleout_file(outfile, bound[i], 1);
            doubleout_file(outfile, Ares[i], 1);
            fprintf(outfile, "   %3d\n", index[i]);
          }
        }
      }
    }
    if (warning1 || warning2 || warning3 || WARNING_EVECS > 2) {
      if (Sres_max > SRESTOL) {
        fprintf(outfile,
                "WARNING: Maximum eigen residual of T (%g) exceeds SRESTOL.\n",
                Sres_max);
      }
    }
    if (WARNING_EVECS > 2) {
      if (SRES_SWITCHES > 0) {
        fprintf(outfile,
                "WARNING: Switched routine for computing evec of T %d times.\n",
                SRES_SWITCHES);
        SRES_SWITCHES = 0;
      }
    }
    for (i = 1; i <= d; i++) {
      if (lambda[i] < 0 || lambda[i] > Anorm + eigtol) {
        hosed = 1;
      }
    }
    if (hosed) {
      fprintf(outfile, "ERROR: Sorry, out-of-bounds eigenvalue indicates "
                       "serious breakdown.\n");
      fprintf(outfile,
              "       Try different parameters or another eigensolver.\n");
      if (pass == 2) {
        bail(NULL, 1);
      }
    }
  }
}


x86 assembly (clang, -O0):
<warnings>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movsd  %xmm0,-0x38(%rbp)
movsd  %xmm1,-0x40(%rbp)
movsd  %xmm2,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
movq   $0x0,-0x68(%rbp)
movl   $0x0,-0x5c(%rbp)
movl   $0x1,-0x60(%rbp)
cmpl   $0x2,-0x60(%rbp)
jg     1802 <warnings+0x6c2>
cmpl   $0x1,-0x60(%rbp)
jne    11d8 <warnings+0x98>
mov    0x2def(%rip),%rax
mov    (%rax),%rax
mov    %rax,-0x68(%rbp)
cmpl   $0x2,-0x60(%rbp)
jne    1228 <warnings+0xe8>
cmpq   $0x0,0x48(%rbp)
je     11fa <warnings+0xba>
mov    0x48(%rbp),%rax
mov    %rax,-0x68(%rbp)
jmp    1223 <warnings+0xe3>
cmpl   $0x0,-0x5c(%rbp)
je     1219 <warnings+0xd9>
xor    %eax,%eax
mov    %eax,%edi
mov    $0x1,%esi
mov    $0x0,%al
call   1050 <bail@plt>
jmp    121e <warnings+0xde>
jmp    1802 <warnings+0x6c2>
jmp    1223 <warnings+0xe3>
jmp    1228 <warnings+0xe8>
mov    0x2db9(%rip),%rax
cmpl   $0x0,(%rax)
jg     1248 <warnings+0x108>
mov    0x2d71(%rip),%rax
cmpl   $0x0,(%rax)
jle    12d1 <warnings+0x191>
mov    0x2d69(%rip),%rax
cmpl   $0x1,(%rax)
jne    126a <warnings+0x12a>
mov    -0x68(%rbp),%rdi
lea    0xda5(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
movl   $0x1,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     12cc <warnings+0x18c>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x1c(%rbp),%ecx
mov    -0x28(%rbp),%rax
movslq -0x58(%rbp),%r8
movsd  (%rax,%r8,8),%xmm0
mov    -0x30(%rbp),%r8
mov    0x40(%rbp),%r9
mov    $0x1,%al
call   1060 <checkeig@plt>
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1271 <warnings+0x131>
jmp    12d1 <warnings+0x191>
mov    0x2d10(%rip),%rax
cmpl   $0x0,(%rax)
jle    13ce <warnings+0x28e>
cmpl   $0x1,-0x60(%rbp)
jne    1300 <warnings+0x1c0>
mov    -0x68(%rbp),%rdi
mov    0x30(%rbp),%edx
lea    0xd4f(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x68(%rbp),%rdi
lea    0xd51(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
movl   $0x1,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     13bc <warnings+0x27c>
mov    -0x68(%rbp),%rdi
mov    -0x58(%rbp),%edx
lea    0xd75(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x68(%rbp),%rdi
mov    -0x28(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    -0x68(%rbp),%rdi
mov    0x18(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    -0x68(%rbp),%rdi
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    -0x68(%rbp),%rdi
mov    0x20(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
lea    0xd06(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1319 <warnings+0x1d9>
mov    -0x68(%rbp),%rdi
lea    0xd9a(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    0x2bdb(%rip),%rax
cmpl   $0x0,(%rax)
jle    1588 <warnings+0x448>
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
movl   $0x1,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     14ec <warnings+0x3ac>
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    1425 <warnings+0x2e5>
movl   $0x1,-0x4c(%rbp)
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x2b6f(%rip),%rax
movsd  (%rax),%xmm1
mov    0x18(%rbp),%rax
movslq -0x58(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
ucomisd %xmm1,%xmm0
jbe    147f <warnings+0x33f>
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xb97(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    147f <warnings+0x33f>
movl   $0x1,-0x50(%rbp)
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x2b3d(%rip),%rax
movsd  (%rax),%xmm1
mov    0x18(%rbp),%rax
movslq -0x58(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
ucomisd %xmm1,%xmm0
jbe    14d9 <warnings+0x399>
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xb3d(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    14d9 <warnings+0x399>
movl   $0x1,-0x54(%rbp)
jmp    14de <warnings+0x39e>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    13fa <warnings+0x2ba>
mov    0x30(%rbp),%eax
cmp    0x38(%rbp),%eax
jne    150a <warnings+0x3ca>
mov    -0x68(%rbp),%rdi
lea    0xbb2(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
cmpl   $0x0,-0x50(%rbp)
je     153b <warnings+0x3fb>
cmpl   $0x0,-0x54(%rbp)
jne    153b <warnings+0x3fb>
mov    -0x68(%rbp),%rdi
mov    0x2a7f(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbb9(%rip),%rsi
mov    $0x1,%al
call   1040 <fprintf@plt>
cmpl   $0x0,-0x54(%rbp)
je     1562 <warnings+0x422>
mov    -0x68(%rbp),%rdi
mov    0x2a80(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbca(%rip),%rsi
mov    $0x1,%al
call   1040 <fprintf@plt>
cmpl   $0x0,-0x4c(%rbp)
je     1583 <warnings+0x443>
mov    -0x68(%rbp),%rdi
movsd  -0x40(%rbp),%xmm0
lea    0xbe7(%rip),%rsi
mov    $0x1,%al
call   1040 <fprintf@plt>
jmp    1588 <warnings+0x448>
mov    0x2a21(%rip),%rax
cmpl   $0x1,(%rax)
jle    1691 <warnings+0x551>
cmpl   $0x0,-0x4c(%rbp)
jne    15b6 <warnings+0x476>
cmpl   $0x0,-0x50(%rbp)
jne    15b6 <warnings+0x476>
cmpl   $0x0,-0x54(%rbp)
je     168c <warnings+0x54c>
mov    0x2a2b(%rip),%rax
cmpl   $0x0,(%rax)
jg     1687 <warnings+0x547>
mov    -0x68(%rbp),%rdi
lea    0xa8b(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
movl   $0x1,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     1682 <warnings+0x542>
mov    -0x68(%rbp),%rdi
mov    -0x58(%rbp),%edx
lea    0xaaf(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x68(%rbp),%rdi
mov    -0x28(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    -0x68(%rbp),%rdi
mov    0x18(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    -0x68(%rbp),%rdi
mov    0x10(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    -0x68(%rbp),%rdi
mov    0x20(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
lea    0xa40(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    15df <warnings+0x49f>
jmp    1687 <warnings+0x547>
jmp    168c <warnings+0x54c>
jmp    1691 <warnings+0x551>
cmpl   $0x0,-0x4c(%rbp)
jne    16bf <warnings+0x57f>
cmpl   $0x0,-0x50(%rbp)
jne    16bf <warnings+0x57f>
cmpl   $0x0,-0x54(%rbp)
jne    16bf <warnings+0x57f>
mov    0x28fa(%rip),%rax
cmpl   $0x2,(%rax)
jle    16f1 <warnings+0x5b1>
movsd  -0x38(%rbp),%xmm0
mov    0x28fd(%rip),%rax
ucomisd (%rax),%xmm0
jbe    16ec <warnings+0x5ac>
mov    -0x68(%rbp),%rdi
movsd  -0x38(%rbp),%xmm0
lea    0xab0(%rip),%rsi
mov    $0x1,%al
call   1040 <fprintf@plt>
jmp    16f1 <warnings+0x5b1>
mov    0x28b8(%rip),%rax
cmpl   $0x2,(%rax)
jle    173e <warnings+0x5fe>
mov    0x28d8(%rip),%rax
cmpl   $0x0,(%rax)
jle    1739 <warnings+0x5f9>
mov    -0x68(%rbp),%rdi
mov    0x28c4(%rip),%rax
mov    (%rax),%edx
lea    0xaac(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    0x28ad(%rip),%rax
movl   $0x0,(%rax)
jmp    173e <warnings+0x5fe>
movl   $0x1,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     17a2 <warnings+0x662>
mov    -0x28(%rbp),%rax
movslq -0x58(%rbp),%rcx
xorps  %xmm0,%xmm0
ucomisd (%rax,%rcx,8),%xmm0
ja     1788 <warnings+0x648>
mov    -0x28(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x48(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    178f <warnings+0x64f>
movl   $0x1,-0x5c(%rbp)
jmp    1794 <warnings+0x654>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1745 <warnings+0x605>
cmpl   $0x0,-0x5c(%rbp)
je     17ef <warnings+0x6af>
mov    -0x68(%rbp),%rdi
lea    0xa57(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
mov    -0x68(%rbp),%rdi
lea    0xa8a(%rip),%rsi
mov    $0x0,%al
call   1040 <fprintf@plt>
cmpl   $0x2,-0x60(%rbp)
jne    17ea <warnings+0x6aa>
xor    %eax,%eax
mov    %eax,%edi
mov    $0x1,%esi
mov    $0x0,%al
call   1050 <bail@plt>
jmp    17ef <warnings+0x6af>
jmp    17f4 <warnings+0x6b4>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    11b6 <warnings+0x76>
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<warnings>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc8,%rsp
movsd  %xmm1,0x68(%rsp)
movsd  %xmm0,0x70(%rsp)
mov    %r9,0x98(%rsp)
mov    %r8,%r15
mov    %ecx,0x2c(%rsp)
mov    0x138(%rsp),%rax
mov    0x130(%rsp),%rcx
mov    %rcx,0xa8(%rsp)
mov    0x128(%rsp),%ecx
mov    %ecx,0x64(%rsp)
mov    0x120(%rsp),%ecx
mov    %ecx,0x28(%rsp)
mov    0x118(%rsp),%ecx
movsd  0xe37(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0xa0(%rsp)
addsd  %xmm1,%xmm2
mov    %rcx,0x20(%rsp)
add    $0x1,%ecx
lea    -0x1(%rcx),%rbx
mov    %ebx,%ebp
and    $0x3,%ebp
mov    %rbp,0xb8(%rsp)
mov    %rbx,0x78(%rsp)
and    $0xfffffffffffffffc,%rbx
mov    %rbx,0x90(%rsp)
xorpd  %xmm1,%xmm1
mov    0x110(%rsp),%rbx
mov    %rbx,0x80(%rsp)
mov    0x108(%rsp),%rbx
mov    %rbx,0x58(%rsp)
mov    0x100(%rsp),%rbx
mov    %rbx,0x30(%rsp)
mov    %rcx,0x88(%rsp)
add    $0xfffffffffffffffe,%rcx
mov    %rcx,0xb0(%rsp)
mov    $0x1,%r13d
xor    %r9d,%r9d
mov    $0x1,%r12d
xor    %r14d,%r14d
xor    %r8d,%r8d
xor    %ebx,%ebx
movl   $0x0,0x10(%rsp)
movsd  %xmm2,0x8(%rsp)
mov    %rdx,0x50(%rsp)
mov    %rsi,0x48(%rsp)
mov    %rdi,0x40(%rsp)
mov    %rax,0xc0(%rsp)
mov    %r15,0x38(%rsp)
jmp    12b5 <warnings+0x155>
nopl   0x0(%rax)
add    $0x1,%r12d
cmp    $0x3,%r12d
mov    0x50(%rsp),%rdx
mov    0x48(%rsp),%rsi
mov    0x40(%rsp),%rdi
mov    0xc0(%rsp),%rax
je     19c3 <warnings+0x863>
mov    %r9,%rbp
cmp    $0x1,%r12d
jne    12cb <warnings+0x16b>
mov    0x2cfb(%rip),%rcx
mov    (%rcx),%rbp
mov    %rbp,%r9
cmp    $0x2,%r12d
cmove  %rax,%r9
mov    %r8d,(%rsp)
jne    1315 <warnings+0x1b5>
test   %rax,%rax
jne    1315 <warnings+0x1b5>
test   %r14d,%r14d
je     19c3 <warnings+0x863>
xor    %edi,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1060 <bail@plt>
mov    (%rsp),%r8d
xorpd  %xmm1,%xmm1
mov    0x40(%rsp),%rdi
mov    0x48(%rsp),%rsi
mov    0x50(%rsp),%rdx
movsd  0x8(%rsp),%xmm2
mov    %rbp,%r9
mov    0x2ccc(%rip),%rax
cmpl   $0x0,(%rax)
mov    %r12d,0x14(%rsp)
jg     1336 <warnings+0x1d6>
mov    0x2c83(%rip),%rax
cmpl   $0x0,(%rax)
jle    17c0 <warnings+0x660>
mov    %ebx,0x4(%rsp)
mov    0x2c77(%rip),%rax
cmpl   $0x1,(%rax)
jne    1374 <warnings+0x214>
mov    $0x3f,%esi
mov    $0x1,%edx
lea    0xcb1(%rip),%rdi
mov    %r9,%rcx
mov    %r9,%rbx
call   1080 <fwrite@plt>
mov    %rbx,%r9
mov    0x40(%rsp),%rdi
mov    0x48(%rsp),%rsi
mov    0x50(%rsp),%rdx
mov    %r9,0x18(%rsp)
cmpl   $0x0,0x20(%rsp)
mov    0xa8(%rsp),%r13
mov    0x30(%rsp),%rbp
mov    0x98(%rsp),%r12
mov    0x2c(%rsp),%ecx
jle    13e1 <warnings+0x281>
mov    $0x1,%ebx
xchg   %ax,%ax
mov    (%rdx,%rbx,8),%rdx
movsd  (%r15,%rbx,8),%xmm0
mov    %r12,%r8
mov    %r13,%r9
mov    $0x1,%al
call   1070 <checkeig@plt>
mov    0x2c(%rsp),%ecx
mov    0x88(%rsp),%rax
mov    0x40(%rsp),%rdi
mov    0x48(%rsp),%rsi
mov    0x50(%rsp),%rdx
movsd  %xmm0,0x0(%rbp,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,%rax
jne    13a0 <warnings+0x240>
mov    0x2c00(%rip),%rax
cmpl   $0x0,(%rax)
mov    $0x1,%r13d
mov    0x18(%rsp),%r9
jle    1506 <warnings+0x3a6>
cmpl   $0x1,0x14(%rsp)
mov    0x20(%rsp),%rbp
jne    1423 <warnings+0x2c3>
mov    %r9,%rdi
lea    0xc36(%rip),%rsi
mov    0x28(%rsp),%edx
xor    %eax,%eax
mov    %r9,%rbx
call   1050 <fprintf@plt>
mov    %rbx,%r9
mov    $0x4b,%esi
mov    $0x1,%edx
lea    0xc28(%rip),%rdi
mov    %r9,%rcx
mov    %r9,%r12
call   1080 <fwrite@plt>
test   %ebp,%ebp
mov    0x78(%rsp),%rbx
lea    0xc5b(%rip),%r13
jle    14eb <warnings+0x38b>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
lea    0x1(%rbp),%r15
mov    %r12,%rdi
mov    %r13,%rsi
mov    %r15d,%edx
xor    %eax,%eax
call   1050 <fprintf@plt>
mov    0x38(%rsp),%rax
movsd  0x8(%rax,%rbp,8),%xmm0
mov    %r12,%rdi
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    0x58(%rsp),%rax
movsd  0x8(%rax,%rbp,8),%xmm0
mov    %r12,%rdi
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    0x30(%rsp),%rax
movsd  0x8(%rax,%rbp,8),%xmm0
mov    %r12,%rdi
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    0x80(%rsp),%rax
mov    0x4(%rax,%rbp,4),%edx
mov    %r12,%rdi
lea    0xbd5(%rip),%rsi
xor    %eax,%eax
call   1050 <fprintf@plt>
mov    %r15,%rbp
cmp    %r15,%rbx
jne    1460 <warnings+0x300>
mov    $0xa,%edi
mov    %r12,%rsi
call   1040 <fputc@plt>
mov    %r12,%r9
mov    0x38(%rsp),%r15
mov    $0x1,%r13d
mov    0x2aa3(%rip),%rax
cmpl   $0x0,(%rax)
movsd  0x8(%rsp),%xmm2
movsd  0x68(%rsp),%xmm5
movsd  0xa0(%rsp),%xmm6
mov    0x88(%rsp),%rsi
xorpd  %xmm1,%xmm1
mov    0x58(%rsp),%r12
mov    0x30(%rsp),%rdi
mov    (%rsp),%r8d
mov    0x4(%rsp),%ebx
jle    17c0 <warnings+0x660>
cmpl   $0x0,0x20(%rsp)
jle    15ca <warnings+0x46a>
mov    0x2a51(%rip),%rax
movsd  (%rax),%xmm0
mov    0x2a6e(%rip),%rax
movsd  (%rax),%xmm1
xor    %r8d,%r8d
mov    $0x1,%eax
xor    %ebx,%ebx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi,%rax,8),%xmm2
ucomisd %xmm5,%xmm2
cmova  %r13d,%ebp
movsd  (%r12,%rax,8),%xmm3
movapd %xmm0,%xmm4
mulsd  %xmm3,%xmm4
ucomisd %xmm4,%xmm2
mov    %ebx,%ecx
cmova  %r13d,%ecx
mulsd  %xmm1,%xmm3
ucomisd %xmm3,%xmm2
mov    %r8d,%edx
cmova  %r13d,%edx
ucomisd %xmm6,%xmm2
cmova  %ecx,%ebx
cmova  %edx,%r8d
add    $0x1,%rax
cmp    %rax,%rsi
jne    1580 <warnings+0x420>
jmp    15d1 <warnings+0x471>
xor    %ebp,%ebp
xor    %ebx,%ebx
xor    %r8d,%r8d
mov    0x28(%rsp),%eax
cmp    0x64(%rsp),%eax
mov    %r8d,(%rsp)
jne    1601 <warnings+0x4a1>
mov    $0x37,%esi
mov    $0x1,%edx
lea    0xac5(%rip),%rdi
mov    %r9,%rcx
call   1080 <fwrite@plt>
mov    0x18(%rsp),%r9
mov    (%rsp),%r8d
mov    %ebx,0x4(%rsp)
test   %ebx,%ebx
je     1633 <warnings+0x4d3>
test   %r8d,%r8d
jne    1633 <warnings+0x4d3>
mov    0x2993(%rip),%rax
movsd  (%rax),%xmm0
mov    %r9,%rdi
lea    0xaca(%rip),%rsi
mov    $0x1,%al
call   1050 <fprintf@plt>
mov    0x18(%rsp),%r9
mov    (%rsp),%r8d
test   %r8d,%r8d
je     165d <warnings+0x4fd>
mov    0x2991(%rip),%rax
movsd  (%rax),%xmm0
mov    %r9,%rdi
lea    0xad8(%rip),%rsi
mov    $0x1,%al
call   1050 <fprintf@plt>
mov    0x18(%rsp),%r9
mov    (%rsp),%r8d
test   %ebp,%ebp
je     168b <warnings+0x52b>
mov    %r9,%rdi
lea    0xaf8(%rip),%rsi
movsd  0x68(%rsp),%xmm0
mov    $0x1,%al
call   1050 <fprintf@plt>
mov    0x18(%rsp),%r9
mov    (%rsp),%r8d
movl   $0x1,0x10(%rsp)
jmp    1693 <warnings+0x533>
movl   $0x0,0x10(%rsp)
movsd  0x8(%rsp),%xmm2
xorpd  %xmm1,%xmm1
mov    0x4(%rsp),%ebx
mov    0x2908(%rip),%rax
cmpl   $0x2,(%rax)
jl     17c0 <warnings+0x660>
or     %ebx,%ebp
or     %r8d,%ebp
je     17c0 <warnings+0x660>
mov    0x2925(%rip),%rax
cmpl   $0x0,(%rax)
jg     17c0 <warnings+0x660>
mov    $0x4b,%esi
mov    $0x1,%edx
lea    0x97f(%rip),%rdi
mov    %r9,%rcx
mov    %r9,%rbx
call   1080 <fwrite@plt>
cmpl   $0x0,0x20(%rsp)
jle    17a4 <warnings+0x644>
xor    %ebp,%ebp
mov    %rbx,%r12
mov    0x30(%rsp),%r15
nopl   (%rax)
lea    0x1(%rbp),%rbx
mov    %r12,%rdi
lea    0x99a(%rip),%rsi
mov    %ebx,%edx
xor    %eax,%eax
call   1050 <fprintf@plt>
mov    0x38(%rsp),%rax
movsd  0x8(%rax,%rbp,8),%xmm0
mov    %r12,%rdi
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    0x58(%rsp),%rax
movsd  0x8(%rax,%rbp,8),%xmm0
mov    %r12,%rdi
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
movsd  0x8(%r15,%rbp,8),%xmm0
mov    %r12,%rdi
mov    $0x1,%esi
mov    $0x1,%al
call   1030 <doubleout_file@plt>
mov    0x80(%rsp),%rax
mov    0x4(%rax,%rbp,4),%edx
mov    %r12,%rdi
lea    0x936(%rip),%rsi
xor    %eax,%eax
call   1050 <fprintf@plt>
mov    %rbx,%rbp
cmp    %rbx,0x78(%rsp)
jne    1700 <warnings+0x5a0>
movsd  0x8(%rsp),%xmm2
xorpd  %xmm1,%xmm1
mov    (%rsp),%r8d
mov    %r12,%r9
mov    0x38(%rsp),%r15
jmp    17b5 <warnings+0x655>
movsd  0x8(%rsp),%xmm2
xorpd  %xmm1,%xmm1
mov    (%rsp),%r8d
mov    %rbx,%r9
mov    0x4(%rsp),%ebx
nopl   0x0(%rax)
mov    0x10(%rsp),%eax
or     %ebx,%eax
or     %r8d,%eax
setne  %cl
mov    0x27dd(%rip),%rax
mov    (%rax),%eax
cmp    $0x3,%eax
setge  %dl
or     %cl,%dl
cmp    $0x1,%dl
mov    %r8d,(%rsp)
mov    %ebx,0x4(%rsp)
mov    %r9,%rbp
jne    19b0 <warnings+0x850>
movsd  0x70(%rsp),%xmm0
mov    0x27ca(%rip),%rcx
ucomisd (%rcx),%xmm0
mov    0x14(%rsp),%r12d
jbe    183e <warnings+0x6de>
mov    %r9,%rdi
lea    0x982(%rip),%rsi
movsd  0x70(%rsp),%xmm0
mov    $0x1,%al
call   1050 <fprintf@plt>
mov    %rbp,%r9
mov    0x4(%rsp),%ebx
mov    (%rsp),%r8d
xorpd  %xmm1,%xmm1
movsd  0x8(%rsp),%xmm2
mov    0x2774(%rip),%rax
mov    (%rax),%eax
cmp    $0x3,%eax
jl     1883 <warnings+0x723>
mov    0x2796(%rip),%rax
mov    (%rax),%edx
test   %edx,%edx
jle    1883 <warnings+0x723>
mov    %r9,%rdi
lea    0x977(%rip),%rsi
xor    %eax,%eax
call   1050 <fprintf@plt>
mov    %rbp,%r9
mov    0x4(%rsp),%ebx
mov    (%rsp),%r8d
xorpd  %xmm1,%xmm1
movsd  0x8(%rsp),%xmm2
mov    0x2763(%rip),%rax
movl   $0x0,(%rax)
cmpl   $0x0,0x20(%rsp)
jle    194e <warnings+0x7ee>
mov    $0x1,%eax
cmpq   $0x3,0xb0(%rsp)
mov    0xb8(%rsp),%rdx
jb     1919 <warnings+0x7b9>
xor    %eax,%eax
mov    0x90(%rsp),%rcx
movsd  0x8(%r15,%rax,8),%xmm0
ucomisd %xmm2,%xmm0
cmova  %r13d,%r14d
ucomisd %xmm0,%xmm1
cmova  %r13d,%r14d
movsd  0x10(%r15,%rax,8),%xmm0
ucomisd %xmm2,%xmm0
cmova  %r13d,%r14d
ucomisd %xmm0,%xmm1
cmova  %r13d,%r14d
movsd  0x18(%r15,%rax,8),%xmm0
ucomisd %xmm2,%xmm0
cmova  %r13d,%r14d
ucomisd %xmm0,%xmm1
cmova  %r13d,%r14d
movsd  0x20(%r15,%rax,8),%xmm0
ucomisd %xmm2,%xmm0
cmova  %r13d,%r14d
ucomisd %xmm0,%xmm1
cmova  %r13d,%r14d
add    $0x4,%rax
cmp    %rax,%rcx
jne    18b0 <warnings+0x750>
add    $0x1,%rax
test   %rdx,%rdx
je     194e <warnings+0x7ee>
lea    (%r15,%rax,8),%rax
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm2,%xmm0
cmova  %r13d,%r14d
ucomisd %xmm0,%xmm1
cmova  %r13d,%r14d
add    $0x1,%rcx
cmp    %rcx,%rdx
jne    1930 <warnings+0x7d0>
test   %r14d,%r14d
je     1290 <warnings+0x130>
mov    $0x44,%esi
mov    $0x1,%edx
lea    0x8a6(%rip),%rdi
mov    %r9,%rcx
call   1080 <fwrite@plt>
mov    $0x38,%esi
mov    $0x1,%edx
lea    0x8d2(%rip),%rdi
mov    %rbp,%rcx
call   1080 <fwrite@plt>
mov    %rbp,%r9
mov    0x4(%rsp),%ebx
mov    (%rsp),%r8d
xorpd  %xmm1,%xmm1
movsd  0x8(%rsp),%xmm2
cmp    $0x2,%r12d
jne    1290 <warnings+0x130>
jmp    19d5 <warnings+0x875>
nopw   0x0(%rax,%rax,1)
mov    0x14(%rsp),%r12d
cmp    $0x3,%eax
jge    1843 <warnings+0x6e3>
jmp    1883 <warnings+0x723>
add    $0xc8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %edi,%edi
mov    $0x1,%esi
xor    %eax,%eax
add    $0xc8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1060 <bail@plt>

LLVM IR (-O0):
%struct.vtx_data = type { i32 }
@stdout = global i32* null
@DEBUG_EVECS = external global i32
@WARNING_EVECS = external global i32
@LANCZOS_CONVERGENCE_MODE = external global i32
@.str = [64 x i8] c"Note about warnings: in partition convergence monitoring mode.\0A\00"
@.str.1 = [20 x i8] c"Lanczos itns. = %d\0A\00"
@.str.2 = [76 x i8] c" lambda Ares est. Ares index\0A\00"
@.str.3 = [5 x i8] c"%2d.\00"
@.str.4 = [8 x i8] c" %3d\0A\00"
@.str.5 = [2 x i8] c"\0A\00"
@WARNING_ORTHTOL = external global double
@WARNING_MISTOL = external global double
@.str.6 = [56 x i8] c"WARNING: Maximum number of Lanczos iterations reached.\0A\00"
@.str.7 = [56 x i8] c"WARNING: Minor loss of orthogonality (Ares/est. > %g).\0A\00"
@.str.8 = [62 x i8] c"WARNING: Substantial loss of orthogonality (Ares/est. > %g).\0A\00"
@.str.9 = [50 x i8] c"WARNING: Eigen pair tolerance (%g) not achieved.\0A\00"
@SRESTOL = external global double
@.str.10 = [60 x i8] c"WARNING: Maximum eigen residual of T (%g) exceeds SRESTOL.\0A\00"
@SRES_SWITCHES = external global i32
@.str.11 = [61 x i8] c"WARNING: Switched routine for computing evec of T %d times.\0A\00"
@.str.12 = [69 x i8] c"ERROR: Sorry, out-of-bounds eigenvalue indicates serious breakdown.\0A\00"
@.str.13 = [57 x i8] c" Try different parameters or another eigensolver.\0A\00"
define void @warnings(double* %0, %struct.vtx_data** %1, double** %2, i32 %3, double* %4, double* %5, double* %6, double* %7, i32* %8, i32 %9, i32 %10, i32 %11, double %12, double %13, double* %14, double %15, i32* %16) {
%18 = alloca double*
%19 = alloca %struct.vtx_data**
%20 = alloca double**
%21 = alloca i32
%22 = alloca double*
%23 = alloca double*
%24 = alloca double*
%25 = alloca double*
%26 = alloca i32*
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca double
%31 = alloca double
%32 = alloca double*
%33 = alloca double
%34 = alloca i32*
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32*
store double* %0, double** %18
store %struct.vtx_data** %1, %struct.vtx_data*** %19
store double** %2, double*** %20
store i32 %3, i32* %21
store double* %4, double** %22
store double* %5, double** %23
store double* %6, double** %24
store double* %7, double** %25
store i32* %8, i32** %26
store i32 %9, i32* %27
store i32 %10, i32* %28
store i32 %11, i32* %29
store double %12, double* %30
store double %13, double* %31
store double* %14, double** %32
store double %15, double* %33
store i32* %16, i32** %34
store i32 0, i32* %35
store i32 0, i32* %36
store i32 0, i32* %37
store i32* null, i32** %41
store i32 0, i32* %39
store i32 1, i32* %40
br label %42
42: ; preds = %389, %17
%43 = load i32, i32* %40
%44 = icmp sle i32 %43, 2
br i1 %44, label %45, label %392
45: ; preds = %42
%46 = load i32, i32* %40
%47 = icmp eq i32 %46, 1
br i1 %47, label %48, label %50
48: ; preds = %45
%49 = load i32*, i32** @stdout
store i32* %49, i32** %41
br label %50
50: ; preds = %48, %45
%51 = load i32, i32* %40
%52 = icmp eq i32 %51, 2
br i1 %52, label %53, label %65
53: ; preds = %50
%54 = load i32*, i32** %34
%55 = icmp ne i32* %54, null
br i1 %55, label %56, label %58
56: ; preds = %53
%57 = load i32*, i32** %34
store i32* %57, i32** %41
br label %64
58: ; preds = %53
%59 = load i32, i32* %39
%60 = icmp ne i32 %59, 0
br i1 %60, label %61, label %62
61: ; preds = %58
br label %63
62: ; preds = %58
br label %392
63: ; preds = %61
br label %64
64: ; preds = %63, %56
br label %65
65: ; preds = %64, %50
%66 = load i32, i32* @DEBUG_EVECS
%67 = icmp sgt i32 %66, 0
br i1 %67, label %71, label %68
68: ; preds = %65
%69 = load i32, i32* @WARNING_EVECS
%70 = icmp sgt i32 %69, 0
br i1 %70, label %71, label %107
71: ; preds = %68, %65
%72 = load i32, i32* @LANCZOS_CONVERGENCE_MODE
%73 = icmp eq i32 %72, 1
br i1 %73, label %74, label %77
74: ; preds = %71
%75 = load i32*, i32** %41
%76 = call i32 (i32*, i8*, ...) @fprintf(i32* %75, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str, i64 0, i64 0))
br label %77
77: ; preds = %74, %71
store i32 1, i32* %38
br label %78
78: ; preds = %103, %77
%79 = load i32, i32* %38
%80 = load i32, i32* %27
%81 = icmp sle i32 %79, %80
br i1 %81, label %82, label %106
82: ; preds = %78
%83 = load double*, double** %18
%84 = load %struct.vtx_data**, %struct.vtx_data*** %19
%85 = load double**, double*** %20
%86 = load i32, i32* %38
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds double*, double** %85, i64 %87
%89 = load double*, double** %88
%90 = load i32, i32* %21
%91 = load double*, double** %22
%92 = load i32, i32* %38
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %91, i64 %93
%95 = load double, double* %94
%96 = load double*, double** %23
%97 = load double*, double** %32
%98 = call double (double*, %struct.vtx_data**, double*, i32, double, double*, double*, ...) bitcast (double (...)* @checkeig to double (double*, %struct.vtx_data**, double*, i32, double, double*, double*, ...)*)(double* %83, %struct.vtx_data** %84, double* %89, i32 %90, double %95, double* %96, double* %97)
%99 = load double*, double** %24
%100 = load i32, i32* %38
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds double, double* %99, i64 %101
store double %98, double* %102
br label %103
103: ; preds = %82
%104 = load i32, i32* %38
%105 = add nsw i32 %104, 1
store i32 %105, i32* %38
br label %78
106: ; preds = %78
br label %107
107: ; preds = %106, %68
%108 = load i32, i32* @DEBUG_EVECS
%109 = icmp sgt i32 %108, 0
br i1 %109, label %110, label %159
110: ; preds = %107
%111 = load i32, i32* %40
%112 = icmp eq i32 %111, 1
br i1 %112, label %113, label %117
113: ; preds = %110
%114 = load i32*, i32** %41
%115 = load i32, i32* %28
%116 = call i32 (i32*, i8*, ...) @fprintf(i32* %114, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.1, i64 0, i64 0), i32 %115)
br label %117
117: ; preds = %113, %110
%118 = load i32*, i32** %41
%119 = call i32 (i32*, i8*, ...) @fprintf(i32* %118, i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.2, i64 0, i64 0))
store i32 1, i32* %38
br label %120
120: ; preds = %153, %117
%121 = load i32, i32* %38
%122 = load i32, i32* %27
%123 = icmp sle i32 %121, %122
br i1 %123, label %124, label %156
124: ; preds = %120
%125 = load i32*, i32** %41
%126 = load i32, i32* %38
%127 = call i32 (i32*, i8*, ...) @fprintf(i32* %125, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %126)
%128 = load i32*, i32** %41
%129 = load double*, double** %22
%130 = load i32, i32* %38
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds double, double* %129, i64 %131
%133 = load double, double* %132
%134 = load i32*, i32** %41
%135 = load double*, double** %25
%136 = load i32, i32* %38
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds double, double* %135, i64 %137
%139 = load double, double* %138
%140 = load i32*, i32** %41
%141 = load double*, double** %24
%142 = load i32, i32* %38
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
%145 = load double, double* %144
%146 = load i32*, i32** %41
%147 = load i32*, i32** %26
%148 = load i32, i32* %38
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds i32, i32* %147, i64 %149
%151 = load i32, i32* %150
%152 = call i32 (i32*, i8*, ...) @fprintf(i32* %146, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %151)
br label %153
153: ; preds = %124
%154 = load i32, i32* %38
%155 = add nsw i32 %154, 1
store i32 %155, i32* %38
br label %120
156: ; preds = %120
%157 = load i32*, i32** %41
%158 = call i32 (i32*, i8*, ...) @fprintf(i32* %157, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %159
159: ; preds = %156, %107
%160 = load i32, i32* @WARNING_EVECS
%161 = icmp sgt i32 %160, 0
br i1 %161, label %162, label %260
162: ; preds = %159
store i32 0, i32* %35
store i32 0, i32* %36
store i32 0, i32* %37
store i32 1, i32* %38
br label %163
163: ; preds = %225, %162
%164 = load i32, i32* %38
%165 = load i32, i32* %27
%166 = icmp sle i32 %164, %165
br i1 %166, label %167, label %228
167: ; preds = %163
%168 = load double*, double** %24
%169 = load i32, i32* %38
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds double, double* %168, i64 %170
%172 = load double, double* %171
%173 = load double, double* %31
%174 = fcmp ogt double %172, %173
br i1 %174, label %175, label %176
175: ; preds = %167
store i32 1, i32* %35
br label %176
176: ; preds = %175, %167
%177 = load double*, double** %24
%178 = load i32, i32* %38
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds double, double* %177, i64 %179
%181 = load double, double* %180
%182 = load double, double* @WARNING_ORTHTOL
%183 = load double*, double** %25
%184 = load i32, i32* %38
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds double, double* %183, i64 %185
%187 = load double, double* %186
%188 = fmul double %182, %187
%189 = fcmp ogt double %181, %188
br i1 %189, label %190, label %200
190: ; preds = %176
%191 = load double*, double** %24
%192 = load i32, i32* %38
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds double, double* %191, i64 %193
%195 = load double, double* %194
%196 = load double, double* %31
%197 = fmul double 1.000000e-02, %196
%198 = fcmp ogt double %195, %197
br i1 %198, label %199, label %200
199: ; preds = %190
store i32 1, i32* %36
br label %200
200: ; preds = %199, %190, %176
%201 = load double*, double** %24
%202 = load i32, i32* %38
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds double, double* %201, i64 %203
%205 = load double, double* %204
%206 = load double, double* @WARNING_MISTOL
%207 = load double*, double** %25
%208 = load i32, i32* %38
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds double, double* %207, i64 %209
%211 = load double, double* %210
%212 = fmul double %206, %211
%213 = fcmp ogt double %205, %212
br i1 %213, label %214, label %224
214: ; preds = %200
%215 = load double*, double** %24
%216 = load i32, i32* %38
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds double, double* %215, i64 %217
%219 = load double, double* %218
%220 = load double, double* %31
%221 = fmul double 1.000000e-02, %220
%222 = fcmp ogt double %219, %221
br i1 %222, label %223, label %224
223: ; preds = %214
store i32 1, i32* %37
br label %224
224: ; preds = %223, %214, %200
br label %225
225: ; preds = %224
%226 = load i32, i32* %38
%227 = add nsw i32 %226, 1
store i32 %227, i32* %38
br label %163
228: ; preds = %163
%229 = load i32, i32* %28
%230 = load i32, i32* %29
%231 = icmp eq i32 %229, %230
br i1 %231, label %232, label %235
232: ; preds = %228
%233 = load i32*, i32** %41
%234 = call i32 (i32*, i8*, ...) @fprintf(i32* %233, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.6, i64 0, i64 0))
br label %235
235: ; preds = %232, %228
%236 = load i32, i32* %36
%237 = icmp ne i32 %236, 0
br i1 %237, label %238, label %245
238: ; preds = %235
%239 = load i32, i32* %37
%240 = icmp ne i32 %239, 0
br i1 %240, label %245, label %241
241: ; preds = %238
%242 = load i32*, i32** %41
%243 = load double, double* @WARNING_ORTHTOL
%244 = call i32 (i32*, i8*, ...) @fprintf(i32* %242, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.7, i64 0, i64 0), double %243)
br label %245
245: ; preds = %241, %238, %235
%246 = load i32, i32* %37
%247 = icmp ne i32 %246, 0
br i1 %247, label %248, label %252
248: ; preds = %245
%249 = load i32*, i32** %41
%250 = load double, double* @WARNING_MISTOL
%251 = call i32 (i32*, i8*, ...) @fprintf(i32* %249, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.8, i64 0, i64 0), double %250)
br label %252
252: ; preds = %248, %245
%253 = load i32, i32* %35
%254 = icmp ne i32 %253, 0
br i1 %254, label %255, label %259
255: ; preds = %252
%256 = load i32*, i32** %41
%257 = load double, double* %31
%258 = call i32 (i32*, i8*, ...) @fprintf(i32* %256, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.9, i64 0, i64 0), double %257)
br label %259
259: ; preds = %255, %252
br label %260
260: ; preds = %259, %159
%261 = load i32, i32* @WARNING_EVECS
%262 = icmp sgt i32 %261, 1
br i1 %262, label %263, label %317
263: ; preds = %260
%264 = load i32, i32* %35
%265 = icmp ne i32 %264, 0
br i1 %265, label %272, label %266
266: ; preds = %263
%267 = load i32, i32* %36
%268 = icmp ne i32 %267, 0
br i1 %268, label %272, label %269
269: ; preds = %266
%270 = load i32, i32* %37
%271 = icmp ne i32 %270, 0
br i1 %271, label %272, label %316
272: ; preds = %269, %266, %263
%273 = load i32, i32* @DEBUG_EVECS
%274 = icmp sle i32 %273, 0
br i1 %274, label %275, label %315
275: ; preds = %272
%276 = load i32*, i32** %41
%277 = call i32 (i32*, i8*, ...) @fprintf(i32* %276, i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.2, i64 0, i64 0))
store i32 1, i32* %38
br label %278
278: ; preds = %311, %275
%279 = load i32, i32* %38
%280 = load i32, i32* %27
%281 = icmp sle i32 %279, %280
br i1 %281, label %282, label %314
282: ; preds = %278
%283 = load i32*, i32** %41
%284 = load i32, i32* %38
%285 = call i32 (i32*, i8*, ...) @fprintf(i32* %283, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %284)
%286 = load i32*, i32** %41
%287 = load double*, double** %22
%288 = load i32, i32* %38
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds double, double* %287, i64 %289
%291 = load double, double* %290
%292 = load i32*, i32** %41
%293 = load double*, double** %25
%294 = load i32, i32* %38
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds double, double* %293, i64 %295
%297 = load double, double* %296
%298 = load i32*, i32** %41
%299 = load double*, double** %24
%300 = load i32, i32* %38
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds double, double* %299, i64 %301
%303 = load double, double* %302
%304 = load i32*, i32** %41
%305 = load i32*, i32** %26
%306 = load i32, i32* %38
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds i32, i32* %305, i64 %307
%309 = load i32, i32* %308
%310 = call i32 (i32*, i8*, ...) @fprintf(i32* %304, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %309)
br label %311
311: ; preds = %282
%312 = load i32, i32* %38
%313 = add nsw i32 %312, 1
store i32 %313, i32* %38
br label %278
314: ; preds = %278
br label %315
315: ; preds = %314, %272
br label %316
316: ; preds = %315, %269
br label %317
317: ; preds = %316, %260
%318 = load i32, i32* %35
%319 = icmp ne i32 %318, 0
br i1 %319, label %329, label %320
320: ; preds = %317
%321 = load i32, i32* %36
%322 = icmp ne i32 %321, 0
br i1 %322, label %329, label %323
323: ; preds = %320
%324 = load i32, i32* %37
%325 = icmp ne i32 %324, 0
br i1 %325, label %329, label %326
326: ; preds = %323
%327 = load i32, i32* @WARNING_EVECS
%328 = icmp sgt i32 %327, 2
br i1 %328, label %329, label %338
329: ; preds = %326, %323, %320, %317
%330 = load double, double* %30
%331 = load double, double* @SRESTOL
%332 = fcmp ogt double %330, %331
br i1 %332, label %333, label %337
333: ; preds = %329
%334 = load i32*, i32** %41
%335 = load double, double* %30
%336 = call i32 (i32*, i8*, ...) @fprintf(i32* %334, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.10, i64 0, i64 0), double %335)
br label %337
337: ; preds = %333, %329
br label %338
338: ; preds = %337, %326
%339 = load i32, i32* @WARNING_EVECS
%340 = icmp sgt i32 %339, 2
br i1 %340, label %341, label %349
341: ; preds = %338
%342 = load i32, i32* @SRES_SWITCHES
%343 = icmp sgt i32 %342, 0
br i1 %343, label %344, label %348
344: ; preds = %341
%345 = load i32*, i32** %41
%346 = load i32, i32* @SRES_SWITCHES
%347 = call i32 (i32*, i8*, ...) @fprintf(i32* %345, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.11, i64 0, i64 0), i32 %346)
store i32 0, i32* @SRES_SWITCHES
br label %348
348: ; preds = %344, %341
br label %349
349: ; preds = %348, %338
store i32 1, i32* %38
br label %350
350: ; preds = %373, %349
%351 = load i32, i32* %38
%352 = load i32, i32* %27
%353 = icmp sle i32 %351, %352
br i1 %353, label %354, label %376
354: ; preds = %350
%355 = load double*, double** %22
%356 = load i32, i32* %38
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds double, double* %355, i64 %357
%359 = load double, double* %358
%360 = fcmp olt double %359, 0.000000e+00
br i1 %360, label %371, label %361
361: ; preds = %354
%362 = load double*, double** %22
%363 = load i32, i32* %38
%364 = sext i32 %363 to i64
%365 = getelementptr inbounds double, double* %362, i64 %364
%366 = load double, double* %365
%367 = load double, double* %33
%368 = load double, double* %31
%369 = fadd double %367, %368
%370 = fcmp ogt double %366, %369
br i1 %370, label %371, label %372
371: ; preds = %361, %354
store i32 1, i32* %39
br label %372
372: ; preds = %371, %361
br label %373
373: ; preds = %372
%374 = load i32, i32* %38
%375 = add nsw i32 %374, 1
store i32 %375, i32* %38
br label %350
376: ; preds = %350
%377 = load i32, i32* %39
%378 = icmp ne i32 %377, 0
br i1 %378, label %379, label %388
379: ; preds = %376
%380 = load i32*, i32** %41
%381 = call i32 (i32*, i8*, ...) @fprintf(i32* %380, i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.12, i64 0, i64 0))
%382 = load i32*, i32** %41
%383 = call i32 (i32*, i8*, ...) @fprintf(i32* %382, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.13, i64 0, i64 0))
%384 = load i32, i32* %40
%385 = icmp eq i32 %384, 2
br i1 %385, label %386, label %387
386: ; preds = %379
br label %387
387: ; preds = %386, %379
br label %388
388: ; preds = %387, %376
br label %389
389: ; preds = %388
%390 = load i32, i32* %40
%391 = add nsw i32 %390, 1
store i32 %391, i32* %40
br label %42
392: ; preds = %62, %42
ret void
}

LLVM IR (-O2):
%struct.vtx_data = type { i32 }
@stdout = global i32* null
@DEBUG_EVECS = external global i32
@WARNING_EVECS = external global i32
@LANCZOS_CONVERGENCE_MODE = external global i32
@.str = [64 x i8] c"Note about warnings: in partition convergence monitoring mode.\0A\00"
@.str.1 = [20 x i8] c"Lanczos itns. = %d\0A\00"
@.str.2 = [76 x i8] c" lambda Ares est. Ares index\0A\00"
@.str.3 = [5 x i8] c"%2d.\00"
@.str.4 = [8 x i8] c" %3d\0A\00"
@WARNING_ORTHTOL = external global double
@WARNING_MISTOL = external global double
@.str.6 = [56 x i8] c"WARNING: Maximum number of Lanczos iterations reached.\0A\00"
@.str.7 = [56 x i8] c"WARNING: Minor loss of orthogonality (Ares/est. > %g).\0A\00"
@.str.8 = [62 x i8] c"WARNING: Substantial loss of orthogonality (Ares/est. > %g).\0A\00"
@.str.9 = [50 x i8] c"WARNING: Eigen pair tolerance (%g) not achieved.\0A\00"
@SRESTOL = external global double
@.str.10 = [60 x i8] c"WARNING: Maximum eigen residual of T (%g) exceeds SRESTOL.\0A\00"
@SRES_SWITCHES = external global i32
@.str.11 = [61 x i8] c"WARNING: Switched routine for computing evec of T %d times.\0A\00"
@.str.12 = [69 x i8] c"ERROR: Sorry, out-of-bounds eigenvalue indicates serious breakdown.\0A\00"
@.str.13 = [57 x i8] c" Try different parameters or another eigensolver.\0A\00"
define void @warnings(double* %0, %struct.vtx_data** %1, double** nocapture %2, i32 %3, double* nocapture %4, double* %5, double* nocapture %6, double* nocapture %7, i32* nocapture %8, i32 %9, i32 %10, i32 %11, double %12, double %13, double* %14, double %15, i32* %16) {
%18 = icmp eq i32* %16, null
%19 = icmp slt i32 %9, 1
%20 = fmul double %13, 1.000000e-02
%21 = icmp eq i32 %10, %11
%22 = fadd double %13, %15
%23 = add i32 %9, 1
%24 = zext i32 %23 to i64
%25 = zext i32 %23 to i64
%26 = zext i32 %23 to i64
%27 = zext i32 %23 to i64
%28 = add nsw i64 %24, -1
%29 = add nsw i64 %24, -2
%30 = and i64 %28, 3
%31 = icmp ult i64 %29, 3
%32 = and i64 %28, -4
%33 = icmp eq i64 %30, 0
br label %34
34: ; preds = %17, %263
%35 = phi i32* [ null, %17 ], [ %51, %263 ]
%36 = phi i32 [ 1, %17 ], [ %264, %263 ]
%37 = phi i32 [ 0, %17 ], [ %257, %263 ]
%38 = phi i32 [ 0, %17 ], [ %178, %263 ]
%39 = phi i32 [ 0, %17 ], [ %179, %263 ]
%40 = phi i32 [ 0, %17 ], [ %180, %263 ]
%41 = icmp eq i32 %36, 1
%42 = load i32*, i32** @stdout
%43 = select i1 %41, i32* %42, i32* %35
%44 = icmp eq i32 %36, 2
%45 = and i1 %44, %18
%46 = select i1 %44, i32* %16, i32* %43
br i1 %45, label %47, label %50
47: ; preds = %34
%48 = icmp eq i32 %37, 0
br i1 %48, label %266, label %49
49: ; preds = %47
tail call void (i8*, i32, ...) bitcast (void (...)* @bail to void (i8*, i32, ...)*)(i8* null, i32 1)
br label %50
50: ; preds = %34, %49
%51 = phi i32* [ %43, %49 ], [ %46, %34 ]
%52 = load i32, i32* @DEBUG_EVECS
%53 = icmp sgt i32 %52, 0
%54 = load i32, i32* @WARNING_EVECS
%55 = icmp sgt i32 %54, 0
%56 = select i1 %53, i1 true, i1 %55
br i1 %56, label %57, label %177
57: ; preds = %50
%58 = load i32, i32* @LANCZOS_CONVERGENCE_MODE
%59 = icmp eq i32 %58, 1
br i1 %59, label %60, label %62
60: ; preds = %57
%61 = tail call i64 @fwrite(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str, i64 0, i64 0), i64 63, i64 1, i32* %51)
br label %62
62: ; preds = %60, %57
br i1 %19, label %73, label %63
63: ; preds = %62, %63
%64 = phi i64 [ %71, %63 ], [ 1, %62 ]
%65 = getelementptr inbounds double*, double** %2, i64 %64
%66 = load double*, double** %65
%67 = getelementptr inbounds double, double* %4, i64 %64
%68 = load double, double* %67
%69 = tail call double (double*, %struct.vtx_data**, double*, i32, double, double*, double*, ...) bitcast (double (...)* @checkeig to double (double*, %struct.vtx_data**, double*, i32, double, double*, double*, ...)*)(double* %0, %struct.vtx_data** %1, double* %66, i32 %3, double %68, double* %5, double* %14)
%70 = getelementptr inbounds double, double* %6, i64 %64
store double %69, double* %70
%71 = add nuw nsw i64 %64, 1
%72 = icmp eq i64 %71, %24
br i1 %72, label %73, label %63
73: ; preds = %63, %62
%74 = load i32, i32* @DEBUG_EVECS
%75 = icmp sgt i32 %74, 0
br i1 %75, label %76, label %98
76: ; preds = %73
br i1 %41, label %77, label %79
77: ; preds = %76
%78 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.1, i64 0, i64 0), i32 %10)
br label %79
79: ; preds = %77, %76
%80 = tail call i64 @fwrite(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.2, i64 0, i64 0), i64 75, i64 1, i32* %51)
br i1 %19, label %96, label %81
81: ; preds = %79, %81
%82 = phi i64 [ %94, %81 ], [ 1, %79 ]
%83 = trunc i64 %82 to i32
%84 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %83)
%85 = getelementptr inbounds double, double* %4, i64 %82
%86 = load double, double* %85
tail call void (i32*, double, i32, ...) bitcast (void (...)* @doubleout_file to void (i32*, double, i32, ...)*)(i32* %51, double %86, i32 1)
%87 = getelementptr inbounds double, double* %7, i64 %82
%88 = load double, double* %87
tail call void (i32*, double, i32, ...) bitcast (void (...)* @doubleout_file to void (i32*, double, i32, ...)*)(i32* %51, double %88, i32 1)
%89 = getelementptr inbounds double, double* %6, i64 %82
%90 = load double, double* %89
tail call void (i32*, double, i32, ...) bitcast (void (...)* @doubleout_file to void (i32*, double, i32, ...)*)(i32* %51, double %90, i32 1)
%91 = getelementptr inbounds i32, i32* %8, i64 %82
%92 = load i32, i32* %91
%93 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %92)
%94 = add nuw nsw i64 %82, 1
%95 = icmp eq i64 %94, %25
br i1 %95, label %96, label %81
96: ; preds = %81, %79
%97 = tail call i32 @fputc(i32 10, i32* %51)
br label %98
98: ; preds = %96, %73
%99 = load i32, i32* @WARNING_EVECS
%100 = icmp sgt i32 %99, 0
br i1 %100, label %101, label %177
101: ; preds = %98
br i1 %19, label %127, label %102
102: ; preds = %101
%103 = load double, double* @WARNING_ORTHTOL
%104 = load double, double* @WARNING_MISTOL
br label %105
105: ; preds = %102, %105
%106 = phi i64 [ 1, %102 ], [ %125, %105 ]
%107 = phi i32 [ 0, %102 ], [ %124, %105 ]
%108 = phi i32 [ 0, %102 ], [ %120, %105 ]
%109 = phi i32 [ 0, %102 ], [ %113, %105 ]
%110 = getelementptr inbounds double, double* %6, i64 %106
%111 = load double, double* %110
%112 = fcmp ogt double %111, %13
%113 = select i1 %112, i32 1, i32 %109
%114 = getelementptr inbounds double, double* %7, i64 %106
%115 = load double, double* %114
%116 = fmul double %103, %115
%117 = fcmp ogt double %111, %116
%118 = fcmp ogt double %111, %20
%119 = and i1 %118, %117
%120 = select i1 %119, i32 1, i32 %108
%121 = fmul double %115, %104
%122 = fcmp ogt double %111, %121
%123 = and i1 %118, %122
%124 = select i1 %123, i32 1, i32 %107
%125 = add nuw nsw i64 %106, 1
%126 = icmp eq i64 %125, %26
br i1 %126, label %127, label %105
127: ; preds = %105, %101
%128 = phi i32 [ 0, %101 ], [ %113, %105 ]
%129 = phi i32 [ 0, %101 ], [ %120, %105 ]
%130 = phi i32 [ 0, %101 ], [ %124, %105 ]
br i1 %21, label %131, label %133
131: ; preds = %127
%132 = tail call i64 @fwrite(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.6, i64 0, i64 0), i64 55, i64 1, i32* %51)
br label %133
133: ; preds = %131, %127
%134 = icmp eq i32 %129, 0
%135 = icmp ne i32 %130, 0
%136 = select i1 %134, i1 true, i1 %135
br i1 %136, label %140, label %137
137: ; preds = %133
%138 = load double, double* @WARNING_ORTHTOL
%139 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.7, i64 0, i64 0), double %138)
br label %140
140: ; preds = %137, %133
br i1 %135, label %141, label %144
141: ; preds = %140
%142 = load double, double* @WARNING_MISTOL
%143 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.8, i64 0, i64 0), double %142)
br label %144
144: ; preds = %141, %140
%145 = icmp eq i32 %128, 0
br i1 %145, label %148, label %146
146: ; preds = %144
%147 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.9, i64 0, i64 0), double %13)
br label %148
148: ; preds = %144, %146
%149 = phi i32 [ 0, %144 ], [ 1, %146 ]
%150 = load i32, i32* @WARNING_EVECS
%151 = icmp sgt i32 %150, 1
br i1 %151, label %152, label %177
152: ; preds = %148
%153 = xor i1 %145, true
%154 = icmp ne i32 %129, 0
%155 = select i1 %153, i1 true, i1 %154
%156 = select i1 %155, i1 true, i1 %135
%157 = load i32, i32* @DEBUG_EVECS
%158 = icmp slt i32 %157, 1
%159 = select i1 %156, i1 %158, i1 false
br i1 %159, label %160, label %177
160: ; preds = %152
%161 = tail call i64 @fwrite(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.2, i64 0, i64 0), i64 75, i64 1, i32* %51)
br i1 %19, label %177, label %162
162: ; preds = %160, %162
%163 = phi i64 [ %175, %162 ], [ 1, %160 ]
%164 = trunc i64 %163 to i32
%165 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 %164)
%166 = getelementptr inbounds double, double* %4, i64 %163
%167 = load double, double* %166
tail call void (i32*, double, i32, ...) bitcast (void (...)* @doubleout_file to void (i32*, double, i32, ...)*)(i32* %51, double %167, i32 1)
%168 = getelementptr inbounds double, double* %7, i64 %163
%169 = load double, double* %168
tail call void (i32*, double, i32, ...) bitcast (void (...)* @doubleout_file to void (i32*, double, i32, ...)*)(i32* %51, double %169, i32 1)
%170 = getelementptr inbounds double, double* %6, i64 %163
%171 = load double, double* %170
tail call void (i32*, double, i32, ...) bitcast (void (...)* @doubleout_file to void (i32*, double, i32, ...)*)(i32* %51, double %171, i32 1)
%172 = getelementptr inbounds i32, i32* %8, i64 %163
%173 = load i32, i32* %172
%174 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 %173)
%175 = add nuw nsw i64 %163, 1
%176 = icmp eq i64 %175, %27
br i1 %176, label %177, label %162
177: ; preds = %162, %160, %50, %98, %152, %148
%178 = phi i32 [ %130, %152 ], [ %130, %148 ], [ %38, %98 ], [ %38, %50 ], [ %130, %160 ], [ %130, %162 ]
%179 = phi i32 [ %129, %152 ], [ %129, %148 ], [ %39, %98 ], [ %39, %50 ], [ %129, %160 ], [ %129, %162 ]
%180 = phi i32 [ %149, %152 ], [ %149, %148 ], [ %40, %98 ], [ %40, %50 ], [ %149, %160 ], [ %149, %162 ]
%181 = icmp ne i32 %180, 0
%182 = icmp ne i32 %179, 0
%183 = select i1 %181, i1 true, i1 %182
%184 = icmp ne i32 %178, 0
%185 = select i1 %183, i1 true, i1 %184
%186 = load i32, i32* @WARNING_EVECS
%187 = icmp sgt i32 %186, 2
%188 = select i1 %185, i1 true, i1 %187
%189 = load double, double* @SRESTOL
%190 = fcmp olt double %189, %12
%191 = select i1 %188, i1 %190, i1 false
br i1 %191, label %192, label %195
192: ; preds = %177
%193 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.10, i64 0, i64 0), double %12)
%194 = load i32, i32* @WARNING_EVECS
br label %195
195: ; preds = %192, %177
%196 = phi i32 [ %194, %192 ], [ %186, %177 ]
%197 = icmp sgt i32 %196, 2
%198 = load i32, i32* @SRES_SWITCHES
%199 = icmp sgt i32 %198, 0
%200 = select i1 %197, i1 %199, i1 false
br i1 %200, label %201, label %203
201: ; preds = %195
%202 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %51, i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.11, i64 0, i64 0), i32 %198)
store i32 0, i32* @SRES_SWITCHES
br label %203
203: ; preds = %201, %195
br i1 %19, label %256, label %204
204: ; preds = %203
br i1 %31, label %239, label %205
205: ; preds = %204, %205
%206 = phi i64 [ %236, %205 ], [ 1, %204 ]
%207 = phi i32 [ %235, %205 ], [ %37, %204 ]
%208 = phi i64 [ %237, %205 ], [ 0, %204 ]
%209 = getelementptr inbounds double, double* %4, i64 %206
%210 = load double, double* %209
%211 = fcmp olt double %210, 0.000000e+00
%212 = fcmp ogt double %210, %22
%213 = or i1 %211, %212
%214 = add nuw nsw i64 %206, 1
%215 = getelementptr inbounds double, double* %4, i64 %214
%216 = load double, double* %215
%217 = fcmp olt double %216, 0.000000e+00
%218 = fcmp ogt double %216, %22
%219 = or i1 %217, %218
%220 = add nuw nsw i64 %206, 2
%221 = getelementptr inbounds double, double* %4, i64 %220
%222 = load double, double* %221
%223 = fcmp olt double %222, 0.000000e+00
%224 = fcmp ogt double %222, %22
%225 = or i1 %223, %224
%226 = add nuw nsw i64 %206, 3
%227 = getelementptr inbounds double, double* %4, i64 %226
%228 = load double, double* %227
%229 = fcmp olt double %228, 0.000000e+00
%230 = fcmp ogt double %228, %22
%231 = or i1 %229, %230
%232 = select i1 %231, i1 true, i1 %225
%233 = select i1 %232, i1 true, i1 %219
%234 = select i1 %233, i1 true, i1 %213
%235 = select i1 %234, i32 1, i32 %207
%236 = add nuw nsw i64 %206, 4
%237 = add i64 %208, 4
%238 = icmp eq i64 %237, %32
br i1 %238, label %239, label %205
239: ; preds = %205, %204
%240 = phi i32 [ undef, %204 ], [ %235, %205 ]
%241 = phi i64 [ 1, %204 ], [ %236, %205 ]
%242 = phi i32 [ %37, %204 ], [ %235, %205 ]
br i1 %33, label %256, label %243
243: ; preds = %239, %243
%244 = phi i64 [ %253, %243 ], [ %241, %239 ]
%245 = phi i32 [ %252, %243 ], [ %242, %239 ]
%246 = phi i64 [ %254, %243 ], [ 0, %239 ]
%247 = getelementptr inbounds double, double* %4, i64 %244
%248 = load double, double* %247
%249 = fcmp olt double %248, 0.000000e+00
%250 = fcmp ogt double %248, %22
%251 = or i1 %249, %250
%252 = select i1 %251, i32 1, i32 %245
%253 = add nuw nsw i64 %244, 1
%254 = add i64 %246, 1
%255 = icmp eq i64 %254, %30
br i1 %255, label %256, label %243
256: ; preds = %239, %243, %203
%257 = phi i32 [ %37, %203 ], [ %240, %239 ], [ %252, %243 ]
%258 = icmp eq i32 %257, 0
br i1 %258, label %263, label %259
259: ; preds = %256
%260 = tail call i64 @fwrite(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.12, i64 0, i64 0), i64 68, i64 1, i32* %51)
%261 = tail call i64 @fwrite(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.13, i64 0, i64 0), i64 56, i64 1, i32* %51)
br i1 %44, label %262, label %263
262: ; preds = %259
tail call void (i8*, i32, ...) bitcast (void (...)* @bail to void (i8*, i32, ...)*)(i8* null, i32 1)
br label %266
263: ; preds = %256, %259
%264 = add nuw nsw i32 %36, 1
%265 = icmp eq i32 %264, 3
br i1 %265, label %266, label %34
266: ; preds = %263, %47, %262
ret void
}