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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int, int, int, int, int, double);
int test_dist_x(double array_x[6][8][10][12], int lst, int ust, int lsx,
                int usx, int lsy, int usy, int lsz, int usz, int lwx, int uwx) {
  int it, ix, iy, iz;
  int err = 0;
#pragma xmp align array_x[iz][iy][ix][it] with tx(it, ix, iy, iz)
#pragma xmp shadow array_x[lsz : usz][lsy : usy][lsx : usx][lst : ust]
#pragma xmp task on px(1, 1, 1, 1)
  for (iz = 0; iz < 6; iz++) {
    for (iy = 0; iy < 8; iy++) {
      for (ix = 0; ix < 10 / 2 + uwx; ix++) {
        for (it = 0; it < 12; it++) {
          array_x[iz][iy][ix][it] = 1.0;
        }
      }
    }
  }
#pragma xmp task on px(1, 2, 1, 1)
  for (iz = 0; iz < 6; iz++) {
    for (iy = 0; iy < 8; iy++) {
      for (ix = 10 / 2 - lwx; ix < 10; ix++) {
        for (it = 0; it < 12; it++) {
          array_x[iz][iy][ix][it] = 2.0;
        }
      }
    }
  }
#pragma acc data copy(array_x)
  {
#pragma xmp reflect(array_x) width(0, 0, lwx : uwx, 0) acc
  }
#pragma xmp task on px(1, 1, 1, 1)
  for (iz = 0; iz < 6; iz++) {
    for (iy = 0; iy < 8; iy++) {
      for (ix = 0; ix < 10 / 2 + uwx; ix++) {
        for (it = 0; it < 12; it++) {
          if (0 <= ix && ix < 10 / 2) {
            if (array_x[iz][iy][ix][it] != 1.0)
              err++;
          } else {
            if (array_x[iz][iy][ix][it] != 2.0)
              err++;
          }
        }
      }
    }
  }
#pragma xmp task on px(1, 2, 1, 1)
  for (iz = 0; iz < 6; iz++) {
    for (iy = 0; iy < 8; iy++) {
      for (ix = 10 / 2 - lwx; ix < 10; ix++) {
        for (it = 0; it < 12; it++) {
          if (10 / 2 <= ix && ix < 10) {
            if (array_x[iz][iy][ix][it] != 2.0)
              err++;
          } else {
            if (array_x[iz][iy][ix][it] != 1.0)
              err++;
          }
        }
      }
    }
  }
#pragma xmp reduction(+ : err)
  if (err == 0)
    return 0;
#pragma xmp task on px(1, 1, 1, 1)
  for (iz = 0; iz < 6; iz++) {
    for (iy = 0; iy < 8; iy++) {
      for (ix = 0; ix < 10 / 2 + uwx; ix++) {
        for (it = 0; it < 12; it++) {
          printf("node(%d) array[%2d][%2d][%2d][%2d] = %f\n", 1, iz, iy, ix, it,
                 array_x[iz][iy][ix][it]);
        }
      }
    }
  }
#pragma xmp barrier
#pragma xmp task on px(1, 2, 1, 1)
  for (iz = 0; iz < 6; iz++) {
    for (iy = 0; iy < 8; iy++) {
      for (ix = 10 / 2 - lwx; ix < 10; ix++) {
        for (it = 0; it < 12; it++) {
          printf("node(%d) array[%2d][%2d][%2d][%2d] = %f\n", 2, iz, iy, ix, it,
                 array_x[iz][iy][ix][it]);
        }
      }
    }
  }
  return 1;
}


x86 assembly (clang, -O0):
<test_dist_x>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movl   $0x0,-0x38(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0x6,-0x34(%rbp)
jge    1211 <test_dist_x+0x101>
movl   $0x0,-0x30(%rbp)
cmpl   $0x8,-0x30(%rbp)
jge    11fe <test_dist_x+0xee>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    0x30(%rbp),%ecx
add    $0x5,%ecx
cmp    %ecx,%eax
jge    11eb <test_dist_x+0xdb>
movl   $0x0,-0x28(%rbp)
cmpl   $0xc,-0x28(%rbp)
jge    11d8 <test_dist_x+0xc8>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
imul   $0x1e00,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
imul   $0x3c0,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
imul   $0x60,%rcx,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
movsd  0xe3b(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1184 <test_dist_x+0x74>
jmp    11dd <test_dist_x+0xcd>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    116c <test_dist_x+0x5c>
jmp    11f0 <test_dist_x+0xe0>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    115b <test_dist_x+0x4b>
jmp    1203 <test_dist_x+0xf3>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    114a <test_dist_x+0x3a>
movl   $0x0,-0x34(%rbp)
cmpl   $0x6,-0x34(%rbp)
jge    12dc <test_dist_x+0x1cc>
movl   $0x0,-0x30(%rbp)
cmpl   $0x8,-0x30(%rbp)
jge    12c9 <test_dist_x+0x1b9>
mov    $0x5,%eax
sub    0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0xa,-0x2c(%rbp)
jge    12b6 <test_dist_x+0x1a6>
movl   $0x0,-0x28(%rbp)
cmpl   $0xc,-0x28(%rbp)
jge    12a3 <test_dist_x+0x193>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
imul   $0x1e00,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
imul   $0x3c0,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
imul   $0x60,%rcx,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
movsd  0xd78(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    124f <test_dist_x+0x13f>
jmp    12a8 <test_dist_x+0x198>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    123e <test_dist_x+0x12e>
jmp    12bb <test_dist_x+0x1ab>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1229 <test_dist_x+0x119>
jmp    12ce <test_dist_x+0x1be>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1218 <test_dist_x+0x108>
movl   $0x0,-0x34(%rbp)
cmpl   $0x6,-0x34(%rbp)
jge    1446 <test_dist_x+0x336>
movl   $0x0,-0x30(%rbp)
cmpl   $0x8,-0x30(%rbp)
jge    1433 <test_dist_x+0x323>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    0x30(%rbp),%ecx
add    $0x5,%ecx
cmp    %ecx,%eax
jge    1420 <test_dist_x+0x310>
movl   $0x0,-0x28(%rbp)
cmpl   $0xc,-0x28(%rbp)
jge    140d <test_dist_x+0x2fd>
xor    %eax,%eax
cmp    -0x2c(%rbp),%eax
jg     139b <test_dist_x+0x28b>
cmpl   $0x5,-0x2c(%rbp)
jge    139b <test_dist_x+0x28b>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
imul   $0x1e00,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
imul   $0x3c0,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
imul   $0x60,%rcx,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xc88(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    138d <test_dist_x+0x27d>
jp     138d <test_dist_x+0x27d>
jmp    1396 <test_dist_x+0x286>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    13fa <test_dist_x+0x2ea>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
imul   $0x1e00,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
imul   $0x3c0,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
imul   $0x60,%rcx,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xc31(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    13ec <test_dist_x+0x2dc>
jp     13ec <test_dist_x+0x2dc>
jmp    13f5 <test_dist_x+0x2e5>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    13fa <test_dist_x+0x2ea>
jmp    13ff <test_dist_x+0x2ef>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    131d <test_dist_x+0x20d>
jmp    1412 <test_dist_x+0x302>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1305 <test_dist_x+0x1f5>
jmp    1425 <test_dist_x+0x315>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    12f4 <test_dist_x+0x1e4>
jmp    1438 <test_dist_x+0x328>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    12e3 <test_dist_x+0x1d3>
movl   $0x0,-0x34(%rbp)
cmpl   $0x6,-0x34(%rbp)
jge    15b0 <test_dist_x+0x4a0>
movl   $0x0,-0x30(%rbp)
cmpl   $0x8,-0x30(%rbp)
jge    159d <test_dist_x+0x48d>
mov    $0x5,%eax
sub    0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0xa,-0x2c(%rbp)
jge    158a <test_dist_x+0x47a>
movl   $0x0,-0x28(%rbp)
cmpl   $0xc,-0x28(%rbp)
jge    1577 <test_dist_x+0x467>
mov    $0x5,%eax
cmp    -0x2c(%rbp),%eax
jg     1505 <test_dist_x+0x3f5>
cmpl   $0xa,-0x2c(%rbp)
jge    1505 <test_dist_x+0x3f5>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
imul   $0x1e00,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
imul   $0x3c0,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
imul   $0x60,%rcx,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xb26(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    14f7 <test_dist_x+0x3e7>
jp     14f7 <test_dist_x+0x3e7>
jmp    1500 <test_dist_x+0x3f0>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1564 <test_dist_x+0x454>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
imul   $0x1e00,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
imul   $0x3c0,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
imul   $0x60,%rcx,%rcx
add    %rcx,%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xabf(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1556 <test_dist_x+0x446>
jp     1556 <test_dist_x+0x446>
jmp    155f <test_dist_x+0x44f>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1564 <test_dist_x+0x454>
jmp    1569 <test_dist_x+0x459>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1484 <test_dist_x+0x374>
jmp    157c <test_dist_x+0x46c>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1473 <test_dist_x+0x363>
jmp    158f <test_dist_x+0x47f>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    145e <test_dist_x+0x34e>
jmp    15a2 <test_dist_x+0x492>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    144d <test_dist_x+0x33d>
cmpl   $0x0,-0x38(%rbp)
jne    15c6 <test_dist_x+0x4b6>
movl   $0x0,-0x4(%rbp)
jmp    1794 <test_dist_x+0x684>
movl   $0x0,-0x34(%rbp)
cmpl   $0x6,-0x34(%rbp)
jge    16ab <test_dist_x+0x59b>
movl   $0x0,-0x30(%rbp)
cmpl   $0x8,-0x30(%rbp)
jge    1698 <test_dist_x+0x588>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    0x30(%rbp),%ecx
add    $0x5,%ecx
cmp    %ecx,%eax
jge    1685 <test_dist_x+0x575>
movl   $0x0,-0x28(%rbp)
cmpl   $0xc,-0x28(%rbp)
jge    1672 <test_dist_x+0x562>
mov    -0x34(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x2c(%rbp),%r8d
mov    -0x28(%rbp),%r9d
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rsi
imul   $0x1e00,%rsi,%rsi
add    %rsi,%rax
movslq -0x30(%rbp),%rsi
imul   $0x3c0,%rsi,%rsi
add    %rsi,%rax
movslq -0x2c(%rbp),%rsi
imul   $0x60,%rsi,%rsi
add    %rsi,%rax
movslq -0x28(%rbp),%rsi
movsd  (%rax,%rsi,8),%xmm0
lea    0x9b6(%rip),%rdi
mov    $0x1,%esi
call   1030 <printf@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1607 <test_dist_x+0x4f7>
jmp    1677 <test_dist_x+0x567>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    15ef <test_dist_x+0x4df>
jmp    168a <test_dist_x+0x57a>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    15de <test_dist_x+0x4ce>
jmp    169d <test_dist_x+0x58d>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    15cd <test_dist_x+0x4bd>
movl   $0x0,-0x34(%rbp)
cmpl   $0x6,-0x34(%rbp)
jge    178d <test_dist_x+0x67d>
movl   $0x0,-0x30(%rbp)
cmpl   $0x8,-0x30(%rbp)
jge    177a <test_dist_x+0x66a>
mov    $0x5,%eax
sub    0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0xa,-0x2c(%rbp)
jge    1767 <test_dist_x+0x657>
movl   $0x0,-0x28(%rbp)
cmpl   $0xc,-0x28(%rbp)
jge    1754 <test_dist_x+0x644>
mov    -0x34(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x2c(%rbp),%r8d
mov    -0x28(%rbp),%r9d
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rsi
imul   $0x1e00,%rsi,%rsi
add    %rsi,%rax
movslq -0x30(%rbp),%rsi
imul   $0x3c0,%rsi,%rsi
add    %rsi,%rax
movslq -0x2c(%rbp),%rsi
imul   $0x60,%rsi,%rsi
add    %rsi,%rax
movslq -0x28(%rbp),%rsi
movsd  (%rax,%rsi,8),%xmm0
lea    0x8d4(%rip),%rdi
mov    $0x2,%esi
call   1030 <printf@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    16e9 <test_dist_x+0x5d9>
jmp    1759 <test_dist_x+0x649>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    16d8 <test_dist_x+0x5c8>
jmp    176c <test_dist_x+0x65c>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    16c3 <test_dist_x+0x5b3>
jmp    177f <test_dist_x+0x66f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    16b2 <test_dist_x+0x5a2>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_dist_x>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    0x80(%rsp),%r11d
mov    0x78(%rsp),%r12d
lea    0x4(%r11),%r10d
xor    %r9d,%r9d
test   %r10d,%r10d
mov    $0x0,%r14d
cmovg  %r10d,%r14d
add    $0x1,%r14d
mov    %r14d,%edx
and    $0xfffffffe,%edx
lea    0xb0(%rdi),%r8
movaps 0xea9(%rip),%xmm0
jmp    1175 <test_dist_x+0x65>
nopl   0x0(%rax)
add    $0x1,%r9
add    $0x1e00,%r8
cmp    $0x6,%r9
je     124a <test_dist_x+0x13a>
mov    %r8,%rsi
xor    %ebp,%ebp
jmp    1191 <test_dist_x+0x81>
nopl   0x0(%rax)
add    $0x1,%rbp
add    $0x3c0,%rsi
cmp    $0x8,%rbp
je     1160 <test_dist_x+0x50>
cmp    $0xfffffffc,%r11d
jl     1180 <test_dist_x+0x70>
test   %r10d,%r10d
jle    1200 <test_dist_x+0xf0>
mov    %rsi,%rcx
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movups %xmm0,-0xb0(%rcx)
movups %xmm0,-0xa0(%rcx)
movups %xmm0,-0x90(%rcx)
movups %xmm0,-0x80(%rcx)
movups %xmm0,-0x70(%rcx)
movups %xmm0,-0x60(%rcx)
movups %xmm0,-0x50(%rcx)
movups %xmm0,-0x40(%rcx)
movups %xmm0,-0x30(%rcx)
movups %xmm0,-0x20(%rcx)
movups %xmm0,-0x10(%rcx)
movups %xmm0,(%rcx)
add    $0x2,%rbx
add    $0xc0,%rcx
cmp    %rbx,%rdx
jne    11b0 <test_dist_x+0xa0>
test   $0x1,%r14b
je     1180 <test_dist_x+0x70>
jmp    120c <test_dist_x+0xfc>
xor    %ebx,%ebx
test   $0x1,%r14b
je     1180 <test_dist_x+0x70>
imul   $0x1e00,%r9,%rax
add    %rdi,%rax
imul   $0x3c0,%rbp,%rcx
add    %rax,%rcx
lea    (%rbx,%rbx,2),%rax
shl    $0x5,%rax
movups %xmm0,(%rax,%rcx,1)
movups %xmm0,0x10(%rax,%rcx,1)
movups %xmm0,0x20(%rax,%rcx,1)
movups %xmm0,0x30(%rax,%rcx,1)
movups %xmm0,0x40(%rax,%rcx,1)
movups %xmm0,0x50(%rax,%rcx,1)
jmp    1180 <test_dist_x+0x70>
mov    $0x5,%eax
sub    %r12d,%eax
mov    %eax,0xc(%rsp)
movslq %eax,%r10
lea    0x1(%r10),%r9
lea    0xb0(%rdi),%r8
xor    %esi,%esi
movaps 0xda3(%rip),%xmm0
jmp    1285 <test_dist_x+0x175>
nop
add    $0x1,%rsi
add    $0x1e00,%r8
cmp    $0x6,%rsi
je     1349 <test_dist_x+0x239>
mov    %r8,%rdx
xor    %ebp,%ebp
jmp    12a1 <test_dist_x+0x191>
nopl   0x0(%rax)
add    $0x1,%rbp
add    $0x3c0,%rdx
cmp    $0x8,%rbp
je     1270 <test_dist_x+0x160>
cmp    $0xfffffffc,%r12d
jl     1290 <test_dist_x+0x180>
mov    %r10,%rcx
test   $0x1,%r12b
jne    12ec <test_dist_x+0x1dc>
imul   $0x1e00,%rsi,%rax
add    %rdi,%rax
imul   $0x3c0,%rbp,%rcx
add    %rax,%rcx
lea    (%r10,%r10,2),%rax
shl    $0x5,%rax
movups %xmm0,(%rax,%rcx,1)
movups %xmm0,0x10(%rax,%rcx,1)
movups %xmm0,0x20(%rax,%rcx,1)
movups %xmm0,0x30(%rax,%rcx,1)
movups %xmm0,0x40(%rax,%rcx,1)
movups %xmm0,0x50(%rax,%rcx,1)
mov    %r9,%rcx
cmp    $0xfffffffc,%r12d
je     1290 <test_dist_x+0x180>
lea    -0xa(%rcx),%eax
lea    (%rcx,%rcx,2),%rbx
shl    $0x5,%rbx
add    %rdx,%rbx
movups %xmm0,-0xb0(%rbx)
movups %xmm0,-0xa0(%rbx)
movups %xmm0,-0x90(%rbx)
movups %xmm0,-0x80(%rbx)
movups %xmm0,-0x70(%rbx)
movups %xmm0,-0x60(%rbx)
movups %xmm0,-0x50(%rbx)
movups %xmm0,-0x40(%rbx)
movups %xmm0,-0x30(%rbx)
movups %xmm0,-0x20(%rbx)
movups %xmm0,-0x10(%rbx)
movups %xmm0,(%rbx)
add    $0xc0,%rbx
add    $0x2,%eax
jne    1300 <test_dist_x+0x1f0>
jmp    1290 <test_dist_x+0x180>
lea    0x58(%rdi),%r9
xor    %r8d,%r8d
movsd  0xcd0(%rip),%xmm0
movsd  0xcc0(%rip),%xmm1
xor    %ecx,%ecx
jmp    1385 <test_dist_x+0x275>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r8
add    $0x1e00,%r9
cmp    $0x6,%r8
je     1564 <test_dist_x+0x454>
mov    %r9,%rdx
xor    %ebx,%ebx
jmp    13a1 <test_dist_x+0x291>
nopl   0x0(%rax)
add    $0x1,%rbx
add    $0x3c0,%rdx
cmp    $0x8,%rbx
je     1370 <test_dist_x+0x260>
cmp    $0xfffffffc,%r11d
jl     1390 <test_dist_x+0x280>
mov    %rdx,%rax
xor    %esi,%esi
jmp    13bd <test_dist_x+0x2ad>
xchg   %ax,%ax
add    $0x1,%rsi
add    $0x60,%rax
cmp    %rsi,%r14
je     1390 <test_dist_x+0x280>
movsd  -0x58(%rax),%xmm2
cmp    $0x4,%rsi
ja     13e0 <test_dist_x+0x2d0>
ucomisd %xmm0,%xmm2
jne    13e8 <test_dist_x+0x2d8>
jp     13e8 <test_dist_x+0x2d8>
jmp    13eb <test_dist_x+0x2db>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
ucomisd %xmm1,%xmm2
jne    13e8 <test_dist_x+0x2d8>
jnp    13eb <test_dist_x+0x2db>
add    $0x1,%ecx
movsd  -0x50(%rax),%xmm2
cmp    $0x5,%rsi
jae    1400 <test_dist_x+0x2f0>
ucomisd %xmm0,%xmm2
jne    1408 <test_dist_x+0x2f8>
jp     1408 <test_dist_x+0x2f8>
jmp    140b <test_dist_x+0x2fb>
ucomisd %xmm1,%xmm2
jne    1408 <test_dist_x+0x2f8>
jnp    140b <test_dist_x+0x2fb>
add    $0x1,%ecx
movsd  -0x48(%rax),%xmm2
cmp    $0x5,%rsi
jae    1420 <test_dist_x+0x310>
ucomisd %xmm0,%xmm2
jne    1428 <test_dist_x+0x318>
jp     1428 <test_dist_x+0x318>
jmp    142b <test_dist_x+0x31b>
ucomisd %xmm1,%xmm2
jne    1428 <test_dist_x+0x318>
jnp    142b <test_dist_x+0x31b>
add    $0x1,%ecx
movsd  -0x40(%rax),%xmm2
cmp    $0x5,%rsi
jae    1440 <test_dist_x+0x330>
ucomisd %xmm0,%xmm2
jne    1448 <test_dist_x+0x338>
jp     1448 <test_dist_x+0x338>
jmp    144b <test_dist_x+0x33b>
ucomisd %xmm1,%xmm2
jne    1448 <test_dist_x+0x338>
jnp    144b <test_dist_x+0x33b>
add    $0x1,%ecx
movsd  -0x38(%rax),%xmm2
cmp    $0x5,%rsi
jae    1460 <test_dist_x+0x350>
ucomisd %xmm0,%xmm2
jne    1468 <test_dist_x+0x358>
jp     1468 <test_dist_x+0x358>
jmp    146b <test_dist_x+0x35b>
ucomisd %xmm1,%xmm2
jne    1468 <test_dist_x+0x358>
jnp    146b <test_dist_x+0x35b>
add    $0x1,%ecx
movsd  -0x30(%rax),%xmm2
cmp    $0x5,%rsi
jae    1480 <test_dist_x+0x370>
ucomisd %xmm0,%xmm2
jne    1488 <test_dist_x+0x378>
jp     1488 <test_dist_x+0x378>
jmp    148b <test_dist_x+0x37b>
ucomisd %xmm1,%xmm2
jne    1488 <test_dist_x+0x378>
jnp    148b <test_dist_x+0x37b>
add    $0x1,%ecx
movsd  -0x28(%rax),%xmm2
cmp    $0x5,%rsi
jae    14a0 <test_dist_x+0x390>
ucomisd %xmm0,%xmm2
jne    14a8 <test_dist_x+0x398>
jp     14a8 <test_dist_x+0x398>
jmp    14ab <test_dist_x+0x39b>
ucomisd %xmm1,%xmm2
jne    14a8 <test_dist_x+0x398>
jnp    14ab <test_dist_x+0x39b>
add    $0x1,%ecx
movsd  -0x20(%rax),%xmm2
cmp    $0x5,%rsi
jae    14c0 <test_dist_x+0x3b0>
ucomisd %xmm0,%xmm2
jne    14c8 <test_dist_x+0x3b8>
jp     14c8 <test_dist_x+0x3b8>
jmp    14cb <test_dist_x+0x3bb>
ucomisd %xmm1,%xmm2
jne    14c8 <test_dist_x+0x3b8>
jnp    14cb <test_dist_x+0x3bb>
add    $0x1,%ecx
movsd  -0x18(%rax),%xmm2
cmp    $0x5,%rsi
jae    14e0 <test_dist_x+0x3d0>
ucomisd %xmm0,%xmm2
jne    14e8 <test_dist_x+0x3d8>
jp     14e8 <test_dist_x+0x3d8>
jmp    14eb <test_dist_x+0x3db>
ucomisd %xmm1,%xmm2
jne    14e8 <test_dist_x+0x3d8>
jnp    14eb <test_dist_x+0x3db>
add    $0x1,%ecx
movsd  -0x10(%rax),%xmm2
cmp    $0x5,%rsi
jae    1500 <test_dist_x+0x3f0>
ucomisd %xmm0,%xmm2
jne    1508 <test_dist_x+0x3f8>
jp     1508 <test_dist_x+0x3f8>
jmp    150b <test_dist_x+0x3fb>
ucomisd %xmm1,%xmm2
jne    1508 <test_dist_x+0x3f8>
jnp    150b <test_dist_x+0x3fb>
add    $0x1,%ecx
movsd  -0x8(%rax),%xmm2
cmp    $0x5,%rsi
jae    1520 <test_dist_x+0x410>
ucomisd %xmm0,%xmm2
jne    1528 <test_dist_x+0x418>
jp     1528 <test_dist_x+0x418>
jmp    152b <test_dist_x+0x41b>
ucomisd %xmm1,%xmm2
jne    1528 <test_dist_x+0x418>
jnp    152b <test_dist_x+0x41b>
add    $0x1,%ecx
movsd  (%rax),%xmm2
cmp    $0x5,%rsi
jae    1550 <test_dist_x+0x440>
ucomisd %xmm0,%xmm2
jne    155c <test_dist_x+0x44c>
jp     155c <test_dist_x+0x44c>
jmp    13b0 <test_dist_x+0x2a0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
ucomisd %xmm1,%xmm2
jne    155c <test_dist_x+0x44c>
jnp    13b0 <test_dist_x+0x2a0>
add    $0x1,%ecx
jmp    13b0 <test_dist_x+0x2a0>
lea    (%r10,%r10,2),%rax
shl    $0x5,%rax
mov    %rax,0x18(%rsp)
lea    (%rdi,%rax,1),%r9
xor    %r8d,%r8d
mov    %rdi,%r11
jmp    159c <test_dist_x+0x48c>
nopl   (%rax)
add    $0x1,%r8
add    $0x1e00,%r9
add    $0x1e00,%r11
cmp    $0x6,%r8
je     1632 <test_dist_x+0x522>
mov    %r11,%rsi
mov    %r9,%r15
xor    %r13d,%r13d
jmp    15c8 <test_dist_x+0x4b8>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r13
add    $0x3c0,%r15
add    $0x3c0,%rsi
cmp    $0x8,%r13
je     1580 <test_dist_x+0x470>
cmp    $0xfffffffc,%r12d
jl     15b0 <test_dist_x+0x4a0>
mov    %r15,%rdx
mov    %r10,%rax
jmp    15ed <test_dist_x+0x4dd>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rax
add    $0x60,%rdx
cmp    $0xa,%eax
je     15b0 <test_dist_x+0x4a0>
mov    %eax,%ebx
lea    (%rbx,%rbx,2),%rbp
shl    $0x5,%rbp
add    %rsi,%rbp
xor    %ebx,%ebx
jmp    160a <test_dist_x+0x4fa>
xchg   %ax,%ax
add    $0x1,%rbx
cmp    $0xc,%rbx
je     15e0 <test_dist_x+0x4d0>
cmp    $0x5,%rax
jl     1620 <test_dist_x+0x510>
movsd  0x0(%rbp,%rbx,8),%xmm2
ucomisd %xmm1,%xmm2
jne    162d <test_dist_x+0x51d>
jp     162d <test_dist_x+0x51d>
jmp    1600 <test_dist_x+0x4f0>
movsd  (%rdx,%rbx,8),%xmm2
ucomisd %xmm0,%xmm2
jne    162d <test_dist_x+0x51d>
jnp    1600 <test_dist_x+0x4f0>
add    $0x1,%ecx
jmp    1600 <test_dist_x+0x4f0>
test   %ecx,%ecx
je     1a65 <test_dist_x+0x955>
mov    %rdi,0x10(%rsp)
lea    0x58(%rdi),%rax
xor    %r12d,%r12d
lea    0x9e3(%rip),%r15
jmp    1669 <test_dist_x+0x559>
nop
add    $0x1,%r12
mov    0x20(%rsp),%rax
add    $0x1e00,%rax
cmp    $0x6,%r12
je     184f <test_dist_x+0x73f>
mov    %rax,0x20(%rsp)
mov    %rax,(%rsp)
xor    %r13d,%r13d
jmp    1692 <test_dist_x+0x582>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r13
addq   $0x3c0,(%rsp)
cmp    $0x8,%r13
je     1650 <test_dist_x+0x540>
mov    0x80(%rsp),%eax
cmp    $0xfffffffc,%eax
jl     1680 <test_dist_x+0x570>
mov    (%rsp),%rbp
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  -0x58(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
xor    %r9d,%r9d
call   1030 <printf@plt>
movsd  -0x50(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x1,%r9d
call   1030 <printf@plt>
movsd  -0x48(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x2,%r9d
call   1030 <printf@plt>
movsd  -0x40(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x3,%r9d
call   1030 <printf@plt>
movsd  -0x38(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x4,%r9d
call   1030 <printf@plt>
movsd  -0x30(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x5,%r9d
call   1030 <printf@plt>
movsd  -0x28(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x6,%r9d
call   1030 <printf@plt>
movsd  -0x20(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x7,%r9d
call   1030 <printf@plt>
movsd  -0x18(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x8,%r9d
call   1030 <printf@plt>
movsd  -0x10(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0x9,%r9d
call   1030 <printf@plt>
movsd  -0x8(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0xa,%r9d
call   1030 <printf@plt>
movsd  0x0(%rbp),%xmm0
mov    %r15,%rdi
mov    $0x1,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    $0xb,%r9d
call   1030 <printf@plt>
add    $0x1,%rbx
add    $0x60,%rbp
cmp    %rbx,%r14
jne    16b0 <test_dist_x+0x5a0>
jmp    1680 <test_dist_x+0x570>
mov    0x10(%rsp),%rax
mov    0x18(%rsp),%rcx
lea    (%rax,%rcx,1),%r12
add    $0x58,%r12
xor    %r15d,%r15d
lea    0x7c5(%rip),%r14
jmp    1889 <test_dist_x+0x779>
nopl   (%rax)
add    $0x1,%r15
mov    (%rsp),%r12
add    $0x1e00,%r12
cmp    $0x6,%r15
je     1a5e <test_dist_x+0x94e>
mov    %r12,(%rsp)
xor    %ebx,%ebx
jmp    18b1 <test_dist_x+0x7a1>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rbx
add    $0x3c0,%r12
cmp    $0x8,%rbx
je     1870 <test_dist_x+0x760>
cmpl   $0xfffffffc,0x78(%rsp)
jl     18a0 <test_dist_x+0x790>
mov    %r12,%r13
mov    0xc(%rsp),%ebp
nop
movsd  -0x58(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
xor    %r9d,%r9d
call   1030 <printf@plt>
movsd  -0x50(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x1,%r9d
call   1030 <printf@plt>
movsd  -0x48(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x2,%r9d
call   1030 <printf@plt>
movsd  -0x40(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x3,%r9d
call   1030 <printf@plt>
movsd  -0x38(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x4,%r9d
call   1030 <printf@plt>
movsd  -0x30(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x5,%r9d
call   1030 <printf@plt>
movsd  -0x28(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x6,%r9d
call   1030 <printf@plt>
movsd  -0x20(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x7,%r9d
call   1030 <printf@plt>
movsd  -0x18(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x8,%r9d
call   1030 <printf@plt>
movsd  -0x10(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0x9,%r9d
call   1030 <printf@plt>
movsd  -0x8(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0xa,%r9d
call   1030 <printf@plt>
movsd  0x0(%r13),%xmm0
mov    %r14,%rdi
mov    $0x2,%esi
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    $0xb,%r9d
call   1030 <printf@plt>
add    $0x1,%ebp
add    $0x60,%r13
cmp    $0xa,%ebp
jne    18c0 <test_dist_x+0x7b0>
jmp    18a0 <test_dist_x+0x790>
mov    $0x1,%eax
jmp    1a67 <test_dist_x+0x957>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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