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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double fabs(double);
int /*<<< orphan*/ printf(char *, ...);
void checkconvnet(int *icutb, int *iin, double *uamt, double *uamf,
                  double *uamp, double *cam1t, double *cam1f, double *cam1p,
                  double *cam2t, double *cam2f, double *cam2p, double *camt,
                  double *camf, double *camp, int *icntrl, double *dtheta,
                  double *ctrl, double *uama, double *cam1a, double *cam2a,
                  double *cama, double *vamt, double *vamf, double *vamp,
                  double *vama, double *qa) {
  int i0, ir, ip, ic, il, ig, ia, idivergence;
  double c1t, c1f, c1p, c1a;
  double df, dc, db, dd, ran, can, rap, ea, cae, ral;
  i0 = ctrl[0];
  ir = ctrl[1];
  ip = ctrl[2];
  ic = ctrl[3];
  il = ctrl[4];
  ig = ctrl[5];
  ia = ctrl[7];
  df = ctrl[10];
  dc = ctrl[11];
  db = ctrl[12];
  dd = ctrl[16];
  ran = ctrl[18];
  can = ctrl[19];
  rap = ctrl[22];
  ea = ctrl[23];
  cae = ctrl[24];
  ral = ctrl[25];
  if (*iin <= ip) {
    c1t = 0.0001 * ran;
  } else {
    c1t = 0.0001 * rap;
  }
  if (*iin <= ip) {
    c1f = 0.0001 * ran;
  } else {
    c1f = 0.0001 * rap;
  }
  if (*iin <= ip) {
    c1p = 0.0001 * ran;
  } else {
    c1p = 0.0001 * rap;
  }
  if (*iin <= ip) {
    c1a = 0.0001 * ran;
  } else {
    c1a = 0.0001 * rap;
  }
  if (*cam1t < *cam2t) {
    *cam2t = *cam1t;
  }
  if (*cam1f < *cam2f) {
    *cam2f = *cam1f;
  }
  if (*cam1p < *cam2p) {
    *cam2p = *cam1p;
  }
  if (*cam1a < *cam2a) {
    *cam2a = *cam1a;
  }
  if (((*camt <= c1t * *uamt) || (*camt < c1t * *vamt)) &&
      ((*camf <= c1f * *uamf) || (*camf < c1f * *vamf)) &&
      ((*camp <= c1p * *uamp) || (*camp < c1p * *vamp)) &&
      ((*cama <= c1a * *uama) || (*cama < c1a * *vama)) && (*iin > 3)) {
    printf("      flow network: convergence in gas iteration %"
           "d"
           " \n\n",
           *iin);
    *icntrl = 1;
    *icutb = 0;
  } else {
    idivergence = 0;
    if ((*iin >= 20 * i0) || (fabs(*camt) > 1.e20)) {
      if ((*cam1t >= *cam2t) && (*camt >= *cam2t) && (*camt > c1t * *uamt)) {
        idivergence = 1;
      }
    }
    if ((*iin >= 20 * i0) || (fabs(*camf) > 1.e20)) {
      if ((*cam1f >= *cam2f) && (*camf >= *cam2f) && (*camf > c1f * *uamf)) {
        idivergence = 1;
      }
    }
    if ((*iin >= 20 * i0) || (fabs(*camp) > 1.e20)) {
      if ((*cam1p >= *cam2p) && (*camp >= *cam2p) && (*camp > c1p * *uamp)) {
        idivergence = 1;
      }
    }
    if ((*iin >= 20 * i0) || (fabs(*cama) > 1.e20)) {
      if ((*cam1a >= *cam2a) && (*cama >= *cam2a) && (*cama > c1a * *uama)) {
        idivergence = 1;
      }
    }
    if (*iin > 20 * ic)
      idivergence = 1;
    if (*iin == 0)
      idivergence = 1;
    if (idivergence == 1) {
      *dtheta = *dtheta * df;
      printf("\n divergence; the increment size is decreased to %e\n", *dtheta);
      printf(" the increment is reattempted\n\n");
      *iin = 0;
      (*icutb)++;
      if (*icutb > ia) {
        qa[2] = 0.25;
        *icntrl = 1;
      }
    } else {
      printf("      no convergence\n\n");
    }
  }
  return;
}


x86 assembly (clang, -O0):
<checkconvnet>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%rax
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
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,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    0x60(%rbp),%rax
cvttsd2si (%rax),%eax
mov    %eax,-0x34(%rbp)
mov    0x60(%rbp),%rax
cvttsd2si 0x8(%rax),%eax
mov    %eax,-0x38(%rbp)
mov    0x60(%rbp),%rax
cvttsd2si 0x10(%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    0x60(%rbp),%rax
cvttsd2si 0x18(%rax),%eax
mov    %eax,-0x40(%rbp)
mov    0x60(%rbp),%rax
cvttsd2si 0x20(%rax),%eax
mov    %eax,-0x44(%rbp)
mov    0x60(%rbp),%rax
cvttsd2si 0x28(%rax),%eax
mov    %eax,-0x48(%rbp)
mov    0x60(%rbp),%rax
cvttsd2si 0x38(%rax),%eax
mov    %eax,-0x4c(%rbp)
mov    0x60(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x60(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x60(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x60(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x60(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x60(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x60(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x60(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x60(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x60(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x3c(%rbp),%eax
jg     12ca <checkconvnet+0x1ba>
movsd  0xd48(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
jmp    12df <checkconvnet+0x1cf>
movsd  0xd2e(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x3c(%rbp),%eax
jg     1308 <checkconvnet+0x1f8>
movsd  0xd0a(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
jmp    131d <checkconvnet+0x20d>
movsd  0xcf0(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x3c(%rbp),%eax
jg     1346 <checkconvnet+0x236>
movsd  0xccc(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
jmp    135b <checkconvnet+0x24b>
movsd  0xcb2(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x3c(%rbp),%eax
jg     1384 <checkconvnet+0x274>
movsd  0xc8e(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
jmp    1399 <checkconvnet+0x289>
movsd  0xc74(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    13c3 <checkconvnet+0x2b3>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    13ed <checkconvnet+0x2dd>
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1417 <checkconvnet+0x307>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x70(%rbp),%rax
movsd  (%rax),%xmm1
mov    0x78(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1441 <checkconvnet+0x331>
mov    0x70(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x78(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jae    1482 <checkconvnet+0x372>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x58(%rbp),%xmm0
mov    0x88(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1585 <checkconvnet+0x475>
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x60(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jae    14c3 <checkconvnet+0x3b3>
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x60(%rbp),%xmm0
mov    0x90(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1585 <checkconvnet+0x475>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jae    1504 <checkconvnet+0x3f4>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x68(%rbp),%xmm0
mov    0x98(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1585 <checkconvnet+0x475>
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    0x68(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jae    154b <checkconvnet+0x43b>
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    0xa0(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1585 <checkconvnet+0x475>
mov    -0x10(%rbp),%rax
cmpl   $0x3,(%rax)
jle    1585 <checkconvnet+0x475>
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
lea    0xacb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x50(%rbp),%rax
movl   $0x1,(%rax)
mov    -0x8(%rbp),%rax
movl   $0x0,(%rax)
jmp    1897 <checkconvnet+0x787>
movl   $0x0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
imul   $0x14,-0x34(%rbp),%ecx
cmp    %ecx,%eax
jge    15c3 <checkconvnet+0x4b3>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0xa73(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xa4f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    161a <checkconvnet+0x50a>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
ucomisd (%rax),%xmm0
jb     1615 <checkconvnet+0x505>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
ucomisd (%rax),%xmm0
jb     1615 <checkconvnet+0x505>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x58(%rbp),%xmm1
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm1
ucomisd %xmm1,%xmm0
jbe    1615 <checkconvnet+0x505>
movl   $0x1,-0x50(%rbp)
jmp    161a <checkconvnet+0x50a>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
imul   $0x14,-0x34(%rbp),%ecx
cmp    %ecx,%eax
jge    1651 <checkconvnet+0x541>
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0x9e5(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x9c1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16a8 <checkconvnet+0x598>
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jb     16a3 <checkconvnet+0x593>
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jb     16a3 <checkconvnet+0x593>
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x60(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mulsd  (%rax),%xmm1
ucomisd %xmm1,%xmm0
jbe    16a3 <checkconvnet+0x593>
movl   $0x1,-0x50(%rbp)
jmp    16a8 <checkconvnet+0x598>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
imul   $0x14,-0x34(%rbp),%ecx
cmp    %ecx,%eax
jge    16df <checkconvnet+0x5cf>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0x957(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x933(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1736 <checkconvnet+0x626>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
ucomisd (%rax),%xmm0
jb     1731 <checkconvnet+0x621>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
ucomisd (%rax),%xmm0
jb     1731 <checkconvnet+0x621>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x68(%rbp),%xmm1
mov    -0x28(%rbp),%rax
mulsd  (%rax),%xmm1
ucomisd %xmm1,%xmm0
jbe    1731 <checkconvnet+0x621>
movl   $0x1,-0x50(%rbp)
jmp    1736 <checkconvnet+0x626>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
imul   $0x14,-0x34(%rbp),%ecx
cmp    %ecx,%eax
jge    1770 <checkconvnet+0x660>
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0x8c6(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x8a2(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    17cd <checkconvnet+0x6bd>
mov    0x70(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x78(%rbp),%rax
ucomisd (%rax),%xmm0
jb     17c8 <checkconvnet+0x6b8>
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x78(%rbp),%rax
ucomisd (%rax),%xmm0
jb     17c8 <checkconvnet+0x6b8>
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x70(%rbp),%xmm1
mov    0x68(%rbp),%rax
mulsd  (%rax),%xmm1
ucomisd %xmm1,%xmm0
jbe    17c8 <checkconvnet+0x6b8>
movl   $0x1,-0x50(%rbp)
jmp    17cd <checkconvnet+0x6bd>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
imul   $0x14,-0x40(%rbp),%ecx
cmp    %ecx,%eax
jle    17e6 <checkconvnet+0x6d6>
movl   $0x1,-0x50(%rbp)
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jne    17fa <checkconvnet+0x6ea>
movl   $0x1,-0x50(%rbp)
cmpl   $0x1,-0x50(%rbp)
jne    1884 <checkconvnet+0x774>
mov    0x58(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x78(%rbp),%xmm0
mov    0x58(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x58(%rbp),%rax
movsd  (%rax),%xmm0
lea    0x83f(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
lea    0x866(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
cmp    -0x4c(%rbp),%eax
jle    187f <checkconvnet+0x76f>
mov    0xa8(%rbp),%rax
movsd  0x7a0(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    0x50(%rbp),%rax
movl   $0x1,(%rax)
jmp    1892 <checkconvnet+0x782>
lea    0x831(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1897 <checkconvnet+0x787>
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<checkconvnet>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    0x120(%rsp),%rbx
cvttsd2si (%rbx),%ebp
mov    %r8,0x28(%rsp)
mov    %rcx,0x30(%rsp)
mov    %rdx,%r12
mov    %rdi,0x20(%rsp)
cvttsd2si 0x10(%rbx),%ecx
mov    0x168(%rsp),%rax
mov    %rax,0x50(%rsp)
cvttsd2si 0x18(%rbx),%eax
mov    %rax,0x90(%rsp)
mov    0x160(%rsp),%rax
mov    %rax,0x48(%rsp)
mov    0x158(%rsp),%rax
mov    %rax,0x58(%rsp)
mov    %rsi,0x78(%rsp)
mov    (%rsi),%esi
xor    %edi,%edi
cmp    %ecx,%esi
mov    0x150(%rsp),%rax
mov    %rax,0x60(%rsp)
setg   %dil
shl    $0x5,%rdi
movsd  0x90(%rdi,%rbx,1),%xmm1
cvttsd2si 0x38(%rbx),%eax
mov    %eax,0xc(%rsp)
movsd  0x50(%rbx),%xmm0
mov    0xe0(%rsp),%r11
mov    %r9,0x68(%rsp)
movsd  (%r9),%xmm2
movsd  (%r11),%xmm3
ucomisd %xmm2,%xmm3
mov    0x148(%rsp),%r9
mov    0x140(%rsp),%r13
mov    0x138(%rsp),%r15
mov    0x130(%rsp),%rax
mov    %rax,0x40(%rsp)
mov    0x128(%rsp),%rax
mov    %rax,0x18(%rsp)
mov    0x118(%rsp),%rax
mov    %rax,0x70(%rsp)
mov    0x110(%rsp),%rax
mov    %rax,0x10(%rsp)
mov    0x108(%rsp),%rdx
mov    0x100(%rsp),%rdi
mov    0xf8(%rsp),%r8
mov    0xf0(%rsp),%rax
mov    0xe8(%rsp),%r14
mov    0xd8(%rsp),%rcx
mov    %rcx,0x38(%rsp)
mov    0xd0(%rsp),%rbx
jbe    126a <checkconvnet+0x14a>
movsd  %xmm2,(%r11)
mov    %rdi,%rcx
mov    %rbx,0x80(%rsp)
movsd  (%rbx),%xmm2
movsd  (%r14),%xmm3
ucomisd %xmm2,%xmm3
jbe    1289 <checkconvnet+0x169>
movsd  %xmm2,(%r14)
mov    0x38(%rsp),%r10
movsd  (%r10),%xmm2
movsd  (%rax),%xmm3
ucomisd %xmm2,%xmm3
jbe    12a1 <checkconvnet+0x181>
movsd  %xmm2,(%rax)
mov    %rax,0x88(%rsp)
mulsd  0xd4f(%rip),%xmm1
mov    0x40(%rsp),%rax
movsd  (%rax),%xmm3
movsd  (%r15),%xmm2
ucomisd %xmm3,%xmm2
mov    %rcx,%r10
jbe    12d1 <checkconvnet+0x1b1>
movsd  %xmm3,(%r15)
movapd %xmm3,%xmm2
movsd  (%r8),%xmm3
movsd  (%r12),%xmm4
mulsd  %xmm1,%xmm4
ucomisd %xmm3,%xmm4
jae    12f9 <checkconvnet+0x1d9>
movsd  (%r9),%xmm5
mulsd  %xmm1,%xmm5
ucomisd %xmm3,%xmm5
jbe    13b1 <checkconvnet+0x291>
movsd  (%r10),%xmm5
mov    0x30(%rsp),%rax
movsd  (%rax),%xmm6
mulsd  %xmm1,%xmm6
ucomisd %xmm5,%xmm6
jae    1328 <checkconvnet+0x208>
mov    0x60(%rsp),%rax
movsd  (%rax),%xmm6
mulsd  %xmm1,%xmm6
ucomisd %xmm5,%xmm6
jbe    13b1 <checkconvnet+0x291>
movsd  (%rdx),%xmm5
mov    0x28(%rsp),%rax
movsd  (%rax),%xmm6
mulsd  %xmm1,%xmm6
ucomisd %xmm5,%xmm6
jae    1352 <checkconvnet+0x232>
mov    0x58(%rsp),%rax
movsd  (%rax),%xmm6
mulsd  %xmm1,%xmm6
ucomisd %xmm5,%xmm6
jbe    13b1 <checkconvnet+0x291>
movsd  0x0(%r13),%xmm5
mov    0x18(%rsp),%rax
movsd  (%rax),%xmm6
mulsd  %xmm1,%xmm6
ucomisd %xmm5,%xmm6
jae    13ac <checkconvnet+0x28c>
mov    0x48(%rsp),%rax
movsd  (%rax),%xmm6
mulsd  %xmm1,%xmm6
ucomisd %xmm5,%xmm6
jbe    13b1 <checkconvnet+0x291>
cmp    $0x3,%esi
jle    13b1 <checkconvnet+0x291>
lea    0xc96(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x10(%rsp),%rax
movl   $0x1,(%rax)
mov    0x20(%rsp),%rax
movl   $0x0,(%rax)
jmp    1589 <checkconvnet+0x469>
cmp    $0x4,%esi
jge    1383 <checkconvnet+0x263>
shl    $0x2,%ebp
lea    0x0(%rbp,%rbp,4),%ebp
cmp    %ebp,%esi
jge    13d4 <checkconvnet+0x2b4>
movapd 0xc4c(%rip),%xmm5
andpd  %xmm3,%xmm5
xor    %ecx,%ecx
ucomisd 0xc36(%rip),%xmm5
jbe    1402 <checkconvnet+0x2e2>
mov    0x68(%rsp),%rax
movsd  (%rax),%xmm5
movsd  (%r11),%xmm6
ucomisd %xmm6,%xmm5
setae  %al
ucomisd %xmm6,%xmm3
setae  %cl
and    %al,%cl
ucomisd %xmm4,%xmm3
seta   %al
and    %cl,%al
movzbl %al,%ecx
cmp    %ebp,%esi
jge    1419 <checkconvnet+0x2f9>
movsd  (%r10),%xmm3
andpd  0xc01(%rip),%xmm3
ucomisd 0xbf1(%rip),%xmm3
jbe    1457 <checkconvnet+0x337>
mov    0x80(%rsp),%rax
movsd  (%rax),%xmm3
movsd  (%r14),%xmm4
ucomisd %xmm4,%xmm3
jb     1453 <checkconvnet+0x333>
movsd  (%r10),%xmm3
ucomisd %xmm4,%xmm3
jb     1453 <checkconvnet+0x333>
mov    0x30(%rsp),%rax
movsd  (%rax),%xmm4
mulsd  %xmm1,%xmm4
ucomisd %xmm4,%xmm3
jbe    1453 <checkconvnet+0x333>
mov    $0x1,%ecx
cmp    %ebp,%esi
jge    146d <checkconvnet+0x34d>
movsd  (%rdx),%xmm3
andpd  0xbad(%rip),%xmm3
ucomisd 0xb9d(%rip),%xmm3
jbe    14ae <checkconvnet+0x38e>
mov    0x38(%rsp),%rax
movsd  (%rax),%xmm3
mov    0x88(%rsp),%rax
movsd  (%rax),%xmm4
ucomisd %xmm4,%xmm3
jb     14aa <checkconvnet+0x38a>
movsd  (%rdx),%xmm3
ucomisd %xmm4,%xmm3
jb     14aa <checkconvnet+0x38a>
mov    0x28(%rsp),%rax
movsd  (%rax),%xmm4
mulsd  %xmm1,%xmm4
ucomisd %xmm4,%xmm3
jbe    14aa <checkconvnet+0x38a>
mov    $0x1,%ecx
cmp    %ebp,%esi
jge    14c6 <checkconvnet+0x3a6>
movsd  0x0(%r13),%xmm3
andpd  0xb54(%rip),%xmm3
ucomisd 0xb44(%rip),%xmm3
jbe    14f0 <checkconvnet+0x3d0>
mov    0x40(%rsp),%rax
movsd  (%rax),%xmm3
ucomisd %xmm2,%xmm3
jb     14f0 <checkconvnet+0x3d0>
movsd  0x0(%r13),%xmm3
ucomisd %xmm2,%xmm3
jb     14f0 <checkconvnet+0x3d0>
mov    0x18(%rsp),%rax
mulsd  (%rax),%xmm1
ucomisd %xmm1,%xmm3
ja     1527 <checkconvnet+0x407>
test   %esi,%esi
je     1527 <checkconvnet+0x407>
mov    0x90(%rsp),%rax
shl    $0x2,%eax
lea    (%rax,%rax,4),%eax
cmp    %eax,%esi
jg     1527 <checkconvnet+0x407>
test   %ecx,%ecx
jne    1527 <checkconvnet+0x407>
lea    0xb7b(%rip),%rdi
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <puts@plt>
mov    0x70(%rsp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
lea    0xb1c(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xb59(%rip),%rdi
call   1030 <puts@plt>
mov    0x78(%rsp),%rax
movl   $0x0,(%rax)
mov    0x20(%rsp),%rdx
mov    (%rdx),%eax
lea    0x1(%rax),%ecx
mov    %ecx,(%rdx)
cmp    0xc(%rsp),%eax
jl     1589 <checkconvnet+0x469>
movabs $0x3fd0000000000000,%rax
mov    0x50(%rsp),%rcx
mov    %rax,0x10(%rcx)
mov    0x10(%rsp),%rax
movl   $0x1,(%rax)
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [55 x i8] c" flow network: convergence in gas iteration %d \0A\0A\00"
@.str.1 = [53 x i8] c"\0A divergence; the increment size is decreased to %e\0A\00"
@str = [22 x i8] c" no convergence\0A\00"
@str.4 = [31 x i8] c" the increment is reattempted\0A\00"
define void @checkconvnet(i32* nocapture %0, i32* nocapture %1, double* nocapture %2, double* nocapture %3, double* nocapture %4, double* nocapture %5, double* nocapture %6, double* nocapture %7, double* nocapture %8, double* nocapture %9, double* nocapture %10, double* nocapture %11, double* nocapture %12, double* nocapture %13, i32* nocapture writeonly %14, double* nocapture %15, double* nocapture %16, double* nocapture %17, double* nocapture %18, double* nocapture %19, double* nocapture %20, double* nocapture %21, double* nocapture %22, double* nocapture %23, double* nocapture %24, double* nocapture writeonly %25) {
%27 = load double, double* %16
%28 = fptosi double %27 to i32
%29 = getelementptr inbounds double, double* %16, i64 2
%30 = load double, double* %29
%31 = fptosi double %30 to i32
%32 = getelementptr inbounds double, double* %16, i64 3
%33 = load double, double* %32
%34 = fptosi double %33 to i32
%35 = getelementptr inbounds double, double* %16, i64 7
%36 = load double, double* %35
%37 = fptosi double %36 to i32
%38 = getelementptr inbounds double, double* %16, i64 10
%39 = load double, double* %38
%40 = getelementptr inbounds double, double* %16, i64 18
%41 = load double, double* %40
%42 = getelementptr inbounds double, double* %16, i64 22
%43 = load double, double* %42
%44 = load i32, i32* %1
%45 = icmp sgt i32 %44, %31
%46 = select i1 %45, double %43, double %41
%47 = fmul double %46, 1.000000e-04
%48 = load double, double* %5
%49 = load double, double* %8
%50 = fcmp olt double %48, %49
br i1 %50, label %51, label %52
51: ; preds = %26
store double %48, double* %8
br label %52
52: ; preds = %51, %26
%53 = load double, double* %6
%54 = load double, double* %9
%55 = fcmp olt double %53, %54
br i1 %55, label %56, label %57
56: ; preds = %52
store double %53, double* %9
br label %57
57: ; preds = %56, %52
%58 = load double, double* %7
%59 = load double, double* %10
%60 = fcmp olt double %58, %59
br i1 %60, label %61, label %62
61: ; preds = %57
store double %58, double* %10
br label %62
62: ; preds = %61, %57
%63 = load double, double* %18
%64 = load double, double* %19
%65 = fcmp olt double %63, %64
br i1 %65, label %66, label %67
66: ; preds = %62
store double %63, double* %19
br label %67
67: ; preds = %66, %62
%68 = phi double [ %63, %66 ], [ %64, %62 ]
%69 = load double, double* %11
%70 = load double, double* %2
%71 = fmul double %47, %70
%72 = fcmp ugt double %69, %71
br i1 %72, label %73, label %77
73: ; preds = %67
%74 = load double, double* %21
%75 = fmul double %47, %74
%76 = fcmp olt double %69, %75
br i1 %76, label %77, label %110
77: ; preds = %73, %67
%78 = load double, double* %12
%79 = load double, double* %3
%80 = fmul double %47, %79
%81 = fcmp ugt double %78, %80
br i1 %81, label %82, label %86
82: ; preds = %77
%83 = load double, double* %22
%84 = fmul double %47, %83
%85 = fcmp olt double %78, %84
br i1 %85, label %86, label %110
86: ; preds = %82, %77
%87 = load double, double* %13
%88 = load double, double* %4
%89 = fmul double %47, %88
%90 = fcmp ugt double %87, %89
br i1 %90, label %91, label %95
91: ; preds = %86
%92 = load double, double* %23
%93 = fmul double %47, %92
%94 = fcmp olt double %87, %93
br i1 %94, label %95, label %110
95: ; preds = %91, %86
%96 = load double, double* %20
%97 = load double, double* %17
%98 = fmul double %47, %97
%99 = fcmp ugt double %96, %98
br i1 %99, label %100, label %106
100: ; preds = %95
%101 = load double, double* %24
%102 = fmul double %47, %101
%103 = fcmp olt double %96, %102
%104 = icmp sgt i32 %44, 3
%105 = select i1 %103, i1 %104, i1 false
br i1 %105, label %108, label %110
106: ; preds = %95
%107 = icmp sgt i32 %44, 3
br i1 %107, label %108, label %110
108: ; preds = %100, %106
%109 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str, i64 0, i64 0), i32 %44)
store i32 1, i32* %14
store i32 0, i32* %0
br label %202
110: ; preds = %106, %100, %91, %82, %73
%111 = mul nsw i32 %28, 20
%112 = icmp slt i32 %44, %111
%113 = xor i1 %112, true
%114 = tail call double @llvm.fabs.f64(double %69)
%115 = fcmp ogt double %114, 1.000000e+20
%116 = select i1 %113, i1 true, i1 %115
br i1 %116, label %117, label %126
117: ; preds = %110
%118 = load double, double* %5
%119 = load double, double* %8
%120 = fcmp oge double %118, %119
%121 = fcmp oge double %69, %119
%122 = select i1 %120, i1 %121, i1 false
%123 = fcmp ogt double %69, %71
%124 = select i1 %122, i1 %123, i1 false
%125 = zext i1 %124 to i32
br i1 %112, label %126, label %131
126: ; preds = %110, %117
%127 = phi i32 [ %125, %117 ], [ 0, %110 ]
%128 = load double, double* %12
%129 = tail call double @llvm.fabs.f64(double %128)
%130 = fcmp ogt double %129, 1.000000e+20
br i1 %130, label %131, label %146
131: ; preds = %126, %117
%132 = phi i32 [ %127, %126 ], [ %125, %117 ]
%133 = load double, double* %6
%134 = load double, double* %9
%135 = fcmp ult double %133, %134
br i1 %135, label %144, label %136
136: ; preds = %131
%137 = load double, double* %12
%138 = fcmp ult double %137, %134
br i1 %138, label %144, label %139
139: ; preds = %136
%140 = load double, double* %3
%141 = fmul double %47, %140
%142 = fcmp ogt double %137, %141
br i1 %142, label %143, label %144
143: ; preds = %139
br label %144
144: ; preds = %131, %136, %139, %143
%145 = phi i32 [ 1, %143 ], [ %132, %139 ], [ %132, %136 ], [ %132, %131 ]
br i1 %112, label %146, label %151
146: ; preds = %126, %144
%147 = phi i32 [ %145, %144 ], [ %127, %126 ]
%148 = load double, double* %13
%149 = tail call double @llvm.fabs.f64(double %148)
%150 = fcmp ogt double %149, 1.000000e+20
br i1 %150, label %151, label %166
151: ; preds = %146, %144
%152 = phi i32 [ %147, %146 ], [ %145, %144 ]
%153 = load double, double* %7
%154 = load double, double* %10
%155 = fcmp ult double %153, %154
br i1 %155, label %164, label %156
156: ; preds = %151
%157 = load double, double* %13
%158 = fcmp ult double %157, %154
br i1 %158, label %164, label %159
159: ; preds = %156
%160 = load double, double* %4
%161 = fmul double %47, %160
%162 = fcmp ogt double %157, %161
br i1 %162, label %163, label %164
163: ; preds = %159
br label %164
164: ; preds = %151, %156, %159, %163
%165 = phi i32 [ 1, %163 ], [ %152, %159 ], [ %152, %156 ], [ %152, %151 ]
br i1 %112, label %166, label %171
166: ; preds = %146, %164
%167 = phi i32 [ %165, %164 ], [ %147, %146 ]
%168 = load double, double* %20
%169 = tail call double @llvm.fabs.f64(double %168)
%170 = fcmp ogt double %169, 1.000000e+20
br i1 %170, label %171, label %182
171: ; preds = %166, %164
%172 = phi i32 [ %167, %166 ], [ %165, %164 ]
%173 = load double, double* %18
%174 = fcmp ult double %173, %68
br i1 %174, label %182, label %175
175: ; preds = %171
%176 = load double, double* %20
%177 = fcmp ult double %176, %68
br i1 %177, label %182, label %178
178: ; preds = %175
%179 = load double, double* %17
%180 = fmul double %47, %179
%181 = fcmp ogt double %176, %180
br i1 %181, label %190, label %182
182: ; preds = %171, %175, %178, %166
%183 = phi i32 [ %172, %178 ], [ %172, %175 ], [ %172, %171 ], [ %167, %166 ]
%184 = mul nsw i32 %34, 20
%185 = icmp sgt i32 %44, %184
%186 = icmp eq i32 %44, 0
%187 = select i1 %186, i1 true, i1 %185
%188 = icmp eq i32 %183, 1
%189 = select i1 %187, i1 true, i1 %188
br i1 %189, label %190, label %200
190: ; preds = %178, %182
%191 = load double, double* %15
%192 = fmul double %39, %191
store double %192, double* %15
%193 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.1, i64 0, i64 0), double %192)
%194 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.4, i64 0, i64 0))
store i32 0, i32* %1
%195 = load i32, i32* %0
%196 = add nsw i32 %195, 1
store i32 %196, i32* %0
%197 = icmp slt i32 %195, %37
br i1 %197, label %202, label %198
198: ; preds = %190
%199 = getelementptr inbounds double, double* %25, i64 2
store double 2.500000e-01, double* %199
store i32 1, i32* %14
br label %202
200: ; preds = %182
%201 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @str, i64 0, i64 0))
br label %202
202: ; preds = %200, %198, %190, %108
ret void
}