void boundaryvalues(int imax, int jmax, double **U, double **V, int wl, int wr,
                    int wt, int wb, int **Flag) {
  int i, j;
  for (i = 1; i < imax + 1; i++) {
    if (wb == 1) {
      U[i][0] = -U[i][1];
      V[i][0] = 0;
    } else if (wb == 2) {
      V[i][0] = 0;
      U[i][0] = U[i][1];
    } else if (wb == 3) {
      V[i][0] = V[i][1];
      U[i][0] = U[i][1];
    }
    if (wt == 1) {
      U[i][jmax + 1] = -U[i][jmax];
      V[i][jmax] = 0;
    } else if (wt == 2) {
      V[i][jmax] = 0;
      U[i][jmax + 1] = U[i][jmax];
    } else if (wt == 3) {
      U[i][jmax + 1] = U[i][jmax];
      V[i][jmax] = V[i][jmax - 1];
    }
  }
  for (j = 1; j < jmax + 1; j++) {
    if (wl == 1) {
      V[0][j] = -V[1][j];
      U[0][j] = 0;
    } else if (wl == 2) {
      U[0][j] = 0;
      V[0][j] = V[1][j];
    } else if (wl == 3) {
      U[0][j] = U[1][j];
      V[0][j] = V[1][j];
    }
    if (wr == 1) {
      V[imax + 1][j] = -V[imax][j];
      U[imax][j] = 0;
    } else if (wr == 2) {
      U[imax][j] = 0;
      V[imax + 1][j] = V[imax][j];
    } else if (wr == 3) {
      U[imax][j] = U[imax - 1][j];
      V[imax + 1][j] = V[imax][j];
    }
  }
  for (i = 1; i < imax + 1; i++) {
    for (j = 1; j < jmax + 1; j++) {
      if (Flag[i][j] == 0x08) {
        U[i][j] = 0;
        V[i][j - 1] = -V[i + 1][j - 1];
        V[i][j] = -V[i + 1][j];
      } else if (Flag[i][j] == 0x01) {
        V[i][j] = 0;
        U[i - 1][j] = -U[i - 1][j + 1];
        U[i][j] = -U[i][j + 1];
      } else if (Flag[i][j] == 0x04) {
        U[i - 1][j] = 0;
        V[i][j - 1] = -V[i - 1][j - 1];
        V[i][j] = -V[i - 1][j];
      } else if (Flag[i][j] == 0x02) {
        V[i][j - 1] = 0;
        U[i][j] = -U[i][j - 1];
        U[i - 1][j] = -U[i - 1][j - 1];
      } else if (Flag[i][j] == 0x09) {
        U[i][j] = 0;
        V[i][j] = 0;
        U[i - 1][j] = -U[i - 1][j + 1];
        V[i][j - 1] = -V[i + 1][j - 1];
      } else if (Flag[i][j] == 0x05) {
        U[i - 1][j] = 0;
        V[i][j] = 0;
        U[i][j] = -U[i][j + 1];
        V[i][j - 1] = -V[i - 1][j - 1];
      } else if (Flag[i][j] == 0x0A) {
        U[i][j] = 0;
        V[i][j - 1] = 0;
        U[i - 1][j] = -U[i - 1][j - 1];
        V[i][j] = -V[i + 1][j];
      } else if (Flag[i][j] == 0x06) {
        U[i - 1][j] = 0;
        V[i][j - 1] = 0;
        U[i][j] = -U[i][j - 1];
        V[i][j] = -V[i - 1][j];
      }
    }
  }
}


x86 assembly (clang, -O0):
<boundaryvalues>:
push   %rbp
mov    %rsp,%rbp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
movl   $0x1,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    1377 <boundaryvalues+0x277>
cmpl   $0x1,0x18(%rbp)
jne    1196 <boundaryvalues+0x96>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    122f <boundaryvalues+0x12f>
cmpl   $0x2,0x18(%rbp)
jne    11d9 <boundaryvalues+0xd9>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
jmp    122a <boundaryvalues+0x12a>
cmpl   $0x3,0x18(%rbp)
jne    1225 <boundaryvalues+0x125>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
jmp    122a <boundaryvalues+0x12a>
jmp    122f <boundaryvalues+0x12f>
cmpl   $0x1,0x10(%rbp)
jne    129c <boundaryvalues+0x19c>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x8(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1364 <boundaryvalues+0x264>
cmpl   $0x2,0x10(%rbp)
jne    12f2 <boundaryvalues+0x1f2>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x8(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    135f <boundaryvalues+0x25f>
cmpl   $0x3,0x10(%rbp)
jne    135a <boundaryvalues+0x25a>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    135f <boundaryvalues+0x25f>
jmp    1364 <boundaryvalues+0x264>
jmp    1369 <boundaryvalues+0x269>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    112b <boundaryvalues+0x2b>
movl   $0x1,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    15ca <boundaryvalues+0x4ca>
cmpl   $0x1,-0x1c(%rbp)
jne    13e9 <boundaryvalues+0x2e9>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1482 <boundaryvalues+0x382>
cmpl   $0x2,-0x1c(%rbp)
jne    142c <boundaryvalues+0x32c>
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    147d <boundaryvalues+0x37d>
cmpl   $0x3,-0x1c(%rbp)
jne    1478 <boundaryvalues+0x378>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    147d <boundaryvalues+0x37d>
jmp    1482 <boundaryvalues+0x382>
cmpl   $0x1,-0x20(%rbp)
jne    14ef <boundaryvalues+0x3ef>
mov    -0x18(%rbp),%rax
movslq -0x4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    15b7 <boundaryvalues+0x4b7>
cmpl   $0x2,-0x20(%rbp)
jne    1545 <boundaryvalues+0x445>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    15b2 <boundaryvalues+0x4b2>
cmpl   $0x3,-0x20(%rbp)
jne    15ad <boundaryvalues+0x4ad>
mov    -0x10(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    15b2 <boundaryvalues+0x4b2>
jmp    15b7 <boundaryvalues+0x4b7>
jmp    15bc <boundaryvalues+0x4bc>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    137e <boundaryvalues+0x27e>
movl   $0x1,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    1d24 <boundaryvalues+0xc24>
movl   $0x1,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    1d11 <boundaryvalues+0xc11>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x8,(%rax,%rcx,4)
jne    16c7 <boundaryvalues+0x5c7>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1cfe <boundaryvalues+0xbfe>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1794 <boundaryvalues+0x694>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1cf9 <boundaryvalues+0xbf9>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x4,(%rax,%rcx,4)
jne    1866 <boundaryvalues+0x766>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1cf4 <boundaryvalues+0xbf4>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x2,(%rax,%rcx,4)
jne    1938 <boundaryvalues+0x838>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1cef <boundaryvalues+0xbef>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x9,(%rax,%rcx,4)
jne    1a27 <boundaryvalues+0x927>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1cea <boundaryvalues+0xbea>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x5,(%rax,%rcx,4)
jne    1b11 <boundaryvalues+0xa11>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1ce5 <boundaryvalues+0xbe5>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0xa,(%rax,%rcx,4)
jne    1bfb <boundaryvalues+0xafb>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1ce0 <boundaryvalues+0xbe0>
mov    0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x6,(%rax,%rcx,4)
jne    1cdb <boundaryvalues+0xbdb>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1ce0 <boundaryvalues+0xbe0>
jmp    1ce5 <boundaryvalues+0xbe5>
jmp    1cea <boundaryvalues+0xbea>
jmp    1cef <boundaryvalues+0xbef>
jmp    1cf4 <boundaryvalues+0xbf4>
jmp    1cf9 <boundaryvalues+0xbf9>
jmp    1cfe <boundaryvalues+0xbfe>
jmp    1d03 <boundaryvalues+0xc03>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    15e9 <boundaryvalues+0x4e9>
jmp    1d16 <boundaryvalues+0xc16>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    15d1 <boundaryvalues+0x4d1>
pop    %rbp
ret

x86 assembly (clang, -O2):
<boundaryvalues>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %edi,%edi
jle    1233 <boundaryvalues+0x133>
mov    0x40(%rsp),%r10d
mov    0x38(%rsp),%r12d
movslq %esi,%rax
lea    0x1(%rax),%ebx
movslq %ebx,%r11
lea    -0x1(%rax),%ebx
movslq %ebx,%r15
lea    0x1(%rdi),%r14d
mov    $0x1,%ebx
movaps 0xec5(%rip),%xmm0
jmp    116f <boundaryvalues+0x6f>
nopl   (%rax)
mov    (%rdx,%rbx,8),%rbp
movsd  0x0(%rbp,%rax,8),%xmm1
movsd  %xmm1,0x0(%rbp,%r11,8)
mov    (%rcx,%rbx,8),%rbp
movsd  0x0(%rbp,%r15,8),%xmm1
movsd  %xmm1,0x0(%rbp,%rax,8)
add    $0x1,%rbx
cmp    %rbx,%r14
je     1237 <boundaryvalues+0x137>
cmp    $0x3,%r10d
je     11a0 <boundaryvalues+0xa0>
cmp    $0x2,%r10d
je     11b0 <boundaryvalues+0xb0>
cmp    $0x1,%r10d
jne    11ca <boundaryvalues+0xca>
mov    (%rdx,%rbx,8),%rbp
movsd  0x8(%rbp),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x0(%rbp)
mov    (%rcx,%rbx,8),%rbp
movq   $0x0,0x0(%rbp)
jmp    11ca <boundaryvalues+0xca>
nop
mov    (%rcx,%rbx,8),%rbp
movsd  0x8(%rbp),%xmm1
movsd  %xmm1,0x0(%rbp)
jmp    11bc <boundaryvalues+0xbc>
mov    (%rcx,%rbx,8),%rbp
movq   $0x0,0x0(%rbp)
mov    (%rdx,%rbx,8),%rbp
movsd  0x8(%rbp),%xmm1
movsd  %xmm1,0x0(%rbp)
cmp    $0x3,%r12d
je     1140 <boundaryvalues+0x40>
cmp    $0x2,%r12d
je     1210 <boundaryvalues+0x110>
cmp    $0x1,%r12d
jne    1162 <boundaryvalues+0x62>
mov    (%rdx,%rbx,8),%rbp
movsd  0x0(%rbp,%rax,8),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x0(%rbp,%r11,8)
mov    (%rcx,%rbx,8),%rbp
movq   $0x0,0x0(%rbp,%rax,8)
jmp    1162 <boundaryvalues+0x62>
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%rcx,%rbx,8),%rbp
movq   $0x0,0x0(%rbp,%rax,8)
mov    (%rdx,%rbx,8),%rbp
movsd  0x0(%rbp,%rax,8),%xmm1
movsd  %xmm1,0x0(%rbp,%r11,8)
jmp    1162 <boundaryvalues+0x62>
lea    0x1(%rdi),%r14d
test   %esi,%esi
jle    1371 <boundaryvalues+0x271>
lea    -0x1(%rdi),%eax
movslq %eax,%r10
movslq %edi,%r12
lea    (%rdx,%r12,8),%r11
movslq %r14d,%rax
lea    (%rcx,%rax,8),%r15
mov    %esi,%r13d
shl    $0x3,%r13
xor    %ebx,%ebx
movaps 0xd9d(%rip),%xmm0
jmp    12a8 <boundaryvalues+0x1a8>
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%rdx,%r10,8),%rax
movsd  0x8(%rax,%rbx,1),%xmm1
mov    (%rdx,%r12,8),%rax
movsd  %xmm1,0x8(%rax,%rbx,1)
mov    (%rcx,%r12,8),%rax
movsd  0x8(%rax,%rbx,1),%xmm1
mov    %r15,%rbp
mov    0x0(%rbp),%rax
movsd  %xmm1,0x8(%rax,%rbx,1)
add    $0x8,%rbx
cmp    %rbx,%r13
je     1371 <boundaryvalues+0x271>
cmp    $0x3,%r8d
je     12e0 <boundaryvalues+0x1e0>
cmp    $0x2,%r8d
je     1300 <boundaryvalues+0x200>
cmp    $0x1,%r8d
jne    1323 <boundaryvalues+0x223>
mov    (%rcx),%rbp
mov    0x8(%rcx),%rax
movsd  0x8(%rax,%rbx,1),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbp,%rbx,1)
xorps  %xmm1,%xmm1
mov    %rdx,%rbp
jmp    1319 <boundaryvalues+0x219>
nopw   0x0(%rax,%rax,1)
mov    (%rdx),%rax
mov    0x8(%rdx),%rbp
movsd  0x8(%rbp,%rbx,1),%xmm1
movsd  %xmm1,0x8(%rax,%rbx,1)
jmp    130c <boundaryvalues+0x20c>
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%rdx),%rax
movq   $0x0,0x8(%rax,%rbx,1)
mov    0x8(%rcx),%rax
movsd  0x8(%rax,%rbx,1),%xmm1
mov    %rcx,%rbp
mov    0x0(%rbp),%rax
movsd  %xmm1,0x8(%rax,%rbx,1)
cmp    $0x3,%r9d
je     1270 <boundaryvalues+0x170>
cmp    $0x2,%r9d
je     1360 <boundaryvalues+0x260>
cmp    $0x1,%r9d
jne    129b <boundaryvalues+0x19b>
mov    (%rcx,%r12,8),%rax
movsd  0x8(%rax,%rbx,1),%xmm1
xorps  %xmm0,%xmm1
mov    (%r15),%rax
movlps %xmm1,0x8(%rax,%rbx,1)
xorps  %xmm1,%xmm1
mov    %r11,%rbp
jmp    1291 <boundaryvalues+0x191>
nopl   (%rax)
mov    (%r11),%rax
movq   $0x0,0x8(%rax,%rbx,1)
jmp    1284 <boundaryvalues+0x184>
test   %edi,%edi
jle    15a0 <boundaryvalues+0x4a0>
mov    0x48(%rsp),%r8
lea    0x1(%rsi),%eax
mov    %r14d,%r9d
lea    -0x4(,%rax,4),%r15
ff
mov    $0x1,%eax
lea    0xc78(%rip),%r10
movaps 0xc61(%rip),%xmm0
jmp    13bc <boundaryvalues+0x2bc>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %r11,%rax
cmp    %r9,%r11
je     15a0 <boundaryvalues+0x4a0>
test   %esi,%esi
jle    1590 <boundaryvalues+0x490>
mov    (%r8,%rax,8),%r12
lea    0x1(%rax),%r11
mov    %r11d,%r14d
xor    %edi,%edi
jmp    141b <boundaryvalues+0x31b>
mov    -0x8(%rdx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    (%rcx,%rax,8),%rbx
movq   $0x0,(%rbx,%rdi,2)
mov    (%rdx,%rax,8),%rbp
movsd  0x0(%rbp,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbp,%rdi,2)
mov    -0x8(%rcx,%rax,8),%rbp
movsd  0x8(%rbp,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbx,%rdi,2)
add    $0x4,%rdi
cmp    %rdi,%r15
je     13b0 <boundaryvalues+0x2b0>
mov    0x4(%r12,%rdi,1),%ebp
add    $0xffffffff,%ebp
cmp    $0x9,%ebp
ja     1412 <boundaryvalues+0x312>
movslq (%r10,%rbp,4),%rbp
add    %r10,%rbp
jmp    *%rbp
mov    (%rcx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    -0x8(%rdx,%rax,8),%rbx
movsd  0x10(%rbx,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbx,%rdi,2)
mov    (%rdx,%rax,8),%rbx
movsd  0x10(%rbx,%rdi,2),%xmm1
jmp    140a <boundaryvalues+0x30a>
mov    (%rcx,%rax,8),%rbx
movq   $0x0,(%rbx,%rdi,2)
mov    (%rdx,%rax,8),%rbx
movsd  (%rbx,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbx,%rdi,2)
mov    -0x8(%rdx,%rax,8),%rbx
movsd  (%rbx,%rdi,2),%xmm1
jmp    140a <boundaryvalues+0x30a>
mov    -0x8(%rdx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    -0x8(%rcx,%rax,8),%rbx
mov    (%rcx,%rax,8),%rbp
movsd  (%rbx,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x0(%rbp,%rdi,2)
movsd  0x8(%rbx,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbp,%rdi,2)
jmp    1412 <boundaryvalues+0x312>
mov    -0x8(%rdx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    (%rcx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    (%rdx,%rax,8),%rbp
movsd  0x10(%rbp,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbp,%rdi,2)
mov    -0x8(%rcx,%rax,8),%rbp
jmp    1549 <boundaryvalues+0x449>
mov    (%rdx,%rax,8),%rbp
movq   $0x0,0x8(%rbp,%rdi,2)
mov    (%rcx,%r14,8),%rbp
movsd  0x0(%rbp,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
mov    (%rcx,%rax,8),%rbx
movlps %xmm1,(%rbx,%rdi,2)
jmp    1404 <boundaryvalues+0x304>
mov    (%rdx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    (%rcx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    -0x8(%rdx,%rax,8),%rbp
movsd  0x10(%rbp,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbp,%rdi,2)
mov    (%rcx,%r14,8),%rbp
movsd  0x0(%rbp,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,(%rbx,%rdi,2)
jmp    1412 <boundaryvalues+0x312>
mov    (%rdx,%rax,8),%rbx
movq   $0x0,0x8(%rbx,%rdi,2)
mov    (%rcx,%rax,8),%rbx
movq   $0x0,(%rbx,%rdi,2)
mov    -0x8(%rdx,%rax,8),%rbp
movsd  0x0(%rbp,%rdi,2),%xmm1
xorps  %xmm0,%xmm1
movlps %xmm1,0x8(%rbp,%rdi,2)
mov    (%rcx,%r14,8),%rbp
jmp    1404 <boundaryvalues+0x304>
add    $0x1,%rax
mov    %rax,%r11
cmp    %r9,%r11
jne    13bc <boundaryvalues+0x2bc>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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