#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 */
typedef int jj;
typedef int j;
typedef int ii;
typedef int i;

/* Variables and functions */
double const pow(double, int);
void laxf_scheme_2d(double *Q, double **ffx, double **ffy, double **nFx,
                    double **nFy, int m, int n, double dx, double dy,
                    double dt) {
  int i, j, k;
  int x, y;
  for (i = 1; i < n; i++) {
    int ii;
    const double g = 9.81;
#pragma omp for private(ii)
    for (ii = 0; ii < m; ii++) {
      ffx[0][ii] = Q[((i) + n * ((ii) + m * (1)))];
      ffx[1][ii] = (pow(Q[((i) + n * ((ii) + m * (1)))], 2) /
                    Q[((i) + n * ((ii) + m * (0)))]) +
                   (g * pow(Q[((i) + n * ((ii) + m * (0)))], 2)) / 2.0;
      ffx[2][ii] =
          (Q[((i) + n * ((ii) + m * (1)))] * Q[((i) + n * ((ii) + m * (2)))]) /
          Q[((i) + n * ((ii) + m * (0)))];
    }
#pragma omp for simd
    for (j = 1; j < m; j++) {
      for (k = 0; k < 3; k++)
        nFx[k][j] = 0.5 * ((ffx[k][j - 1] + ffx[k][j]) -
                           dx / dt *
                               (Q[((i) + n * ((j) + m * (k)))] -
                                Q[((i) + n * ((j - 1) + m * (k)))]));
    }
#pragma omp for simd
    for (j = 1; j < m - 1; j++) {
      for (k = 0; k < 3; k++)
        Q[((i) + n * ((j) + m * (k)))] =
            Q[((i) + n * ((j) + m * (k)))] -
            dt / dx * ((nFx[k][j + 1] - nFx[k][j]));
    }
  }
  for (i = 1; i < m; i++) {
    int jj;
    const double g = 9.81;
#pragma omp for private(jj)
    for (jj = 0; jj < n; jj++) {
      ffy[0][jj] = Q[((jj) + n * ((i) + m * (2)))];
      ffy[1][jj] =
          (Q[((jj) + n * ((i) + m * (1)))] * Q[((jj) + n * ((i) + m * (2)))]) /
          Q[((jj) + n * ((i) + m * (0)))];
      ffy[2][jj] = (pow(Q[((jj) + n * ((i) + m * (2)))], 2) /
                    Q[((jj) + n * ((i) + m * (0)))]) +
                   (g * pow(Q[((jj) + n * ((i) + m * (0)))], 2)) / 2.0;
    }
#pragma omp for simd
    for (j = 1; j < n; j++) {
      for (k = 0; k < 3; k++)
        nFy[k][j] = 0.5 * ((ffy[k][j - 1] + ffy[k][j]) -
                           dy / dt *
                               (Q[((j) + n * ((i) + m * (k)))] -
                                Q[((j - 1) + n * ((i) + m * (k)))]));
    }
#pragma omp for simd
    for (j = 1; j < n - 1; j++) {
      for (k = 0; k < 3; k++)
        Q[((j) + n * ((i) + m * (k)))] =
            Q[((j) + n * ((i) + m * (k)))] -
            dt / dy * ((nFy[k][j + 1] - nFy[k][j]));
    }
  }
}


x86 assembly (clang, -O0):
<laxf_scheme_2d>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
movsd  %xmm0,-0x38(%rbp)
movsd  %xmm1,-0x40(%rbp)
movsd  %xmm2,-0x48(%rbp)
movl   $0x1,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    14df <laxf_scheme_2d+0x3cf>
movsd  0xea0(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    12dd <laxf_scheme_2d+0x1cd>
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x60(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x0,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x60(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x60(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x0,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x60(%rbp),%esi
imul   $0x0,-0x2c(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x60(%rbp),%esi
imul   $0x0,-0x2c(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
movaps %xmm0,%xmm2
movsd  -0x80(%rbp),%xmm0
movsd  0xdcb(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xdcf(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x60(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x60(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x0,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x60(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x1,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x60(%rbp),%esi
imul   $0x0,-0x2c(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x60(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    116c <laxf_scheme_2d+0x5c>
movl   $0x1,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    13e4 <laxf_scheme_2d+0x2d4>
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    13d1 <laxf_scheme_2d+0x2c1>
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x50(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm1
divsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x50(%rbp),%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x50(%rbp),%esi
sub    $0x1,%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc5e(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    12f7 <laxf_scheme_2d+0x1e7>
jmp    13d6 <laxf_scheme_2d+0x2c6>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    12e4 <laxf_scheme_2d+0x1d4>
movl   $0x1,-0x50(%rbp)
mov    -0x50(%rbp),%eax
mov    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    14cc <laxf_scheme_2d+0x3bc>
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    14b9 <laxf_scheme_2d+0x3a9>
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x50(%rbp),%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x48(%rbp),%xmm0
divsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x50(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x4c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x50(%rbp),%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1403 <laxf_scheme_2d+0x2f3>
jmp    14be <laxf_scheme_2d+0x3ae>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    13eb <laxf_scheme_2d+0x2db>
jmp    14d1 <laxf_scheme_2d+0x3c1>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    114c <laxf_scheme_2d+0x3c>
movl   $0x1,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    187f <laxf_scheme_2d+0x76f>
movsd  0xb06(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    167d <laxf_scheme_2d+0x56d>
mov    -0x8(%rbp),%rax
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x1,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
movslq -0x6c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x0,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x1,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
imul   $0x0,-0x2c(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x6c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rax
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
shl    $0x1,%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
mov    -0x8(%rbp),%rax
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
imul   $0x0,-0x2c(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x8(%rbp),%rax
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
imul   $0x0,-0x2c(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
movaps %xmm0,%xmm2
movsd  -0x88(%rbp),%xmm0
ff
movsd  0x9b6(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x9ba(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x6c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1506 <laxf_scheme_2d+0x3f6>
movl   $0x1,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    1784 <laxf_scheme_2d+0x674>
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    1771 <laxf_scheme_2d+0x661>
mov    -0x18(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x50(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  -0x40(%rbp),%xmm1
divsd  -0x48(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%ecx
sub    $0x1,%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x8be(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1697 <laxf_scheme_2d+0x587>
jmp    1776 <laxf_scheme_2d+0x666>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1684 <laxf_scheme_2d+0x574>
movl   $0x1,-0x50(%rbp)
mov    -0x50(%rbp),%eax
mov    0x10(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    186c <laxf_scheme_2d+0x75c>
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    1859 <laxf_scheme_2d+0x749>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x48(%rbp),%xmm0
divsd  -0x40(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x50(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x28(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    0x10(%rbp),%edx
mov    -0x4c(%rbp),%esi
mov    -0x2c(%rbp),%edi
imul   -0x54(%rbp),%edi
add    %edi,%esi
imul   %esi,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    17a3 <laxf_scheme_2d+0x693>
jmp    185e <laxf_scheme_2d+0x74e>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    178b <laxf_scheme_2d+0x67b>
jmp    1871 <laxf_scheme_2d+0x761>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    14e6 <laxf_scheme_2d+0x3d6>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<laxf_scheme_2d>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%rsp
movapd %xmm1,0xc0(%rsp)
mov    %r8,0x50(%rsp)
mov    %rcx,0x48(%rsp)
mov    %rsi,%r14
mov    %rdi,0x40(%rsp)
mov    0x130(%rsp),%eax
mov    %eax,%esi
mov    %r9d,%ecx
mov    %rcx,0x18(%rsp)
cmp    $0x2,%eax
mov    %rdx,0x68(%rsp)
mov    %rsi,0x28(%rsp)
jl     14f5 <laxf_scheme_2d+0x3e5>
lea    (%r9,%r9,1),%eax
movapd 0xe94(%rip),%xmm1
movapd %xmm0,%xmm3
xorpd  %xmm1,%xmm3
divsd  %xmm2,%xmm3
lea    -0x1(%r9),%r8d
xorpd  %xmm2,%xmm1
divsd  %xmm0,%xmm1
movslq %r9d,%r13
movslq %eax,%rbp
imul   %rsi,%rbp
mov    0x40(%rsp),%rdx
lea    0x8(%rdx),%rax
mov    %rax,0x60(%rsp)
lea    0x0(,%rsi,8),%r12
lea    0x1(%r13),%rbx
lea    0x1(,%r13,1),%rcx
add    %r13,%rcx
imul   %rsi,%r13
imul   %rsi,%rbx
imul   %rsi,%rcx
mov    %r13,%rax
shl    $0x4,%rax
mov    %rax,0x80(%rsp)
mov    0x18(%rsp),%rax
lea    -0x8(,%rax,8),%rdi
ff
mov    %rdi,0x30(%rsp)
lea    0x0(,%rax,8),%rax
mov    %rax,0x38(%rsp)
mov    %rbx,0xa0(%rsp)
lea    0x8(%rdx,%rbx,8),%r11
lea    0x8(%rdx,%rcx,8),%r15
lea    0x8(%rdx,%rsi,8),%r10
lea    -0x8(,%r8,8),%rax
ff
mov    %rax,0x90(%rsp)
mov    $0x1,%eax
movsd  0xdf7(%rip),%xmm4
mov    %rdx,0x58(%rsp)
movapd %xmm2,0x70(%rsp)
mov    %r9,0x8(%rsp)
movapd %xmm1,0xe0(%rsp)
movapd %xmm3,0xd0(%rsp)
mov    %rcx,0x98(%rsp)
jmp    1282 <laxf_scheme_2d+0x172>
nopl   (%rax)
mov    0xa8(%rsp),%rax
add    $0x1,%rax
addq   $0x8,0x60(%rsp)
addq   $0x8,0x58(%rsp)
add    $0x8,%r11
add    $0x8,%r15
add    $0x8,%r10
cmp    %r8,%rax
mov    0x8(%rsp),%r9
je     14f5 <laxf_scheme_2d+0x3e5>
mov    %rax,0xa8(%rsp)
mov    %r10,0xb0(%rsp)
mov    %r15,0xb8(%rsp)
mov    %r11,0x20(%rsp)
test   %r9d,%r9d
jle    133e <laxf_scheme_2d+0x22e>
xor    %ebx,%ebx
mov    0x60(%rsp),%r15
nop
movsd  (%r15,%r13,8),%xmm0
mov    (%r14),%rax
movsd  %xmm0,(%rax,%rbx,1)
movsd  (%r15,%r13,8),%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
movapd %xmm0,%xmm1
movsd  (%r15),%xmm0
divsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
mov    $0x2,%edi
call   1030 <pow@plt>
movsd  0xd25(%rip),%xmm4
movsd  0xd15(%rip),%xmm1
mulsd  %xmm1,%xmm0
mulsd  %xmm4,%xmm0
addsd  0x10(%rsp),%xmm0
mov    0x8(%r14),%rax
movsd  %xmm0,(%rax,%rbx,1)
movsd  (%r15,%r13,8),%xmm0
mulsd  (%r15,%rbp,8),%xmm0
divsd  (%r15),%xmm0
mov    0x10(%r14),%rax
movsd  %xmm0,(%rax,%rbx,1)
add    %r12,%r15
add    $0x8,%rbx
cmp    %rbx,0x38(%rsp)
jne    12b0 <laxf_scheme_2d+0x1a0>
cmpl   $0x2,0x8(%rsp)
movapd 0xd0(%rsp),%xmm3
mov    0xa0(%rsp),%r8
mov    0x98(%rsp),%r11
jl     1430 <laxf_scheme_2d+0x320>
mov    (%r14),%rax
mov    0x8(%r14),%rcx
mov    0x48(%rsp),%rdx
mov    (%rdx),%rsi
mov    %rsi,0x10(%rsp)
mov    0x8(%rdx),%r10
mov    0x10(%r14),%rdi
mov    0x10(%rdx),%r9
xor    %edx,%edx
mov    0x58(%rsp),%rsi
nopl   0x0(%rax)
movsd  (%rax,%rdx,1),%xmm0
addsd  0x8(%rax,%rdx,1),%xmm0
movsd  0x8(%rsi,%r12,1),%xmm1
subsd  0x8(%rsi),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm4,%xmm1
mov    0x10(%rsp),%r15
movsd  %xmm1,0x8(%r15,%rdx,1)
movsd  (%rcx,%rdx,1),%xmm0
addsd  0x8(%rcx,%rdx,1),%xmm0
movsd  0x8(%rsi,%r8,8),%xmm1
subsd  0x8(%rsi,%r13,8),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm4,%xmm1
movsd  %xmm1,0x8(%r10,%rdx,1)
movsd  0x8(%rsi,%r11,8),%xmm0
mov    0x80(%rsp),%rbx
subsd  0x8(%rsi,%rbx,1),%xmm0
add    %r12,%rsi
movsd  (%rdi,%rdx,1),%xmm1
addsd  0x8(%rdi,%rdx,1),%xmm1
mulsd  %xmm3,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movsd  %xmm0,0x8(%r9,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,0x30(%rsp)
jne    1390 <laxf_scheme_2d+0x280>
cmpl   $0x3,0x8(%rsp)
movapd 0x70(%rsp),%xmm2
mov    0x68(%rsp),%rdx
mov    0x28(%rsp),%r8
movapd 0xe0(%rsp),%xmm1
mov    0x20(%rsp),%r11
mov    0xb8(%rsp),%r15
mov    0xb0(%rsp),%r10
mov    0x90(%rsp),%r9
jl     1250 <laxf_scheme_2d+0x140>
mov    0x48(%rsp),%rsi
mov    (%rsi),%rax
mov    0x8(%rsi),%rcx
mov    0x10(%rsi),%rbx
xor    %esi,%esi
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nop
movsd  0x10(%rax,%rsi,1),%xmm0
subsd  0x8(%rax,%rsi,1),%xmm0
mulsd  %xmm1,%xmm0
addsd  (%r10,%rdi,8),%xmm0
movsd  %xmm0,(%r10,%rdi,8)
movsd  0x10(%rcx,%rsi,1),%xmm0
subsd  0x8(%rcx,%rsi,1),%xmm0
mulsd  %xmm1,%xmm0
addsd  (%r11,%rdi,8),%xmm0
movsd  %xmm0,(%r11,%rdi,8)
movsd  0x10(%rbx,%rsi,1),%xmm0
subsd  0x8(%rbx,%rsi,1),%xmm0
mulsd  %xmm1,%xmm0
addsd  (%r15,%rdi,8),%xmm0
movsd  %xmm0,(%r15,%rdi,8)
add    %r8,%rdi
add    $0x8,%rsi
cmp    %rsi,%r9
jne    1490 <laxf_scheme_2d+0x380>
jmp    1250 <laxf_scheme_2d+0x140>
cmp    $0x2,%r9d
mov    0x130(%rsp),%r11d
jl     1802 <laxf_scheme_2d+0x6f2>
add    %r9d,%r9d
movapd 0xaee(%rip),%xmm0
movapd 0xc0(%rsp),%xmm1
movapd %xmm1,%xmm3
xorpd  %xmm0,%xmm3
divsd  %xmm2,%xmm3
lea    -0x1(%r11),%r8d
xorpd  %xmm0,%xmm2
divsd  %xmm1,%xmm2
movslq %r11d,%rcx
movslq %r9d,%rdi
mov    0x40(%rsp),%rax
lea    (%rax,%rcx,8),%rbx
lea    0x0(,%rcx,8),%rsi
mov    %rsi,0x30(%rsp)
mov    0x18(%rsp),%r9
lea    0x1(%r9),%rsi
imul   %rcx,%rsi
lea    (%rax,%rsi,8),%rbp
or     $0x1,%rdi
imul   %rcx,%rdi
lea    (%rax,%rdi,8),%r15
lea    (%r9,%r9,1),%rsi
add    $0x1,%rsi
imul   %rcx,%rsi
lea    (%rax,%rsi,8),%r12
add    $0x8,%r12
mov    0x28(%rsp),%rcx
lea    -0x8(,%rcx,8),%r14
ff
lea    -0x8(,%r8,8),%r8
ff
mov    $0x1,%ecx
movsd  0xa76(%rip),%xmm4
movapd %xmm2,0x70(%rsp)
movapd %xmm3,0x80(%rsp)
mov    %r14,0x8(%rsp)
mov    %r8,0x20(%rsp)
jmp    15e5 <laxf_scheme_2d+0x4d5>
nopl   (%rax)
mov    0x38(%rsp),%rcx
add    $0x1,%rcx
mov    0x30(%rsp),%rax
add    %rax,%rbx
add    %rax,%rbp
add    %rax,%r15
add    %rax,%r12
cmp    0x18(%rsp),%rcx
je     1802 <laxf_scheme_2d+0x6f2>
mov    %rcx,0x38(%rsp)
test   %r11d,%r11d
mov    0x28(%rsp),%r14
jle    1694 <laxf_scheme_2d+0x584>
xor    %r13d,%r13d
nopl   0x0(%rax,%rax,1)
movsd  (%r15,%r13,8),%xmm0
mov    (%rdx),%rax
movsd  %xmm0,(%rax,%r13,8)
movsd  0x0(%rbp,%r13,8),%xmm0
mulsd  (%r15,%r13,8),%xmm0
divsd  (%rbx,%r13,8),%xmm0
mov    0x8(%rdx),%rax
movsd  %xmm0,(%rax,%r13,8)
movsd  (%r15,%r13,8),%xmm0
mov    $0x2,%edi
call   1030 <pow@plt>
movapd %xmm0,%xmm1
movsd  (%rbx,%r13,8),%xmm0
divsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
mov    $0x2,%edi
call   1030 <pow@plt>
movsd  0x9b6(%rip),%xmm4
movsd  0x9a6(%rip),%xmm1
mov    0x68(%rsp),%rdx
mulsd  %xmm1,%xmm0
mulsd  %xmm4,%xmm0
addsd  0x10(%rsp),%xmm0
mov    0x10(%rdx),%rax
movsd  %xmm0,(%rax,%r13,8)
add    $0x1,%r13
cmp    %r13,%r14
jne    1600 <laxf_scheme_2d+0x4f0>
mov    0x130(%rsp),%r11d
cmp    $0x2,%r11d
movapd 0x80(%rsp),%xmm3
mov    0x8(%rsp),%r14
jl     176b <laxf_scheme_2d+0x65b>
mov    (%rdx),%rax
mov    0x8(%rdx),%rcx
mov    0x50(%rsp),%rsi
mov    (%rsi),%r8
mov    0x8(%rsi),%r9
mov    0x10(%rdx),%rdi
mov    0x10(%rsi),%r10
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%rax,%rsi,1),%xmm0
addsd  0x8(%rax,%rsi,1),%xmm0
movsd  0x8(%rbx,%rsi,1),%xmm1
subsd  (%rbx,%rsi,1),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm4,%xmm1
movsd  %xmm1,0x8(%r8,%rsi,1)
movsd  (%rcx,%rsi,1),%xmm0
addsd  0x8(%rcx,%rsi,1),%xmm0
movsd  0x8(%rbp,%rsi,1),%xmm1
subsd  0x0(%rbp,%rsi,1),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm4,%xmm1
movsd  %xmm1,0x8(%r9,%rsi,1)
movsd  (%rdi,%rsi,1),%xmm0
addsd  0x8(%rdi,%rsi,1),%xmm0
movsd  (%r12,%rsi,1),%xmm1
subsd  -0x8(%r12,%rsi,1),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm4,%xmm1
movsd  %xmm1,0x8(%r10,%rsi,1)
add    $0x8,%rsi
cmp    %rsi,%r14
jne    16e0 <laxf_scheme_2d+0x5d0>
cmp    $0x3,%r11d
movapd 0x70(%rsp),%xmm2
mov    0x20(%rsp),%r8
jl     15c0 <laxf_scheme_2d+0x4b0>
mov    0x50(%rsp),%rsi
mov    (%rsi),%rax
mov    0x8(%rsi),%rcx
mov    0x10(%rsi),%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x10(%rax,%rsi,1),%xmm0
subsd  0x8(%rax,%rsi,1),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x8(%rbx,%rsi,1),%xmm0
movsd  %xmm0,0x8(%rbx,%rsi,1)
movsd  0x10(%rcx,%rsi,1),%xmm0
subsd  0x8(%rcx,%rsi,1),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x8(%rbp,%rsi,1),%xmm0
movsd  %xmm0,0x8(%rbp,%rsi,1)
movsd  0x10(%rdi,%rsi,1),%xmm0
subsd  0x8(%rdi,%rsi,1),%xmm0
mulsd  %xmm2,%xmm0
addsd  (%r12,%rsi,1),%xmm0
movsd  %xmm0,(%r12,%rsi,1)
add    $0x8,%rsi
cmp    %rsi,%r8
jne    17a0 <laxf_scheme_2d+0x690>
jmp    15c0 <laxf_scheme_2d+0x4b0>
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @laxf_scheme_2d(double* %0, double** %1, double** %2, double** %3, double** %4, i32 %5, i32 %6, double %7, double %8, double %9) {
%11 = alloca double*
%12 = alloca double**
%13 = alloca double**
%14 = alloca double**
%15 = alloca double**
%16 = alloca i32
%17 = alloca i32
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca double
%28 = alloca i32
%29 = alloca double
store double* %0, double** %11
store double** %1, double*** %12
store double** %2, double*** %13
store double** %3, double*** %14
store double** %4, double*** %15
store i32 %5, i32* %16
store i32 %6, i32* %17
store double %7, double* %18
store double %8, double* %19
store double %9, double* %20
store i32 1, i32* %21
br label %30
30: ; preds = %301, %10
%31 = load i32, i32* %21
%32 = load i32, i32* %17
%33 = icmp slt i32 %31, %32
br i1 %33, label %34, label %304
34: ; preds = %30
store double 9.810000e+00, double* %27
store i32 0, i32* %26
br label %35
35: ; preds = %150, %34
%36 = load i32, i32* %26
%37 = load i32, i32* %16
%38 = icmp slt i32 %36, %37
br i1 %38, label %39, label %153
39: ; preds = %35
%40 = load double*, double** %11
%41 = load i32, i32* %21
%42 = load i32, i32* %17
%43 = load i32, i32* %26
%44 = load i32, i32* %16
%45 = mul nsw i32 %44, 1
%46 = add nsw i32 %43, %45
%47 = mul nsw i32 %42, %46
%48 = add nsw i32 %41, %47
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds double, double* %40, i64 %49
%51 = load double, double* %50
%52 = load double**, double*** %12
%53 = getelementptr inbounds double*, double** %52, i64 0
%54 = load double*, double** %53
%55 = load i32, i32* %26
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds double, double* %54, i64 %56
store double %51, double* %57
%58 = load double*, double** %11
%59 = load i32, i32* %21
%60 = load i32, i32* %17
%61 = load i32, i32* %26
%62 = load i32, i32* %16
%63 = mul nsw i32 %62, 1
%64 = add nsw i32 %61, %63
%65 = mul nsw i32 %60, %64
%66 = add nsw i32 %59, %65
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds double, double* %58, i64 %67
%69 = load double, double* %68
%70 = call double @pow(double %69, i32 2)
%71 = load double*, double** %11
%72 = load i32, i32* %21
%73 = load i32, i32* %17
%74 = load i32, i32* %26
%75 = load i32, i32* %16
%76 = mul nsw i32 %75, 0
%77 = add nsw i32 %74, %76
%78 = mul nsw i32 %73, %77
%79 = add nsw i32 %72, %78
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds double, double* %71, i64 %80
%82 = load double, double* %81
%83 = fdiv double %70, %82
%84 = load double*, double** %11
%85 = load i32, i32* %21
%86 = load i32, i32* %17
%87 = load i32, i32* %26
%88 = load i32, i32* %16
%89 = mul nsw i32 %88, 0
%90 = add nsw i32 %87, %89
%91 = mul nsw i32 %86, %90
%92 = add nsw i32 %85, %91
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %84, i64 %93
%95 = load double, double* %94
%96 = call double @pow(double %95, i32 2)
%97 = fmul double 9.810000e+00, %96
%98 = fdiv double %97, 2.000000e+00
%99 = fadd double %83, %98
%100 = load double**, double*** %12
%101 = getelementptr inbounds double*, double** %100, i64 1
%102 = load double*, double** %101
%103 = load i32, i32* %26
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds double, double* %102, i64 %104
store double %99, double* %105
%106 = load double*, double** %11
%107 = load i32, i32* %21
%108 = load i32, i32* %17
%109 = load i32, i32* %26
%110 = load i32, i32* %16
%111 = mul nsw i32 %110, 1
%112 = add nsw i32 %109, %111
%113 = mul nsw i32 %108, %112
%114 = add nsw i32 %107, %113
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds double, double* %106, i64 %115
%117 = load double, double* %116
%118 = load double*, double** %11
%119 = load i32, i32* %21
%120 = load i32, i32* %17
%121 = load i32, i32* %26
%122 = load i32, i32* %16
%123 = mul nsw i32 %122, 2
%124 = add nsw i32 %121, %123
%125 = mul nsw i32 %120, %124
%126 = add nsw i32 %119, %125
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds double, double* %118, i64 %127
%129 = load double, double* %128
%130 = fmul double %117, %129
%131 = load double*, double** %11
%132 = load i32, i32* %21
%133 = load i32, i32* %17
%134 = load i32, i32* %26
%135 = load i32, i32* %16
%136 = mul nsw i32 %135, 0
%137 = add nsw i32 %134, %136
%138 = mul nsw i32 %133, %137
%139 = add nsw i32 %132, %138
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds double, double* %131, i64 %140
%142 = load double, double* %141
%143 = fdiv double %130, %142
%144 = load double**, double*** %12
%145 = getelementptr inbounds double*, double** %144, i64 2
%146 = load double*, double** %145
%147 = load i32, i32* %26
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds double, double* %146, i64 %148
store double %143, double* %149
br label %150
150: ; preds = %39
%151 = load i32, i32* %26
%152 = add nsw i32 %151, 1
store i32 %152, i32* %26
br label %35
153: ; preds = %35
store i32 1, i32* %22
br label %154
154: ; preds = %229, %153
%155 = load i32, i32* %22
%156 = load i32, i32* %16
%157 = icmp slt i32 %155, %156
br i1 %157, label %158, label %232
158: ; preds = %154
store i32 0, i32* %23
br label %159
159: ; preds = %225, %158
%160 = load i32, i32* %23
%161 = icmp slt i32 %160, 3
br i1 %161, label %162, label %228
162: ; preds = %159
%163 = load double**, double*** %12
%164 = load i32, i32* %23
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds double*, double** %163, i64 %165
%167 = load double*, double** %166
%168 = load i32, i32* %22
%169 = sub nsw i32 %168, 1
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds double, double* %167, i64 %170
%172 = load double, double* %171
%173 = load double**, double*** %12
%174 = load i32, i32* %23
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds double*, double** %173, i64 %175
%177 = load double*, double** %176
%178 = load i32, i32* %22
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds double, double* %177, i64 %179
%181 = load double, double* %180
%182 = fadd double %172, %181
%183 = load double, double* %18
%184 = load double, double* %20
%185 = fdiv double %183, %184
%186 = load double*, double** %11
%187 = load i32, i32* %21
%188 = load i32, i32* %17
%189 = load i32, i32* %22
%190 = load i32, i32* %16
%191 = load i32, i32* %23
%192 = mul nsw i32 %190, %191
%193 = add nsw i32 %189, %192
%194 = mul nsw i32 %188, %193
%195 = add nsw i32 %187, %194
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds double, double* %186, i64 %196
%198 = load double, double* %197
%199 = load double*, double** %11
%200 = load i32, i32* %21
%201 = load i32, i32* %17
%202 = load i32, i32* %22
%203 = sub nsw i32 %202, 1
%204 = load i32, i32* %16
%205 = load i32, i32* %23
%206 = mul nsw i32 %204, %205
%207 = add nsw i32 %203, %206
%208 = mul nsw i32 %201, %207
%209 = add nsw i32 %200, %208
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds double, double* %199, i64 %210
%212 = load double, double* %211
%213 = fsub double %198, %212
%214 = fneg double %185
%215 = call double @llvm.fmuladd.f64(double %214, double %213, double %182)
%216 = fmul double 5.000000e-01, %215
%217 = load double**, double*** %14
%218 = load i32, i32* %23
%219 = sext i32 %218 to i64
%220 = getelementptr inbounds double*, double** %217, i64 %219
%221 = load double*, double** %220
%222 = load i32, i32* %22
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds double, double* %221, i64 %223
store double %216, double* %224
br label %225
225: ; preds = %162
%226 = load i32, i32* %23
%227 = add nsw i32 %226, 1
store i32 %227, i32* %23
br label %159
228: ; preds = %159
br label %229
229: ; preds = %228
%230 = load i32, i32* %22
%231 = add nsw i32 %230, 1
store i32 %231, i32* %22
br label %154
232: ; preds = %154
store i32 1, i32* %22
br label %233
233: ; preds = %297, %232
%234 = load i32, i32* %22
%235 = load i32, i32* %16
%236 = sub nsw i32 %235, 1
%237 = icmp slt i32 %234, %236
br i1 %237, label %238, label %300
238: ; preds = %233
store i32 0, i32* %23
br label %239
239: ; preds = %293, %238
%240 = load i32, i32* %23
%241 = icmp slt i32 %240, 3
br i1 %241, label %242, label %296
242: ; preds = %239
%243 = load double*, double** %11
%244 = load i32, i32* %21
%245 = load i32, i32* %17
%246 = load i32, i32* %22
%247 = load i32, i32* %16
%248 = load i32, i32* %23
%249 = mul nsw i32 %247, %248
%250 = add nsw i32 %246, %249
%251 = mul nsw i32 %245, %250
%252 = add nsw i32 %244, %251
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds double, double* %243, i64 %253
%255 = load double, double* %254
%256 = load double, double* %20
%257 = load double, double* %18
%258 = fdiv double %256, %257
%259 = load double**, double*** %14
%260 = load i32, i32* %23
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds double*, double** %259, i64 %261
%263 = load double*, double** %262
%264 = load i32, i32* %22
%265 = add nsw i32 %264, 1
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds double, double* %263, i64 %266
%268 = load double, double* %267
%269 = load double**, double*** %14
%270 = load i32, i32* %23
%271 = sext i32 %270 to i64
%272 = getelementptr inbounds double*, double** %269, i64 %271
%273 = load double*, double** %272
%274 = load i32, i32* %22
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds double, double* %273, i64 %275
%277 = load double, double* %276
%278 = fsub double %268, %277
%279 = fneg double %258
%280 = call double @llvm.fmuladd.f64(double %279, double %278, double %255)
%281 = load double*, double** %11
%282 = load i32, i32* %21
%283 = load i32, i32* %17
%284 = load i32, i32* %22
%285 = load i32, i32* %16
%286 = load i32, i32* %23
%287 = mul nsw i32 %285, %286
%288 = add nsw i32 %284, %287
%289 = mul nsw i32 %283, %288
%290 = add nsw i32 %282, %289
%291 = sext i32 %290 to i64
%292 = getelementptr inbounds double, double* %281, i64 %291
store double %280, double* %292
br label %293
293: ; preds = %242
%294 = load i32, i32* %23
%295 = add nsw i32 %294, 1
store i32 %295, i32* %23
br label %239
296: ; preds = %239
br label %297
297: ; preds = %296
%298 = load i32, i32* %22
%299 = add nsw i32 %298, 1
store i32 %299, i32* %22
br label %233
300: ; preds = %233
br label %301
301: ; preds = %300
%302 = load i32, i32* %21
%303 = add nsw i32 %302, 1
store i32 %303, i32* %21
br label %30
304: ; preds = %30
store i32 1, i32* %21
br label %305
305: ; preds = %576, %304
%306 = load i32, i32* %21
%307 = load i32, i32* %16
%308 = icmp slt i32 %306, %307
br i1 %308, label %309, label %579
309: ; preds = %305
store double 9.810000e+00, double* %29
store i32 0, i32* %28
br label %310
310: ; preds = %425, %309
%311 = load i32, i32* %28
%312 = load i32, i32* %17
%313 = icmp slt i32 %311, %312
br i1 %313, label %314, label %428
314: ; preds = %310
%315 = load double*, double** %11
%316 = load i32, i32* %28
%317 = load i32, i32* %17
%318 = load i32, i32* %21
%319 = load i32, i32* %16
%320 = mul nsw i32 %319, 2
%321 = add nsw i32 %318, %320
%322 = mul nsw i32 %317, %321
%323 = add nsw i32 %316, %322
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds double, double* %315, i64 %324
%326 = load double, double* %325
%327 = load double**, double*** %13
%328 = getelementptr inbounds double*, double** %327, i64 0
%329 = load double*, double** %328
%330 = load i32, i32* %28
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds double, double* %329, i64 %331
store double %326, double* %332
%333 = load double*, double** %11
%334 = load i32, i32* %28
%335 = load i32, i32* %17
%336 = load i32, i32* %21
%337 = load i32, i32* %16
%338 = mul nsw i32 %337, 1
%339 = add nsw i32 %336, %338
%340 = mul nsw i32 %335, %339
%341 = add nsw i32 %334, %340
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds double, double* %333, i64 %342
%344 = load double, double* %343
%345 = load double*, double** %11
%346 = load i32, i32* %28
%347 = load i32, i32* %17
%348 = load i32, i32* %21
%349 = load i32, i32* %16
%350 = mul nsw i32 %349, 2
%351 = add nsw i32 %348, %350
%352 = mul nsw i32 %347, %351
%353 = add nsw i32 %346, %352
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds double, double* %345, i64 %354
%356 = load double, double* %355
%357 = fmul double %344, %356
%358 = load double*, double** %11
%359 = load i32, i32* %28
%360 = load i32, i32* %17
%361 = load i32, i32* %21
%362 = load i32, i32* %16
%363 = mul nsw i32 %362, 0
%364 = add nsw i32 %361, %363
%365 = mul nsw i32 %360, %364
%366 = add nsw i32 %359, %365
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds double, double* %358, i64 %367
%369 = load double, double* %368
%370 = fdiv double %357, %369
%371 = load double**, double*** %13
%372 = getelementptr inbounds double*, double** %371, i64 1
%373 = load double*, double** %372
%374 = load i32, i32* %28
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds double, double* %373, i64 %375
store double %370, double* %376
%377 = load double*, double** %11
%378 = load i32, i32* %28
%379 = load i32, i32* %17
%380 = load i32, i32* %21
%381 = load i32, i32* %16
%382 = mul nsw i32 %381, 2
%383 = add nsw i32 %380, %382
%384 = mul nsw i32 %379, %383
%385 = add nsw i32 %378, %384
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds double, double* %377, i64 %386
%388 = load double, double* %387
%389 = call double @pow(double %388, i32 2)
%390 = load double*, double** %11
%391 = load i32, i32* %28
%392 = load i32, i32* %17
%393 = load i32, i32* %21
%394 = load i32, i32* %16
%395 = mul nsw i32 %394, 0
%396 = add nsw i32 %393, %395
%397 = mul nsw i32 %392, %396
%398 = add nsw i32 %391, %397
%399 = sext i32 %398 to i64
%400 = getelementptr inbounds double, double* %390, i64 %399
%401 = load double, double* %400
%402 = fdiv double %389, %401
%403 = load double*, double** %11
%404 = load i32, i32* %28
%405 = load i32, i32* %17
%406 = load i32, i32* %21
%407 = load i32, i32* %16
%408 = mul nsw i32 %407, 0
%409 = add nsw i32 %406, %408
%410 = mul nsw i32 %405, %409
%411 = add nsw i32 %404, %410
%412 = sext i32 %411 to i64
%413 = getelementptr inbounds double, double* %403, i64 %412
%414 = load double, double* %413
%415 = call double @pow(double %414, i32 2)
%416 = fmul double 9.810000e+00, %415
%417 = fdiv double %416, 2.000000e+00
%418 = fadd double %402, %417
%419 = load double**, double*** %13
%420 = getelementptr inbounds double*, double** %419, i64 2
%421 = load double*, double** %420
%422 = load i32, i32* %28
%423 = sext i32 %422 to i64
%424 = getelementptr inbounds double, double* %421, i64 %423
store double %418, double* %424
br label %425
425: ; preds = %314
%426 = load i32, i32* %28
%427 = add nsw i32 %426, 1
store i32 %427, i32* %28
br label %310
428: ; preds = %310
store i32 1, i32* %22
br label %429
429: ; preds = %504, %428
%430 = load i32, i32* %22
%431 = load i32, i32* %17
%432 = icmp slt i32 %430, %431
br i1 %432, label %433, label %507
433: ; preds = %429
store i32 0, i32* %23
br label %434
434: ; preds = %500, %433
%435 = load i32, i32* %23
%436 = icmp slt i32 %435, 3
br i1 %436, label %437, label %503
437: ; preds = %434
%438 = load double**, double*** %13
%439 = load i32, i32* %23
%440 = sext i32 %439 to i64
%441 = getelementptr inbounds double*, double** %438, i64 %440
%442 = load double*, double** %441
%443 = load i32, i32* %22
%444 = sub nsw i32 %443, 1
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds double, double* %442, i64 %445
%447 = load double, double* %446
%448 = load double**, double*** %13
%449 = load i32, i32* %23
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds double*, double** %448, i64 %450
%452 = load double*, double** %451
%453 = load i32, i32* %22
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds double, double* %452, i64 %454
%456 = load double, double* %455
%457 = fadd double %447, %456
%458 = load double, double* %19
%459 = load double, double* %20
%460 = fdiv double %458, %459
%461 = load double*, double** %11
%462 = load i32, i32* %22
%463 = load i32, i32* %17
%464 = load i32, i32* %21
%465 = load i32, i32* %16
%466 = load i32, i32* %23
%467 = mul nsw i32 %465, %466
%468 = add nsw i32 %464, %467
%469 = mul nsw i32 %463, %468
%470 = add nsw i32 %462, %469
%471 = sext i32 %470 to i64
%472 = getelementptr inbounds double, double* %461, i64 %471
%473 = load double, double* %472
%474 = load double*, double** %11
%475 = load i32, i32* %22
%476 = sub nsw i32 %475, 1
%477 = load i32, i32* %17
%478 = load i32, i32* %21
%479 = load i32, i32* %16
%480 = load i32, i32* %23
%481 = mul nsw i32 %479, %480
%482 = add nsw i32 %478, %481
%483 = mul nsw i32 %477, %482
%484 = add nsw i32 %476, %483
%485 = sext i32 %484 to i64
%486 = getelementptr inbounds double, double* %474, i64 %485
%487 = load double, double* %486
%488 = fsub double %473, %487
%489 = fneg double %460
%490 = call double @llvm.fmuladd.f64(double %489, double %488, double %457)
%491 = fmul double 5.000000e-01, %490
%492 = load double**, double*** %15
%493 = load i32, i32* %23
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds double*, double** %492, i64 %494
%496 = load double*, double** %495
%497 = load i32, i32* %22
%498 = sext i32 %497 to i64
%499 = getelementptr inbounds double, double* %496, i64 %498
store double %491, double* %499
br label %500
500: ; preds = %437
%501 = load i32, i32* %23
%502 = add nsw i32 %501, 1
store i32 %502, i32* %23
br label %434
503: ; preds = %434
br label %504
504: ; preds = %503
%505 = load i32, i32* %22
%506 = add nsw i32 %505, 1
store i32 %506, i32* %22
br label %429
507: ; preds = %429
store i32 1, i32* %22
br label %508
508: ; preds = %572, %507
%509 = load i32, i32* %22
%510 = load i32, i32* %17
%511 = sub nsw i32 %510, 1
%512 = icmp slt i32 %509, %511
br i1 %512, label %513, label %575
513: ; preds = %508
store i32 0, i32* %23
br label %514
514: ; preds = %568, %513
%515 = load i32, i32* %23
%516 = icmp slt i32 %515, 3
br i1 %516, label %517, label %571
517: ; preds = %514
%518 = load double*, double** %11
%519 = load i32, i32* %22
%520 = load i32, i32* %17
%521 = load i32, i32* %21
%522 = load i32, i32* %16
%523 = load i32, i32* %23
%524 = mul nsw i32 %522, %523
%525 = add nsw i32 %521, %524
%526 = mul nsw i32 %520, %525
%527 = add nsw i32 %519, %526
%528 = sext i32 %527 to i64
%529 = getelementptr inbounds double, double* %518, i64 %528
%530 = load double, double* %529
%531 = load double, double* %20
%532 = load double, double* %19
%533 = fdiv double %531, %532
%534 = load double**, double*** %15
%535 = load i32, i32* %23
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds double*, double** %534, i64 %536
%538 = load double*, double** %537
%539 = load i32, i32* %22
%540 = add nsw i32 %539, 1
%541 = sext i32 %540 to i64
%542 = getelementptr inbounds double, double* %538, i64 %541
%543 = load double, double* %542
%544 = load double**, double*** %15
%545 = load i32, i32* %23
%546 = sext i32 %545 to i64
%547 = getelementptr inbounds double*, double** %544, i64 %546
%548 = load double*, double** %547
%549 = load i32, i32* %22
%550 = sext i32 %549 to i64
%551 = getelementptr inbounds double, double* %548, i64 %550
%552 = load double, double* %551
%553 = fsub double %543, %552
%554 = fneg double %533
%555 = call double @llvm.fmuladd.f64(double %554, double %553, double %530)
%556 = load double*, double** %11
%557 = load i32, i32* %22
%558 = load i32, i32* %17
%559 = load i32, i32* %21
%560 = load i32, i32* %16
%561 = load i32, i32* %23
%562 = mul nsw i32 %560, %561
%563 = add nsw i32 %559, %562
%564 = mul nsw i32 %558, %563
%565 = add nsw i32 %557, %564
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds double, double* %556, i64 %566
store double %555, double* %567
br label %568
568: ; preds = %517
%569 = load i32, i32* %23
%570 = add nsw i32 %569, 1
store i32 %570, i32* %23
br label %514
571: ; preds = %514
br label %572
572: ; preds = %571
%573 = load i32, i32* %22
%574 = add nsw i32 %573, 1
store i32 %574, i32* %22
br label %508
575: ; preds = %508
br label %576
576: ; preds = %575
%577 = load i32, i32* %21
%578 = add nsw i32 %577, 1
store i32 %578, i32* %21
br label %305
579: ; preds = %305
ret void
}

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