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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ _SC_NPROCESSORS_ONLN;
double abs(double);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, int, char *);
int /*<<< orphan*/ stderr;
int sysconf(int /*<<< orphan*/);
int _positive_solver_rec(double **A, double *x, double *b, int n) {
  int status = 0;
  if (n < 1) {
    {
      {
        fprintf(stderr, "Line %3d of File %s \n", 26,
                "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                "outputs/2022-01-22/02-19-57/repos/NerdWalletOSS/Q/refs/heads/"
                "master/OPERATORS/AX_EQUALS_B/src/positive_solver.c");
      };
      status = -1;
      goto BYE;
    };
  }
  if (n == 1) {
    if (A[0][0] == 0.0) {
      if (abs(b[0]) > 0.001) {
        {
          {
            fprintf(stderr, "Line %3d of File %s \n", 29,
                    "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                    "outputs/2022-01-22/02-19-57/repos/NerdWalletOSS/Q/refs/"
                    "heads/master/OPERATORS/AX_EQUALS_B/src/positive_solver.c");
          };
          status = -1;
          goto BYE;
        };
      }
      x[0] = 0.0;
      return 0;
    }
    x[0] = b[0] / A[0][0];
    return 0;
  }
  double *bvec = b + 1;
  double *Avec = A[0] + 1;
  double **Asub = A + 1;
  double *xvec = x + 1;
  int m = n - 1;
  if (A[0][0] != 0.0) {
    int nT = sysconf(_SC_NPROCESSORS_ONLN);
#pragma omp parallel for
    for (int t = 0; t < nT; t++) {
      for (int i = 0; i < m; i++) {
        if ((i - i / nT) % nT != t)
          continue;
        bvec[i] -= Avec[i] * b[0] / A[0][0];
        for (int j = 0; j < m - i; j++)
          Asub[i][j] -= Avec[i] * Avec[i + j] / A[0][0];
      }
    }
  }
  status = _positive_solver_rec(Asub, xvec, bvec, m);
  {
    if ((status) < 0) {
      {
        {
          fprintf(stderr, "Line %3d of File %s \n", 58,
                  "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                  "outputs/2022-01-22/02-19-57/repos/NerdWalletOSS/Q/refs/"
                  "heads/master/OPERATORS/AX_EQUALS_B/src/positive_solver.c");
        };
        status = (status);
        goto BYE;
      }
    }
  };
  if (status < 0) {
    return status;
  }
  if (A[0][0] == 0.0) {
    if (b[0] != 0.0) {
      {
        {
          fprintf(stderr, "Line %3d of File %s \n", 62,
                  "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                  "outputs/2022-01-22/02-19-57/repos/NerdWalletOSS/Q/refs/"
                  "heads/master/OPERATORS/AX_EQUALS_B/src/positive_solver.c");
        };
        status = -1;
        goto BYE;
      };
    }
    x[0] = 0.0;
    return status;
  }
  double p = 0;
  for (int k = 0; k < m; k++) {
    p += Avec[k] * xvec[k];
  }
  x[0] = (b[0] - p) / A[0][0];
BYE:
  return status;
}


x86 assembly (clang, -O0):
<_positive_solver_rec>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %ecx,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x1,-0x24(%rbp)
jge    1195 <_positive_solver_rec+0x55>
mov    0x2e69(%rip),%rax
mov    (%rax),%edi
lea    0xe90(%rip),%rsi
mov    $0x1a,%edx
lea    0xe9a(%rip),%rcx
call   1040 <fprintf@plt>
movl   $0xffffffff,-0x28(%rbp)
jmp    152a <_positive_solver_rec+0x3ea>
cmpl   $0x1,-0x24(%rbp)
jne    1247 <_positive_solver_rec+0x107>
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1220 <_positive_solver_rec+0xe0>
jp     1220 <_positive_solver_rec+0xe0>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
call   1030 <abs@plt>
movsd  0xe2e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1209 <_positive_solver_rec+0xc9>
mov    0x2df5(%rip),%rax
mov    (%rax),%edi
lea    0xe1c(%rip),%rsi
mov    $0x1d,%edx
lea    0xe26(%rip),%rcx
call   1040 <fprintf@plt>
movl   $0xffffffff,-0x28(%rbp)
jmp    152a <_positive_solver_rec+0x3ea>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    1530 <_positive_solver_rec+0x3f0>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
divsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    1530 <_positive_solver_rec+0x3f0>
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
add    $0x8,%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x48(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12a6 <_positive_solver_rec+0x166>
jp     12a6 <_positive_solver_rec+0x166>
jmp    13d2 <_positive_solver_rec+0x292>
mov    0x2d3b(%rip),%rax
mov    (%rax),%edi
call   1050 <sysconf@plt>
mov    %eax,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x50(%rbp),%eax
jge    13cd <_positive_solver_rec+0x28d>
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    13ba <_positive_solver_rec+0x27a>
mov    -0x58(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x58(%rbp),%eax
cltd
idivl  -0x50(%rbp)
mov    %eax,%ecx
mov    -0x70(%rbp),%eax
sub    %ecx,%eax
cltd
idivl  -0x50(%rbp)
cmp    -0x54(%rbp),%edx
je     1303 <_positive_solver_rec+0x1c3>
jmp    13ac <_positive_solver_rec+0x26c>
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mulsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
divsd  (%rax),%xmm1
mov    -0x30(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    -0x4c(%rbp),%ecx
sub    -0x58(%rbp),%ecx
cmp    %ecx,%eax
jge    13a7 <_positive_solver_rec+0x267>
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x38(%rbp),%rax
mov    -0x58(%rbp),%ecx
add    -0x5c(%rbp),%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
divsd  (%rax),%xmm1
mov    -0x40(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1340 <_positive_solver_rec+0x200>
jmp    13ac <_positive_solver_rec+0x26c>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    12d1 <_positive_solver_rec+0x191>
jmp    13bf <_positive_solver_rec+0x27f>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    12be <_positive_solver_rec+0x17e>
jmp    13d2 <_positive_solver_rec+0x292>
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    -0x4c(%rbp),%ecx
call   1060 <_positive_solver_rec@plt>
mov    %eax,-0x28(%rbp)
cmpl   $0x0,-0x28(%rbp)
jge    141f <_positive_solver_rec+0x2df>
mov    0x2bde(%rip),%rax
mov    (%rax),%edi
lea    0xc05(%rip),%rsi
mov    $0x3a,%edx
lea    0xc0f(%rip),%rcx
call   1040 <fprintf@plt>
mov    -0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
jmp    152a <_positive_solver_rec+0x3ea>
cmpl   $0x0,-0x28(%rbp)
jge    1434 <_positive_solver_rec+0x2f4>
mov    -0x28(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1530 <_positive_solver_rec+0x3f0>
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14b5 <_positive_solver_rec+0x375>
jp     14b5 <_positive_solver_rec+0x375>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1472 <_positive_solver_rec+0x332>
jp     1472 <_positive_solver_rec+0x332>
jmp    149f <_positive_solver_rec+0x35f>
mov    0x2b5f(%rip),%rax
mov    (%rax),%edi
lea    0xb86(%rip),%rsi
mov    $0x3e,%edx
lea    0xb90(%rip),%rcx
call   1040 <fprintf@plt>
movl   $0xffffffff,-0x28(%rbp)
jmp    152a <_positive_solver_rec+0x3ea>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1530 <_positive_solver_rec+0x3f0>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    150a <_positive_solver_rec+0x3ca>
mov    -0x38(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    14c4 <_positive_solver_rec+0x384>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
divsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_positive_solver_rec>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
test   %ecx,%ecx
jle    11b1 <_positive_solver_rec+0x71>
mov    %rdx,%r14
mov    %rsi,%rbx
mov    %rdi,%r15
cmp    $0x1,%ecx
jne    11dd <_positive_solver_rec+0x9d>
mov    (%r15),%rax
movsd  (%rax),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
movsd  (%r14),%xmm0
jne    149e <_positive_solver_rec+0x35e>
jp     149e <_positive_solver_rec+0x35e>
call   1030 <abs@plt>
ucomisd 0xe73(%rip),%xmm0
jbe    14ce <_positive_solver_rec+0x38e>
mov    0x2e3e(%rip),%rax
mov    (%rax),%edi
lea    0xe65(%rip),%rsi
lea    0xe74(%rip),%rcx
mov    $0x1d,%edx
jmp    11cd <_positive_solver_rec+0x8d>
mov    0x2e20(%rip),%rax
mov    (%rax),%edi
lea    0xe47(%rip),%rsi
lea    0xe56(%rip),%rcx
mov    $0x1a,%edx
call   1040 <fprintf@plt>
mov    $0xffffffff,%r13d
jmp    15b8 <_positive_solver_rec+0x478>
lea    0x8(%r14),%rax
mov    %rax,0x50(%rsp)
mov    (%r15),%rax
lea    0x8(%r15),%r8
mov    %rbx,0x30(%rsp)
lea    0x8(%rbx),%rdx
mov    %rdx,0x48(%rsp)
mov    %rcx,0x40(%rsp)
add    $0xffffffff,%ecx
mov    %rax,0x28(%rsp)
movsd  (%rax),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
mov    %ecx,0x4(%rsp)
jne    1220 <_positive_solver_rec+0xe0>
jnp    1437 <_positive_solver_rec+0x2f7>
mov    0x2dc1(%rip),%rax
mov    (%rax),%edi
mov    %r8,0x8(%rsp)
call   1050 <sysconf@plt>
mov    0x8(%rsp),%r8
mov    0x4(%rsp),%ecx
test   %eax,%eax
jle    1437 <_positive_solver_rec+0x2f7>
mov    %eax,%r10d
mov    0x28(%rsp),%rax
lea    0x8(%rax),%r9
mov    %ecx,%r12d
xor    %r13d,%r13d
mov    %r14,0x38(%rsp)
mov    %r15,0x20(%rsp)
mov    %r12,0x10(%rsp)
jmp    127d <_positive_solver_rec+0x13d>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r13d
cmp    %r10d,%r13d
je     1437 <_positive_solver_rec+0x2f7>
mov    %r9,%rdi
xor    %esi,%esi
mov    %ecx,%ebx
mov    %r13,0x18(%rsp)
jmp    12a0 <_positive_solver_rec+0x160>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rsi
add    $0xffffffff,%ebx
add    $0x8,%rdi
cmp    %r12,%rsi
je     1270 <_positive_solver_rec+0x130>
mov    %ebx,%ebx
mov    %esi,%eax
cltd
idiv   %r10d
mov    %esi,%edx
sub    %eax,%edx
mov    %edx,%eax
cltd
idiv   %r10d
cmp    %r13d,%edx
jne    1290 <_positive_solver_rec+0x150>
movsd  (%r9,%rsi,8),%xmm0
mulsd  (%r14),%xmm0
mov    (%r15),%rax
divsd  (%rax),%xmm0
movsd  0x8(%r14,%rsi,8),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r14,%rsi,8)
cmp    %esi,%ecx
jle    1290 <_positive_solver_rec+0x150>
mov    %ecx,%r11d
sub    %esi,%r11d
mov    (%r8,%rsi,8),%rdx
cmp    $0x2,%r11d
jae    132b <_positive_solver_rec+0x1eb>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%r9,%rsi,8),%xmm0
mulsd  (%rdi,%rbp,8),%xmm0
divsd  (%rax),%xmm0
movsd  (%rdx,%rbp,8),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%rdx,%rbp,8)
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1300 <_positive_solver_rec+0x1c0>
jmp    1290 <_positive_solver_rec+0x150>
mov    0x28(%rsp),%r8
lea    (%r8,%rsi,8),%rcx
add    $0x8,%rcx
lea    (%rcx,%r11,8),%r15
lea    (%r8,%rsi,8),%r12
add    $0x10,%r12
lea    (%rdx,%r11,8),%r13
lea    0x8(%rax),%r14
cmp    %r15,%rdx
setb   %r8b
cmp    %r13,%rcx
setb   %cl
cmp    %r12,%rdx
setb   %r15b
cmp    %r14,%rdx
setb   %r12b
cmp    %r13,%rax
setb   %r13b
test   %cl,%r8b
jne    140f <_positive_solver_rec+0x2cf>
and    %cl,%r15b
mov    0x38(%rsp),%r14
jne    1418 <_positive_solver_rec+0x2d8>
mov    $0x0,%ebp
and    %r13b,%r12b
mov    0x20(%rsp),%r15
mov    0x4(%rsp),%ecx
mov    0x8(%rsp),%r8
mov    0x10(%rsp),%r12
mov    0x18(%rsp),%r13
jne    1300 <_positive_solver_rec+0x1c0>
mov    %ebx,%r13d
and    $0xfffffffe,%r13d
mov    %r11d,%ebp
and    $0xfffffffe,%ebp
movsd  (%r9,%rsi,8),%xmm0
unpcklpd %xmm0,%xmm0
movsd  (%rax),%xmm1
unpcklpd %xmm1,%xmm1
xor    %r12d,%r12d
nopl   (%rax)
movupd (%rdi,%r12,8),%xmm2
mulpd  %xmm0,%xmm2
divpd  %xmm1,%xmm2
movupd (%rdx,%r12,8),%xmm3
subpd  %xmm2,%xmm3
movupd %xmm3,(%rdx,%r12,8)
add    $0x2,%r12
cmp    %r12,%r13
jne    13d0 <_positive_solver_rec+0x290>
cmp    %r11,%rbp
mov    0x10(%rsp),%r12
mov    0x18(%rsp),%r13
jne    1300 <_positive_solver_rec+0x1c0>
jmp    1290 <_positive_solver_rec+0x150>
xor    %ebp,%ebp
mov    0x38(%rsp),%r14
jmp    141a <_positive_solver_rec+0x2da>
xor    %ebp,%ebp
mov    0x20(%rsp),%r15
mov    0x4(%rsp),%ecx
mov    0x8(%rsp),%r8
mov    0x10(%rsp),%r12
mov    0x18(%rsp),%r13
jmp    1300 <_positive_solver_rec+0x1c0>
mov    %r8,%rdi
mov    0x48(%rsp),%rsi
mov    0x50(%rsp),%rdx
call   1060 <_positive_solver_rec@plt>
mov    %eax,%r13d
test   %eax,%eax
js     14a8 <_positive_solver_rec+0x368>
mov    (%r15),%rax
movsd  (%rax),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14dd <_positive_solver_rec+0x39d>
jp     14dd <_positive_solver_rec+0x39d>
movsd  (%r14),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
mov    0x30(%rsp),%rax
jne    147d <_positive_solver_rec+0x33d>
jnp    150d <_positive_solver_rec+0x3cd>
mov    0x2b54(%rip),%rax
mov    (%rax),%edi
lea    0xb7b(%rip),%rsi
lea    0xb8a(%rip),%rcx
mov    $0x3e,%edx
jmp    11cd <_positive_solver_rec+0x8d>
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx)
jmp    14d5 <_positive_solver_rec+0x395>
mov    0x2b29(%rip),%rax
mov    (%rax),%edi
lea    0xb50(%rip),%rsi
lea    0xb5f(%rip),%rcx
mov    $0x3a,%edx
call   1040 <fprintf@plt>
jmp    15b8 <_positive_solver_rec+0x478>
movq   $0x0,(%rbx)
xor    %r13d,%r13d
jmp    15b8 <_positive_solver_rec+0x478>
cmpl   $0x2,0x40(%rsp)
mov    0x30(%rsp),%rdi
mov    0x28(%rsp),%rsi
jl     15a7 <_positive_solver_rec+0x467>
mov    0x4(%rsp),%edx
lea    -0x1(%rdx),%rcx
mov    %edx,%eax
and    $0x3,%eax
cmp    $0x3,%rcx
jae    1519 <_positive_solver_rec+0x3d9>
xorpd  %xmm1,%xmm1
xor    %ecx,%ecx
jmp    1579 <_positive_solver_rec+0x439>
movq   $0x0,(%rax)
jmp    15b8 <_positive_solver_rec+0x478>
and    $0xfffffffc,%edx
xorpd  %xmm1,%xmm1
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x8(%rsi,%rcx,8),%xmm2
movsd  0x10(%rsi,%rcx,8),%xmm3
mulsd  0x8(%rdi,%rcx,8),%xmm2
mulsd  0x10(%rdi,%rcx,8),%xmm3
addsd  %xmm1,%xmm2
movsd  0x18(%rsi,%rcx,8),%xmm4
mulsd  0x18(%rdi,%rcx,8),%xmm4
addsd  %xmm2,%xmm3
movsd  0x20(%rsi,%rcx,8),%xmm1
mulsd  0x20(%rdi,%rcx,8),%xmm1
addsd  %xmm3,%xmm4
addsd  %xmm4,%xmm1
add    $0x4,%rcx
cmp    %rcx,%rdx
jne    1530 <_positive_solver_rec+0x3f0>
test   %rax,%rax
je     15a7 <_positive_solver_rec+0x467>
lea    (%rdi,%rcx,8),%rdx
add    $0x8,%rdx
lea    (%rsi,%rcx,8),%rcx
add    $0x8,%rcx
xor    %esi,%esi
movsd  (%rcx,%rsi,8),%xmm2
mulsd  (%rdx,%rsi,8),%xmm2
addsd  %xmm2,%xmm1
add    $0x1,%rsi
cmp    %rsi,%rax
jne    1590 <_positive_solver_rec+0x450>
movsd  (%r14),%xmm2
subsd  %xmm1,%xmm2
divsd  %xmm0,%xmm2
movsd  %xmm2,(%rdi)
mov    %r13d,%eax
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [22 x i8] c"Line %3d of File %s \0A\00"
@.str.1 = [168 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/NerdWalletOSS/Q/refs/heads/master/OPERATORS/AX_EQUALS_B/src/positive_solver.c\00"
@_SC_NPROCESSORS_ONLN = global i32 0
define i32 @_positive_solver_rec(double** %0, double* %1, double* %2, i32 %3) {
%5 = alloca i32
%6 = alloca double**
%7 = alloca double*
%8 = alloca double*
%9 = alloca i32
%10 = alloca i32
%11 = alloca double*
%12 = alloca double*
%13 = alloca double**
%14 = alloca double*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca double
%21 = alloca i32
store double** %0, double*** %6
store double* %1, double** %7
store double* %2, double** %8
store i32 %3, i32* %9
store i32 0, i32* %10
%22 = load i32, i32* %9
%23 = icmp slt i32 %22, 1
br i1 %23, label %24, label %27
24: ; preds = %4
%25 = load i32, i32* @stderr
%26 = call i32 @fprintf(i32 %25, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 26, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
store i32 -1, i32* %10
br label %244
27: ; preds = %4
%28 = load i32, i32* %9
%29 = icmp eq i32 %28, 1
br i1 %29, label %30, label %61
30: ; preds = %27
%31 = load double**, double*** %6
%32 = getelementptr inbounds double*, double** %31, i64 0
%33 = load double*, double** %32
%34 = getelementptr inbounds double, double* %33, i64 0
%35 = load double, double* %34
%36 = fcmp oeq double %35, 0.000000e+00
br i1 %36, label %37, label %49
37: ; preds = %30
%38 = load double*, double** %8
%39 = getelementptr inbounds double, double* %38, i64 0
%40 = load double, double* %39
%41 = call double @abs(double %40)
%42 = fcmp ogt double %41, 1.000000e-03
br i1 %42, label %43, label %46
43: ; preds = %37
%44 = load i32, i32* @stderr
%45 = call i32 @fprintf(i32 %44, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 29, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
store i32 -1, i32* %10
br label %244
46: ; preds = %37
%47 = load double*, double** %7
%48 = getelementptr inbounds double, double* %47, i64 0
store double 0.000000e+00, double* %48
store i32 0, i32* %5
br label %246
49: ; preds = %30
%50 = load double*, double** %8
%51 = getelementptr inbounds double, double* %50, i64 0
%52 = load double, double* %51
%53 = load double**, double*** %6
%54 = getelementptr inbounds double*, double** %53, i64 0
%55 = load double*, double** %54
%56 = getelementptr inbounds double, double* %55, i64 0
%57 = load double, double* %56
%58 = fdiv double %52, %57
%59 = load double*, double** %7
%60 = getelementptr inbounds double, double* %59, i64 0
store double %58, double* %60
store i32 0, i32* %5
br label %246
61: ; preds = %27
%62 = load double*, double** %8
%63 = getelementptr inbounds double, double* %62, i64 1
store double* %63, double** %11
%64 = load double**, double*** %6
%65 = getelementptr inbounds double*, double** %64, i64 0
%66 = load double*, double** %65
%67 = getelementptr inbounds double, double* %66, i64 1
store double* %67, double** %12
%68 = load double**, double*** %6
%69 = getelementptr inbounds double*, double** %68, i64 1
store double** %69, double*** %13
%70 = load double*, double** %7
%71 = getelementptr inbounds double, double* %70, i64 1
store double* %71, double** %14
%72 = load i32, i32* %9
%73 = sub nsw i32 %72, 1
store i32 %73, i32* %15
%74 = load double**, double*** %6
%75 = getelementptr inbounds double*, double** %74, i64 0
%76 = load double*, double** %75
%77 = getelementptr inbounds double, double* %76, i64 0
%78 = load double, double* %77
%79 = fcmp une double %78, 0.000000e+00
br i1 %79, label %80, label %173
80: ; preds = %61
%81 = load i32, i32* @_SC_NPROCESSORS_ONLN
%82 = call i32 @sysconf(i32 %81)
store i32 %82, i32* %16
store i32 0, i32* %17
br label %83
83: ; preds = %169, %80
%84 = load i32, i32* %17
%85 = load i32, i32* %16
%86 = icmp slt i32 %84, %85
br i1 %86, label %87, label %172
87: ; preds = %83
store i32 0, i32* %18
br label %88
88: ; preds = %165, %87
%89 = load i32, i32* %18
%90 = load i32, i32* %15
%91 = icmp slt i32 %89, %90
br i1 %91, label %92, label %168
92: ; preds = %88
%93 = load i32, i32* %18
%94 = load i32, i32* %18
%95 = load i32, i32* %16
%96 = sdiv i32 %94, %95
%97 = sub nsw i32 %93, %96
%98 = load i32, i32* %16
%99 = srem i32 %97, %98
%100 = load i32, i32* %17
%101 = icmp ne i32 %99, %100
br i1 %101, label %102, label %103
102: ; preds = %92
br label %165
103: ; preds = %92
%104 = load double*, double** %12
%105 = load i32, i32* %18
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds double, double* %104, i64 %106
%108 = load double, double* %107
%109 = load double*, double** %8
%110 = getelementptr inbounds double, double* %109, i64 0
%111 = load double, double* %110
%112 = fmul double %108, %111
%113 = load double**, double*** %6
%114 = getelementptr inbounds double*, double** %113, i64 0
%115 = load double*, double** %114
%116 = getelementptr inbounds double, double* %115, i64 0
%117 = load double, double* %116
%118 = fdiv double %112, %117
%119 = load double*, double** %11
%120 = load i32, i32* %18
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds double, double* %119, i64 %121
%123 = load double, double* %122
%124 = fsub double %123, %118
store double %124, double* %122
store i32 0, i32* %19
br label %125
125: ; preds = %161, %103
%126 = load i32, i32* %19
%127 = load i32, i32* %15
%128 = load i32, i32* %18
%129 = sub nsw i32 %127, %128
%130 = icmp slt i32 %126, %129
br i1 %130, label %131, label %164
131: ; preds = %125
%132 = load double*, double** %12
%133 = load i32, i32* %18
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds double, double* %132, i64 %134
%136 = load double, double* %135
%137 = load double*, double** %12
%138 = load i32, i32* %18
%139 = load i32, i32* %19
%140 = add nsw i32 %138, %139
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds double, double* %137, i64 %141
%143 = load double, double* %142
%144 = fmul double %136, %143
%145 = load double**, double*** %6
%146 = getelementptr inbounds double*, double** %145, i64 0
%147 = load double*, double** %146
%148 = getelementptr inbounds double, double* %147, i64 0
%149 = load double, double* %148
%150 = fdiv double %144, %149
%151 = load double**, double*** %13
%152 = load i32, i32* %18
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds double*, double** %151, i64 %153
%155 = load double*, double** %154
%156 = load i32, i32* %19
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds double, double* %155, i64 %157
%159 = load double, double* %158
%160 = fsub double %159, %150
store double %160, double* %158
br label %161
161: ; preds = %131
%162 = load i32, i32* %19
%163 = add nsw i32 %162, 1
store i32 %163, i32* %19
br label %125
164: ; preds = %125
br label %165
165: ; preds = %164, %102
%166 = load i32, i32* %18
%167 = add nsw i32 %166, 1
store i32 %167, i32* %18
br label %88
168: ; preds = %88
br label %169
169: ; preds = %168
%170 = load i32, i32* %17
%171 = add nsw i32 %170, 1
store i32 %171, i32* %17
br label %83
172: ; preds = %83
br label %173
173: ; preds = %172, %61
%174 = load double**, double*** %13
%175 = load double*, double** %14
%176 = load double*, double** %11
%177 = load i32, i32* %15
%178 = call i32 @_positive_solver_rec(double** %174, double* %175, double* %176, i32 %177)
store i32 %178, i32* %10
%179 = load i32, i32* %10
%180 = icmp slt i32 %179, 0
br i1 %180, label %181, label %185
181: ; preds = %173
%182 = load i32, i32* @stderr
%183 = call i32 @fprintf(i32 %182, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 58, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
%184 = load i32, i32* %10
store i32 %184, i32* %10
br label %244
185: ; preds = %173
%186 = load i32, i32* %10
%187 = icmp slt i32 %186, 0
br i1 %187, label %188, label %190
188: ; preds = %185
%189 = load i32, i32* %10
store i32 %189, i32* %5
br label %246
190: ; preds = %185
%191 = load double**, double*** %6
%192 = getelementptr inbounds double*, double** %191, i64 0
%193 = load double*, double** %192
%194 = getelementptr inbounds double, double* %193, i64 0
%195 = load double, double* %194
%196 = fcmp oeq double %195, 0.000000e+00
br i1 %196, label %197, label %209
197: ; preds = %190
%198 = load double*, double** %8
%199 = getelementptr inbounds double, double* %198, i64 0
%200 = load double, double* %199
%201 = fcmp une double %200, 0.000000e+00
br i1 %201, label %202, label %205
202: ; preds = %197
%203 = load i32, i32* @stderr
%204 = call i32 @fprintf(i32 %203, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 62, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
store i32 -1, i32* %10
br label %244
205: ; preds = %197
%206 = load double*, double** %7
%207 = getelementptr inbounds double, double* %206, i64 0
store double 0.000000e+00, double* %207
%208 = load i32, i32* %10
store i32 %208, i32* %5
br label %246
209: ; preds = %190
store double 0.000000e+00, double* %20
store i32 0, i32* %21
br label %210
210: ; preds = %227, %209
%211 = load i32, i32* %21
%212 = load i32, i32* %15
%213 = icmp slt i32 %211, %212
br i1 %213, label %214, label %230
214: ; preds = %210
%215 = load double*, double** %12
%216 = load i32, i32* %21
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds double, double* %215, i64 %217
%219 = load double, double* %218
%220 = load double*, double** %14
%221 = load i32, i32* %21
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds double, double* %220, i64 %222
%224 = load double, double* %223
%225 = load double, double* %20
%226 = call double @llvm.fmuladd.f64(double %219, double %224, double %225)
store double %226, double* %20
br label %227
227: ; preds = %214
%228 = load i32, i32* %21
%229 = add nsw i32 %228, 1
store i32 %229, i32* %21
br label %210
230: ; preds = %210
%231 = load double*, double** %8
%232 = getelementptr inbounds double, double* %231, i64 0
%233 = load double, double* %232
%234 = load double, double* %20
%235 = fsub double %233, %234
%236 = load double**, double*** %6
%237 = getelementptr inbounds double*, double** %236, i64 0
%238 = load double*, double** %237
%239 = getelementptr inbounds double, double* %238, i64 0
%240 = load double, double* %239
%241 = fdiv double %235, %240
%242 = load double*, double** %7
%243 = getelementptr inbounds double, double* %242, i64 0
store double %241, double* %243
br label %244
244: ; preds = %230, %202, %181, %43, %24
%245 = load i32, i32* %10
store i32 %245, i32* %5
br label %246
246: ; preds = %244, %205, %188, %49, %46
%247 = load i32, i32* %5
ret i32 %247
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [22 x i8] c"Line %3d of File %s \0A\00"
@.str.1 = [168 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/NerdWalletOSS/Q/refs/heads/master/OPERATORS/AX_EQUALS_B/src/positive_solver.c\00"
@_SC_NPROCESSORS_ONLN = global i32 0
define i32 @_positive_solver_rec(double** nocapture %0, double* nocapture %1, double* nocapture %2, i32 %3) {
%5 = icmp slt i32 %3, 1
br i1 %5, label %6, label %9
6: ; preds = %4
%7 = load i32, i32* @stderr
%8 = tail call i32 @fprintf(i32 %7, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 26, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
br label %218
9: ; preds = %4
%10 = icmp eq i32 %3, 1
br i1 %10, label %11, label %25
11: ; preds = %9
%12 = load double*, double** %0
%13 = load double, double* %12
%14 = fcmp oeq double %13, 0.000000e+00
%15 = load double, double* %2
br i1 %14, label %16, label %23
16: ; preds = %11
%17 = tail call double @abs(double %15)
%18 = fcmp ogt double %17, 1.000000e-03
br i1 %18, label %19, label %22
19: ; preds = %16
%20 = load i32, i32* @stderr
%21 = tail call i32 @fprintf(i32 %20, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 29, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
br label %218
22: ; preds = %16
store double 0.000000e+00, double* %1
br label %218
23: ; preds = %11
%24 = fdiv double %15, %13
store double %24, double* %1
br label %218
25: ; preds = %9
%26 = getelementptr inbounds double, double* %2, i64 1
%27 = load double*, double** %0
%28 = getelementptr inbounds double, double* %27, i64 1
%29 = getelementptr inbounds double*, double** %0, i64 1
%30 = getelementptr inbounds double, double* %1, i64 1
%31 = add nsw i32 %3, -1
%32 = load double, double* %27
%33 = fcmp une double %32, 0.000000e+00
br i1 %33, label %34, label %140
34: ; preds = %25
%35 = load i32, i32* @_SC_NPROCESSORS_ONLN
%36 = tail call i32 @sysconf(i32 %35)
%37 = icmp sgt i32 %36, 0
br i1 %37, label %38, label %140
38: ; preds = %34
%39 = zext i32 %31 to i64
br label %40
40: ; preds = %38, %42
%41 = phi i32 [ 0, %38 ], [ %43, %42 ]
br label %45
42: ; preds = %136
%43 = add nuw nsw i32 %41, 1
%44 = icmp eq i32 %43, %36
br i1 %44, label %140, label %40
45: ; preds = %40, %136
%46 = phi i64 [ 0, %40 ], [ %137, %136 ]
%47 = phi i32 [ %31, %40 ], [ %138, %136 ]
%48 = trunc i64 %46 to i32
%49 = sub i32 %31, %48
%50 = zext i32 %49 to i64
%51 = trunc i64 %46 to i32
%52 = sub i32 %31, %51
%53 = zext i32 %52 to i64
%54 = add nuw i64 %46, 1
%55 = getelementptr double, double* %27, i64 %54
%56 = getelementptr double, double* %55, i64 %53
%57 = add nuw i64 %46, 2
%58 = getelementptr double, double* %27, i64 %57
%59 = trunc i64 %46 to i32
%60 = sdiv i32 %59, %36
%61 = sub nsw i32 %59, %60
%62 = srem i32 %61, %36
%63 = icmp eq i32 %62, %41
br i1 %63, label %64, label %136
64: ; preds = %45
%65 = getelementptr inbounds double, double* %28, i64 %46
%66 = load double, double* %65
%67 = load double, double* %2
%68 = fmul double %66, %67
%69 = load double*, double** %0
%70 = load double, double* %69
%71 = fdiv double %68, %70
%72 = getelementptr inbounds double, double* %26, i64 %46
%73 = load double, double* %72
%74 = fsub double %73, %71
store double %74, double* %72
%75 = icmp sgt i32 %31, %59
br i1 %75, label %76, label %136
76: ; preds = %64
%77 = getelementptr inbounds double*, double** %29, i64 %46
%78 = load double*, double** %77
%79 = zext i32 %47 to i64
%80 = icmp ult i32 %49, 2
br i1 %80, label %120, label %81
81: ; preds = %76
%82 = getelementptr double, double* %78, i64 %53
%83 = getelementptr double, double* %69, i64 1
%84 = icmp ult double* %78, %56
%85 = icmp ult double* %55, %82
%86 = and i1 %84, %85
%87 = icmp ult double* %78, %58
%88 = icmp ult double* %55, %82
%89 = and i1 %87, %88
%90 = or i1 %86, %89
%91 = icmp ult double* %78, %83
%92 = icmp ult double* %69, %82
%93 = and i1 %91, %92
%94 = or i1 %90, %93
br i1 %94, label %120, label %95
95: ; preds = %81
%96 = and i64 %50, 4294967294
%97 = load double, double* %65
%98 = insertelement <2 x double> poison, double %97, i64 0
%99 = shufflevector <2 x double> %98, <2 x double> poison, <2 x i32> zeroinitializer
%100 = load double, double* %69
%101 = insertelement <2 x double> poison, double %100, i64 0
%102 = shufflevector <2 x double> %101, <2 x double> poison, <2 x i32> zeroinitializer
br label %103
103: ; preds = %103, %95
%104 = phi i64 [ 0, %95 ], [ %116, %103 ]
%105 = add nuw nsw i64 %104, %46
%106 = getelementptr inbounds double, double* %28, i64 %105
%107 = bitcast double* %106 to <2 x double>*
%108 = load <2 x double>, <2 x double>* %107
%109 = fmul <2 x double> %99, %108
%110 = fdiv <2 x double> %109, %102
%111 = getelementptr inbounds double, double* %78, i64 %104
%112 = bitcast double* %111 to <2 x double>*
%113 = load <2 x double>, <2 x double>* %112
%114 = fsub <2 x double> %113, %110
%115 = bitcast double* %111 to <2 x double>*
store <2 x double> %114, <2 x double>* %115
%116 = add nuw i64 %104, 2
%117 = icmp eq i64 %116, %96
br i1 %117, label %118, label %103
118: ; preds = %103
%119 = icmp eq i64 %96, %50
br i1 %119, label %136, label %120
120: ; preds = %81, %76, %118
%121 = phi i64 [ 0, %81 ], [ 0, %76 ], [ %96, %118 ]
br label %122
122: ; preds = %120, %122
%123 = phi i64 [ %134, %122 ], [ %121, %120 ]
%124 = load double, double* %65
%125 = add nuw nsw i64 %123, %46
%126 = getelementptr inbounds double, double* %28, i64 %125
%127 = load double, double* %126
%128 = fmul double %124, %127
%129 = load double, double* %69
%130 = fdiv double %128, %129
%131 = getelementptr inbounds double, double* %78, i64 %123
%132 = load double, double* %131
%133 = fsub double %132, %130
store double %133, double* %131
%134 = add nuw nsw i64 %123, 1
%135 = icmp eq i64 %134, %79
br i1 %135, label %136, label %122
136: ; preds = %122, %118, %64, %45
%137 = add nuw nsw i64 %46, 1
%138 = add i32 %47, -1
%139 = icmp eq i64 %137, %39
br i1 %139, label %42, label %45
140: ; preds = %42, %34, %25
%141 = tail call i32 @_positive_solver_rec(double** %29, double* %30, double* %26, i32 %31)
%142 = icmp slt i32 %141, 0
br i1 %142, label %143, label %146
143: ; preds = %140
%144 = load i32, i32* @stderr
%145 = tail call i32 @fprintf(i32 %144, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 58, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
br label %218
146: ; preds = %140
%147 = load double*, double** %0
%148 = load double, double* %147
%149 = fcmp oeq double %148, 0.000000e+00
br i1 %149, label %159, label %150
150: ; preds = %146
%151 = icmp sgt i32 %3, 1
br i1 %151, label %152, label %183
152: ; preds = %150
%153 = zext i32 %31 to i64
%154 = add nsw i64 %153, -1
%155 = and i64 %153, 3
%156 = icmp ult i64 %154, 3
br i1 %156, label %166, label %157
157: ; preds = %152
%158 = and i64 %153, 4294967292
br label %188
159: ; preds = %146
%160 = load double, double* %2
%161 = fcmp une double %160, 0.000000e+00
br i1 %161, label %162, label %165
162: ; preds = %159
%163 = load i32, i32* @stderr
%164 = tail call i32 @fprintf(i32 %163, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i32 62, i8* getelementptr inbounds ([168 x i8], [168 x i8]* @.str.1, i64 0, i64 0))
br label %218
165: ; preds = %159
store double 0.000000e+00, double* %1
br label %218
166: ; preds = %188, %152
%167 = phi double [ undef, %152 ], [ %214, %188 ]
%168 = phi i64 [ 0, %152 ], [ %215, %188 ]
%169 = phi double [ 0.000000e+00, %152 ], [ %214, %188 ]
%170 = icmp eq i64 %155, 0
br i1 %170, label %183, label %171
171: ; preds = %166, %171
%172 = phi i64 [ %180, %171 ], [ %168, %166 ]
%173 = phi double [ %179, %171 ], [ %169, %166 ]
%174 = phi i64 [ %181, %171 ], [ 0, %166 ]
%175 = getelementptr inbounds double, double* %28, i64 %172
%176 = load double, double* %175
%177 = getelementptr inbounds double, double* %30, i64 %172
%178 = load double, double* %177
%179 = tail call double @llvm.fmuladd.f64(double %176, double %178, double %173)
%180 = add nuw nsw i64 %172, 1
%181 = add i64 %174, 1
%182 = icmp eq i64 %181, %155
br i1 %182, label %183, label %171
183: ; preds = %166, %171, %150
%184 = phi double [ 0.000000e+00, %150 ], [ %167, %166 ], [ %179, %171 ]
%185 = load double, double* %2
%186 = fsub double %185, %184
%187 = fdiv double %186, %148
store double %187, double* %1
br label %218
188: ; preds = %188, %157
%189 = phi i64 [ 0, %157 ], [ %215, %188 ]
%190 = phi double [ 0.000000e+00, %157 ], [ %214, %188 ]
%191 = phi i64 [ 0, %157 ], [ %216, %188 ]
%192 = getelementptr inbounds double, double* %28, i64 %189
%193 = load double, double* %192
%194 = getelementptr inbounds double, double* %30, i64 %189
%195 = load double, double* %194
%196 = tail call double @llvm.fmuladd.f64(double %193, double %195, double %190)
%197 = or i64 %189, 1
%198 = getelementptr inbounds double, double* %28, i64 %197
%199 = load double, double* %198
%200 = getelementptr inbounds double, double* %30, i64 %197
%201 = load double, double* %200
%202 = tail call double @llvm.fmuladd.f64(double %199, double %201, double %196)
%203 = or i64 %189, 2
%204 = getelementptr inbounds double, double* %28, i64 %203
%205 = load double, double* %204
%206 = getelementptr inbounds double, double* %30, i64 %203
%207 = load double, double* %206
%208 = tail call double @llvm.fmuladd.f64(double %205, double %207, double %202)
%209 = or i64 %189, 3
%210 = getelementptr inbounds double, double* %28, i64 %209
%211 = load double, double* %210
%212 = getelementptr inbounds double, double* %30, i64 %209
%213 = load double, double* %212
%214 = tail call double @llvm.fmuladd.f64(double %211, double %213, double %208)
%215 = add nuw nsw i64 %189, 4
%216 = add i64 %191, 4
%217 = icmp eq i64 %216, %158
br i1 %217, label %166, label %188
218: ; preds = %6, %19, %143, %162, %183, %165, %23, %22
%219 = phi i32 [ 0, %22 ], [ 0, %23 ], [ %141, %165 ], [ -1, %6 ], [ -1, %19 ], [ %141, %143 ], [ -1, %162 ], [ %141, %183 ]
ret i32 %219
}