#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*/ check_offloading();
int /*<<< orphan*/ printf(char *, ...);
int main(void) {
  check_offloading();
  double A[(992)], B[(992)], C[(992)], D[(992)], E[(992)];
  {
    int i;
    for (i = 0; i < (992); i++) {
      {
        C[i] = 1;
        D[i] = i;
        E[i] = -i;
      }
    }
  };
  for (int t = 0; t <= 224; t++) {
    int threads[1];
    threads[0] = t;

#pragma omp parallel if (threads[0] > 1) num_threads(threads[0])

#pragma omp for nowait schedule(static, 1)

#pragma omp single

#pragma omp for schedule(static, 1)
    {
      int fail = 0;
      int trial;
      for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(1024)
        {{for (int i = 0; i < (992); i++){A[i] = 1;
        B[i] = 0;
      }
      {
        for (int i = 0; i < (992); i++) {
          B[i] = D[i] - E[i];
        }
        {
          for (int i = 0; i < (992); i++) {
            A[i] += C[i] + D[i];
          }
        }
        for (int i = 0; i < (992); i++) {
          B[i] += A[i];
        }
      }
    }
  }
  {
    int i;
    int errorNum = 0;
    for (i = 0; i < (992); i++) {
      if (B[i] != 3 * i + 2) {
        printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]",
               3 * i + 2, B[i]);
        fail = 1;
        if (errorNum++ > 10)
          break;
      }
    }
  }
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
}
for (int t = 0; t <= 224; t++) {
  int threads[1];
  threads[0] = t;

#pragma omp parallel if (threads[0] > 1) num_threads(threads[0])

#pragma omp for nowait schedule(static, 1)

#pragma omp single nowait private(A)

#pragma omp for schedule(static, 1)
  {
    int fail = 0;
    int trial;
    for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(1024)
      {{for (int i = 0; i < (992); i++){A[i] = 1;
      B[i] = 0;
    }
    {
      for (int i = 0; i < (992); i++) {
        B[i] = D[i] - E[i];
      }
      {
        for (int i = 0; i < (992); i++) {
          A[i] += C[i] + D[i];
        }
      }
      for (int i = 0; i < (992); i++) {
        B[i] += A[i];
      }
    }
  }
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < (992); i++) {
    if (B[i] != 2 * i + 1) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]",
             2 * i + 1, B[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
}
for (int t = 0; t <= 224; t++) {
  int threads[1];
  threads[0] = t;

#pragma omp parallel if (threads[0] > 1) num_threads(threads[0])

#pragma omp for schedule(static, 1)

#pragma omp single firstprivate(A)

#pragma omp for schedule(static, 1)
  {
    int fail = 0;
    int trial;
    for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(1024)
      {{for (int i = 0; i < (992); i++){A[i] = 1;
      B[i] = 0;
    }
    {
      for (int i = 0; i < (992); i++) {
        B[i] = D[i] - E[i];
      }
      {
        for (int i = 0; i < (992); i++) {
          A[i] += C[i] + D[i];
          B[i] += A[i];
        }
      }
      for (int i = 0; i < (992); i++) {
        B[i] += A[i];
      }
    }
  }
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < (992); i++) {
    if (B[i] != 3 * i + 3) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]",
             3 * i + 3, B[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
}
return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x9ba0,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1040 <check_offloading@plt>
movl   $0x0,-0x9b14(%rbp)
cmpl   $0x3e0,-0x9b14(%rbp)
jge    11b3 <main+0x93>
movslq -0x9b14(%rbp),%rax
movsd  0xe9e(%rip),%xmm0
movsd  %xmm0,-0x5d10(%rbp,%rax,8)
ff ff
cvtsi2sdl -0x9b14(%rbp),%xmm0
ff
movslq -0x9b14(%rbp),%rax
movsd  %xmm0,-0x7c10(%rbp,%rax,8)
ff ff
xor    %eax,%eax
sub    -0x9b14(%rbp),%eax
cvtsi2sd %eax,%xmm0
movslq -0x9b14(%rbp),%rax
movsd  %xmm0,-0x9b10(%rbp,%rax,8)
ff ff
mov    -0x9b14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b14(%rbp)
jmp    1143 <main+0x23>
movl   $0x0,-0x9b18(%rbp)
cmpl   $0xe0,-0x9b18(%rbp)
jg     14cd <main+0x3ad>
mov    -0x9b18(%rbp),%eax
mov    %eax,-0x9b1c(%rbp)
movl   $0x0,-0x9b20(%rbp)
movl   $0x0,-0x9b28(%rbp)
xor    %eax,%eax
cmpl   $0x1,-0x9b28(%rbp)
mov    %al,-0x9b99(%rbp)
jge    1212 <main+0xf2>
cmpl   $0x0,-0x9b20(%rbp)
sete   %al
mov    %al,-0x9b99(%rbp)
mov    -0x9b99(%rbp),%al
test   $0x1,%al
jne    1225 <main+0x105>
jmp    1486 <main+0x366>
movl   $0x0,-0x9b2c(%rbp)
cmpl   $0x3e0,-0x9b2c(%rbp)
jge    127e <main+0x15e>
movslq -0x9b2c(%rbp),%rax
movsd  0xdb2(%rip),%xmm0
movsd  %xmm0,-0x1f10(%rbp,%rax,8)
ff ff
movslq -0x9b2c(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b2c(%rbp)
jmp    122f <main+0x10f>
movl   $0x0,-0x9b30(%rbp)
cmpl   $0x3e0,-0x9b30(%rbp)
jge    12dc <main+0x1bc>
movslq -0x9b30(%rbp),%rax
movsd  -0x7c10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b30(%rbp),%rax
subsd  -0x9b10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b30(%rbp),%rax
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b30(%rbp)
jmp    1288 <main+0x168>
movl   $0x0,-0x9b34(%rbp)
cmpl   $0x3e0,-0x9b34(%rbp)
jge    1343 <main+0x223>
movslq -0x9b34(%rbp),%rax
movsd  -0x5d10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b34(%rbp),%rax
addsd  -0x7c10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b34(%rbp),%rax
addsd  -0x1f10(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x1f10(%rbp,%rax,8)
ff ff
mov    -0x9b34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b34(%rbp)
jmp    12e6 <main+0x1c6>
movl   $0x0,-0x9b38(%rbp)
cmpl   $0x3e0,-0x9b38(%rbp)
jge    139a <main+0x27a>
movslq -0x9b38(%rbp),%rax
movsd  -0x1f10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b38(%rbp),%rax
addsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b38(%rbp)
jmp    134d <main+0x22d>
movl   $0x0,-0x9b40(%rbp)
movl   $0x0,-0x9b3c(%rbp)
cmpl   $0x3e0,-0x9b3c(%rbp)
jge    146d <main+0x34d>
movslq -0x9b3c(%rbp),%rax
movsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
imul   $0x3,-0x9b3c(%rbp),%eax
add    $0x2,%eax
cvtsi2sd %eax,%xmm1
ucomisd %xmm1,%xmm0
jne    13f1 <main+0x2d1>
jp     13f1 <main+0x2d1>
jmp    1454 <main+0x334>
mov    -0x9b3c(%rbp),%esi
imul   $0x3,-0x9b3c(%rbp),%ecx
add    $0x2,%ecx
movslq -0x9b3c(%rbp),%rax
movsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
lea    0xbf0(%rip),%rdi
lea    0xc15(%rip),%rdx
mov    $0x1,%al
call   1030 <printf@plt>
movl   $0x1,-0x9b20(%rbp)
mov    -0x9b40(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x9b40(%rbp)
cmp    $0xa,%eax
jle    144f <main+0x32f>
jmp    146d <main+0x34d>
jmp    1454 <main+0x334>
jmp    1459 <main+0x339>
mov    -0x9b3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b3c(%rbp)
jmp    13ae <main+0x28e>
jmp    1472 <main+0x352>
mov    -0x9b28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b28(%rbp)
jmp    11ed <main+0xcd>
cmpl   $0x0,-0x9b20(%rbp)
je     14a6 <main+0x386>
lea    0xb9f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14b4 <main+0x394>
lea    0xb94(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14b9 <main+0x399>
mov    -0x9b18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b18(%rbp)
jmp    11bd <main+0x9d>
movl   $0x0,-0x9b44(%rbp)
cmpl   $0xe0,-0x9b44(%rbp)
jg     17eb <main+0x6cb>
mov    -0x9b44(%rbp),%eax
mov    %eax,-0x9b48(%rbp)
movl   $0x0,-0x9b4c(%rbp)
movl   $0x0,-0x9b54(%rbp)
xor    %eax,%eax
cmpl   $0x1,-0x9b54(%rbp)
mov    %al,-0x9b9a(%rbp)
jge    152c <main+0x40c>
cmpl   $0x0,-0x9b4c(%rbp)
sete   %al
mov    %al,-0x9b9a(%rbp)
mov    -0x9b9a(%rbp),%al
test   $0x1,%al
jne    153f <main+0x41f>
jmp    17a4 <main+0x684>
movl   $0x0,-0x9b58(%rbp)
cmpl   $0x3e0,-0x9b58(%rbp)
jge    1598 <main+0x478>
movslq -0x9b58(%rbp),%rax
movsd  0xa98(%rip),%xmm0
movsd  %xmm0,-0x1f10(%rbp,%rax,8)
ff ff
movslq -0x9b58(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b58(%rbp)
jmp    1549 <main+0x429>
movl   $0x0,-0x9b5c(%rbp)
cmpl   $0x3e0,-0x9b5c(%rbp)
jge    15f6 <main+0x4d6>
movslq -0x9b5c(%rbp),%rax
movsd  -0x7c10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b5c(%rbp),%rax
subsd  -0x9b10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b5c(%rbp),%rax
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b5c(%rbp)
jmp    15a2 <main+0x482>
movl   $0x0,-0x9b60(%rbp)
cmpl   $0x3e0,-0x9b60(%rbp)
jge    165d <main+0x53d>
movslq -0x9b60(%rbp),%rax
movsd  -0x5d10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b60(%rbp),%rax
addsd  -0x7c10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b60(%rbp),%rax
addsd  -0x1f10(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x1f10(%rbp,%rax,8)
ff ff
mov    -0x9b60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b60(%rbp)
jmp    1600 <main+0x4e0>
movl   $0x0,-0x9b64(%rbp)
cmpl   $0x3e0,-0x9b64(%rbp)
jge    16b4 <main+0x594>
movslq -0x9b64(%rbp),%rax
movsd  -0x1f10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b64(%rbp),%rax
addsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b64(%rbp)
jmp    1667 <main+0x547>
movl   $0x0,-0x9b6c(%rbp)
movl   $0x0,-0x9b68(%rbp)
cmpl   $0x3e0,-0x9b68(%rbp)
jge    178b <main+0x66b>
movslq -0x9b68(%rbp),%rax
movsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
mov    -0x9b68(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm1
ucomisd %xmm1,%xmm0
jne    170d <main+0x5ed>
jp     170d <main+0x5ed>
jmp    1772 <main+0x652>
mov    -0x9b68(%rbp),%esi
mov    -0x9b68(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq -0x9b68(%rbp),%rax
movsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
lea    0x8d2(%rip),%rdi
lea    0x8f7(%rip),%rdx
mov    $0x1,%al
call   1030 <printf@plt>
movl   $0x1,-0x9b4c(%rbp)
mov    -0x9b6c(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x9b6c(%rbp)
cmp    $0xa,%eax
jle    176d <main+0x64d>
jmp    178b <main+0x66b>
jmp    1772 <main+0x652>
jmp    1777 <main+0x657>
mov    -0x9b68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b68(%rbp)
jmp    16c8 <main+0x5a8>
jmp    1790 <main+0x670>
mov    -0x9b54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b54(%rbp)
jmp    1507 <main+0x3e7>
cmpl   $0x0,-0x9b4c(%rbp)
je     17c4 <main+0x6a4>
lea    0x881(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17d2 <main+0x6b2>
lea    0x876(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17d7 <main+0x6b7>
mov    -0x9b44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b44(%rbp)
jmp    14d7 <main+0x3b7>
movl   $0x0,-0x9b70(%rbp)
cmpl   $0xe0,-0x9b70(%rbp)
jg     1b2e <main+0xa0e>
mov    -0x9b70(%rbp),%eax
mov    %eax,-0x9b74(%rbp)
movl   $0x0,-0x9b78(%rbp)
movl   $0x0,-0x9b80(%rbp)
xor    %eax,%eax
cmpl   $0x1,-0x9b80(%rbp)
mov    %al,-0x9b9b(%rbp)
jge    184a <main+0x72a>
cmpl   $0x0,-0x9b78(%rbp)
sete   %al
mov    %al,-0x9b9b(%rbp)
mov    -0x9b9b(%rbp),%al
test   $0x1,%al
jne    185d <main+0x73d>
jmp    1ae7 <main+0x9c7>
movl   $0x0,-0x9b84(%rbp)
cmpl   $0x3e0,-0x9b84(%rbp)
jge    18b6 <main+0x796>
movslq -0x9b84(%rbp),%rax
movsd  0x77a(%rip),%xmm0
movsd  %xmm0,-0x1f10(%rbp,%rax,8)
ff ff
movslq -0x9b84(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b84(%rbp)
jmp    1867 <main+0x747>
movl   $0x0,-0x9b88(%rbp)
cmpl   $0x3e0,-0x9b88(%rbp)
jge    1914 <main+0x7f4>
movslq -0x9b88(%rbp),%rax
movsd  -0x7c10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b88(%rbp),%rax
subsd  -0x9b10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b88(%rbp),%rax
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b88(%rbp)
jmp    18c0 <main+0x7a0>
movl   $0x0,-0x9b8c(%rbp)
cmpl   $0x3e0,-0x9b8c(%rbp)
jge    19a4 <main+0x884>
movslq -0x9b8c(%rbp),%rax
movsd  -0x5d10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b8c(%rbp),%rax
addsd  -0x7c10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b8c(%rbp),%rax
addsd  -0x1f10(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x1f10(%rbp,%rax,8)
ff ff
movslq -0x9b8c(%rbp),%rax
movsd  -0x1f10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b8c(%rbp),%rax
addsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b8c(%rbp)
jmp    191e <main+0x7fe>
movl   $0x0,-0x9b90(%rbp)
cmpl   $0x3e0,-0x9b90(%rbp)
jge    19fb <main+0x8db>
movslq -0x9b90(%rbp),%rax
movsd  -0x1f10(%rbp,%rax,8),%xmm0
ff ff
movslq -0x9b90(%rbp),%rax
addsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x3e10(%rbp,%rax,8)
ff ff
mov    -0x9b90(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b90(%rbp)
jmp    19ae <main+0x88e>
movl   $0x0,-0x9b98(%rbp)
movl   $0x0,-0x9b94(%rbp)
cmpl   $0x3e0,-0x9b94(%rbp)
jge    1ace <main+0x9ae>
movslq -0x9b94(%rbp),%rax
movsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
imul   $0x3,-0x9b94(%rbp),%eax
add    $0x3,%eax
cvtsi2sd %eax,%xmm1
ucomisd %xmm1,%xmm0
jne    1a52 <main+0x932>
jp     1a52 <main+0x932>
jmp    1ab5 <main+0x995>
mov    -0x9b94(%rbp),%esi
imul   $0x3,-0x9b94(%rbp),%ecx
add    $0x3,%ecx
movslq -0x9b94(%rbp),%rax
movsd  -0x3e10(%rbp,%rax,8),%xmm0
ff ff
lea    0x58f(%rip),%rdi
lea    0x5b4(%rip),%rdx
mov    $0x1,%al
call   1030 <printf@plt>
movl   $0x1,-0x9b78(%rbp)
mov    -0x9b98(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x9b98(%rbp)
cmp    $0xa,%eax
jle    1ab0 <main+0x990>
jmp    1ace <main+0x9ae>
jmp    1ab5 <main+0x995>
jmp    1aba <main+0x99a>
mov    -0x9b94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b94(%rbp)
jmp    1a0f <main+0x8ef>
jmp    1ad3 <main+0x9b3>
mov    -0x9b80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b80(%rbp)
jmp    1825 <main+0x705>
cmpl   $0x0,-0x9b78(%rbp)
je     1b07 <main+0x9e7>
lea    0x53e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1b15 <main+0x9f5>
lea    0x533(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1b1a <main+0x9fa>
mov    -0x9b70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9b70(%rbp)
jmp    17f5 <main+0x6d5>
xor    %eax,%eax
add    $0x9ba0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x9b08,%rsp
xor    %eax,%eax
call   1060 <check_offloading@plt>
movdqa 0xea0(%rip),%xmm0
mov    $0x2,%eax
movdqa 0xea3(%rip),%xmm1
movaps 0xeac(%rip),%xmm7
movdqa 0xeb4(%rip),%xmm2
movdqa 0xebc(%rip),%xmm3
movdqa %xmm0,%xmm4
nopl   0x0(%rax,%rax,1)
movdqa %xmm0,%xmm5
paddd  %xmm1,%xmm5
movaps %xmm7,0x7bf0(%rsp,%rax,8)
cvtdq2pd %xmm0,%xmm6
cvtdq2pd %xmm5,%xmm5
movaps %xmm7,0x7c00(%rsp,%rax,8)
movaps %xmm6,0x3df0(%rsp,%rax,8)
movdqa %xmm5,0x3e00(%rsp,%rax,8)
pxor   %xmm5,%xmm5
psubd  %xmm4,%xmm5
movdqa %xmm2,%xmm6
psubd  %xmm4,%xmm6
cvtdq2pd %xmm5,%xmm5
cvtdq2pd %xmm6,%xmm6
movaps %xmm5,0x5cf0(%rsp,%rax,8)
movaps %xmm6,0x5d00(%rsp,%rax,8)
paddd  %xmm3,%xmm0
paddd  %xmm3,%xmm4
add    $0x4,%rax
cmp    $0x3e2,%rax
jne    1190 <main+0x50>
xor    %r13d,%r13d
lea    0xe49(%rip),%r15
lea    0xe6e(%rip),%r12
jmp    123a <main+0xfa>
test   %eax,%eax
lea    0xe72(%rip),%rdi
lea    0xe61(%rip),%rax
cmove  %rax,%rdi
call   1030 <puts@plt>
add    $0x1,%r13d
cmp    $0xe1,%r13d
je     14dc <main+0x39c>
mov    $0x1f00,%edx
lea    0x1f00(%rsp),%rdi
xor    %esi,%esi
call   1050 <memset@plt>
mov    $0x1e,%eax
movdqa 0xdc5(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movdqa %xmm0,-0xf0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xe0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xd0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xc0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xb0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xa0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0x90(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0x80(%rsp,%rax,8)
movdqa %xmm0,-0x70(%rsp,%rax,8)
movdqa %xmm0,-0x60(%rsp,%rax,8)
movdqa %xmm0,-0x50(%rsp,%rax,8)
movdqa %xmm0,-0x40(%rsp,%rax,8)
movdqa %xmm0,-0x30(%rsp,%rax,8)
movdqa %xmm0,-0x20(%rsp,%rax,8)
movdqa %xmm0,-0x10(%rsp,%rax,8)
movdqa %xmm0,(%rsp,%rax,8)
add    $0x20,%rax
cmp    $0x3fe,%rax
jne    1260 <main+0x120>
mov    $0x6,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movapd 0x3dd0(%rsp,%rax,8),%xmm0
movapd 0x3de0(%rsp,%rax,8),%xmm1
movapd 0x3df0(%rsp,%rax,8),%xmm2
movapd 0x3e00(%rsp,%rax,8),%xmm3
subpd  0x5cd0(%rsp,%rax,8),%xmm0
subpd  0x5ce0(%rsp,%rax,8),%xmm1
movapd %xmm0,0x1ed0(%rsp,%rax,8)
movapd %xmm1,0x1ee0(%rsp,%rax,8)
subpd  0x5cf0(%rsp,%rax,8),%xmm2
subpd  0x5d00(%rsp,%rax,8),%xmm3
movapd %xmm2,0x1ef0(%rsp,%rax,8)
movapd %xmm3,0x1f00(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    12f0 <main+0x1b0>
mov    $0x6,%eax
nopl   (%rax)
movapd 0x7bd0(%rsp,%rax,8),%xmm0
movapd 0x7be0(%rsp,%rax,8),%xmm1
movapd 0x7bf0(%rsp,%rax,8),%xmm2
movapd 0x7c00(%rsp,%rax,8),%xmm3
addpd  0x3dd0(%rsp,%rax,8),%xmm0
addpd  0x3de0(%rsp,%rax,8),%xmm1
addpd  -0x30(%rsp,%rax,8),%xmm0
addpd  -0x20(%rsp,%rax,8),%xmm1
movapd %xmm0,-0x30(%rsp,%rax,8)
movapd %xmm1,-0x20(%rsp,%rax,8)
addpd  0x3df0(%rsp,%rax,8),%xmm2
addpd  0x3e00(%rsp,%rax,8),%xmm3
addpd  -0x10(%rsp,%rax,8),%xmm2
addpd  (%rsp,%rax,8),%xmm3
movapd %xmm2,-0x10(%rsp,%rax,8)
movapd %xmm3,(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    1370 <main+0x230>
mov    $0x6,%eax
nopl   0x0(%rax,%rax,1)
movapd -0x30(%rsp,%rax,8),%xmm0
movapd -0x20(%rsp,%rax,8),%xmm1
movapd -0x10(%rsp,%rax,8),%xmm2
movapd (%rsp,%rax,8),%xmm3
addpd  0x1ed0(%rsp,%rax,8),%xmm0
addpd  0x1ee0(%rsp,%rax,8),%xmm1
movapd %xmm0,0x1ed0(%rsp,%rax,8)
movapd %xmm1,0x1ee0(%rsp,%rax,8)
addpd  0x1ef0(%rsp,%rax,8),%xmm2
addpd  0x1f00(%rsp,%rax,8),%xmm3
movapd %xmm2,0x1ef0(%rsp,%rax,8)
movapd %xmm3,0x1f00(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    1400 <main+0x2c0>
xor    %ebx,%ebx
mov    $0x2,%ebp
xor    %r14d,%r14d
xor    %eax,%eax
jmp    1494 <main+0x354>
nopl   0x0(%rax)
add    $0x1,%rbx
add    $0x3,%ebp
cmp    $0x3e0,%rbx
je     1210 <main+0xd0>
movsd  0x1f00(%rsp,%rbx,8),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
ucomisd %xmm1,%xmm0
jne    14ac <main+0x36c>
jnp    1480 <main+0x340>
mov    %r15,%rdi
mov    %ebx,%esi
mov    %r12,%rdx
mov    %ebp,%ecx
mov    $0x1,%al
call   1040 <printf@plt>
cmp    $0xa,%r14d
jg     14d0 <main+0x390>
add    $0x1,%r14d
mov    $0x1,%eax
jmp    1480 <main+0x340>
xchg   %ax,%ax
lea    0xbb4(%rip),%rdi
jmp    1224 <main+0xe4>
xor    %r13d,%r13d
lea    0xb6a(%rip),%r15
lea    0xb8f(%rip),%r12
jmp    151a <main+0x3da>
nop
test   %eax,%eax
lea    0xb92(%rip),%rdi
lea    0xb81(%rip),%rax
cmove  %rax,%rdi
call   1030 <puts@plt>
add    $0x1,%r13d
cmp    $0xe1,%r13d
je     17bc <main+0x67c>
mov    $0x1f00,%edx
lea    0x1f00(%rsp),%rdi
xor    %esi,%esi
call   1050 <memset@plt>
mov    $0x1e,%eax
movdqa 0xae5(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movdqa %xmm0,-0xf0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xe0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xd0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xc0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xb0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xa0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0x90(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0x80(%rsp,%rax,8)
movdqa %xmm0,-0x70(%rsp,%rax,8)
movdqa %xmm0,-0x60(%rsp,%rax,8)
movdqa %xmm0,-0x50(%rsp,%rax,8)
movdqa %xmm0,-0x40(%rsp,%rax,8)
movdqa %xmm0,-0x30(%rsp,%rax,8)
movdqa %xmm0,-0x20(%rsp,%rax,8)
movdqa %xmm0,-0x10(%rsp,%rax,8)
movdqa %xmm0,(%rsp,%rax,8)
add    $0x20,%rax
cmp    $0x3fe,%rax
jne    1540 <main+0x400>
mov    $0x6,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movapd 0x3dd0(%rsp,%rax,8),%xmm0
movapd 0x3de0(%rsp,%rax,8),%xmm1
movapd 0x3df0(%rsp,%rax,8),%xmm2
movapd 0x3e00(%rsp,%rax,8),%xmm3
subpd  0x5cd0(%rsp,%rax,8),%xmm0
subpd  0x5ce0(%rsp,%rax,8),%xmm1
movapd %xmm0,0x1ed0(%rsp,%rax,8)
movapd %xmm1,0x1ee0(%rsp,%rax,8)
subpd  0x5cf0(%rsp,%rax,8),%xmm2
subpd  0x5d00(%rsp,%rax,8),%xmm3
movapd %xmm2,0x1ef0(%rsp,%rax,8)
movapd %xmm3,0x1f00(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    15d0 <main+0x490>
mov    $0x6,%eax
nopl   (%rax)
movapd 0x7bd0(%rsp,%rax,8),%xmm0
movapd 0x7be0(%rsp,%rax,8),%xmm1
movapd 0x7bf0(%rsp,%rax,8),%xmm2
movapd 0x7c00(%rsp,%rax,8),%xmm3
addpd  0x3dd0(%rsp,%rax,8),%xmm0
addpd  0x3de0(%rsp,%rax,8),%xmm1
addpd  -0x30(%rsp,%rax,8),%xmm0
addpd  -0x20(%rsp,%rax,8),%xmm1
movapd %xmm0,-0x30(%rsp,%rax,8)
movapd %xmm1,-0x20(%rsp,%rax,8)
addpd  0x3df0(%rsp,%rax,8),%xmm2
addpd  0x3e00(%rsp,%rax,8),%xmm3
addpd  -0x10(%rsp,%rax,8),%xmm2
addpd  (%rsp,%rax,8),%xmm3
movapd %xmm2,-0x10(%rsp,%rax,8)
movapd %xmm3,(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    1650 <main+0x510>
mov    $0x6,%eax
nopl   0x0(%rax,%rax,1)
movapd -0x30(%rsp,%rax,8),%xmm0
movapd -0x20(%rsp,%rax,8),%xmm1
movapd -0x10(%rsp,%rax,8),%xmm2
movapd (%rsp,%rax,8),%xmm3
addpd  0x1ed0(%rsp,%rax,8),%xmm0
addpd  0x1ee0(%rsp,%rax,8),%xmm1
movapd %xmm0,0x1ed0(%rsp,%rax,8)
movapd %xmm1,0x1ee0(%rsp,%rax,8)
addpd  0x1ef0(%rsp,%rax,8),%xmm2
addpd  0x1f00(%rsp,%rax,8),%xmm3
movapd %xmm2,0x1ef0(%rsp,%rax,8)
movapd %xmm3,0x1f00(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    16e0 <main+0x5a0>
xor    %ebx,%ebx
mov    $0x1,%ebp
xor    %r14d,%r14d
xor    %eax,%eax
jmp    1774 <main+0x634>
nopl   0x0(%rax)
add    $0x1,%rbx
add    $0x2,%ebp
cmp    $0x3e0,%rbx
je     14f0 <main+0x3b0>
movsd  0x1f00(%rsp,%rbx,8),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
ucomisd %xmm1,%xmm0
jne    178c <main+0x64c>
jnp    1760 <main+0x620>
mov    %r15,%rdi
mov    %ebx,%esi
mov    %r12,%rdx
mov    %ebp,%ecx
mov    $0x1,%al
call   1040 <printf@plt>
cmp    $0xa,%r14d
jg     17b0 <main+0x670>
add    $0x1,%r14d
mov    $0x1,%eax
jmp    1760 <main+0x620>
xchg   %ax,%ax
lea    0x8d4(%rip),%rdi
jmp    1504 <main+0x3c4>
xor    %r13d,%r13d
lea    0x88a(%rip),%r15
lea    0x8af(%rip),%r12
jmp    17fa <main+0x6ba>
nop
test   %eax,%eax
lea    0x8b2(%rip),%rdi
lea    0x8a1(%rip),%rax
cmove  %rax,%rdi
call   1030 <puts@plt>
add    $0x1,%r13d
cmp    $0xe1,%r13d
je     1a7c <main+0x93c>
mov    $0x1f00,%edx
lea    0x1f00(%rsp),%rdi
xor    %esi,%esi
call   1050 <memset@plt>
mov    $0x1e,%eax
movdqa 0x805(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movdqa %xmm0,-0xf0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xe0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xd0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xc0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xb0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0xa0(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0x90(%rsp,%rax,8)
ff ff
movdqa %xmm0,-0x80(%rsp,%rax,8)
movdqa %xmm0,-0x70(%rsp,%rax,8)
movdqa %xmm0,-0x60(%rsp,%rax,8)
movdqa %xmm0,-0x50(%rsp,%rax,8)
movdqa %xmm0,-0x40(%rsp,%rax,8)
movdqa %xmm0,-0x30(%rsp,%rax,8)
movdqa %xmm0,-0x20(%rsp,%rax,8)
movdqa %xmm0,-0x10(%rsp,%rax,8)
movdqa %xmm0,(%rsp,%rax,8)
add    $0x20,%rax
cmp    $0x3fe,%rax
jne    1820 <main+0x6e0>
mov    $0x6,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movapd 0x3dd0(%rsp,%rax,8),%xmm0
movapd 0x3de0(%rsp,%rax,8),%xmm1
movapd 0x3df0(%rsp,%rax,8),%xmm2
movapd 0x3e00(%rsp,%rax,8),%xmm3
subpd  0x5cd0(%rsp,%rax,8),%xmm0
subpd  0x5ce0(%rsp,%rax,8),%xmm1
movapd %xmm0,0x1ed0(%rsp,%rax,8)
movapd %xmm1,0x1ee0(%rsp,%rax,8)
subpd  0x5cf0(%rsp,%rax,8),%xmm2
subpd  0x5d00(%rsp,%rax,8),%xmm3
movapd %xmm2,0x1ef0(%rsp,%rax,8)
movapd %xmm3,0x1f00(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    18b0 <main+0x770>
mov    $0x2,%eax
nopl   (%rax)
movapd 0x7bf0(%rsp,%rax,8),%xmm0
addpd  0x3df0(%rsp,%rax,8),%xmm0
addpd  -0x10(%rsp,%rax,8),%xmm0
movapd 0x7c00(%rsp,%rax,8),%xmm1
movapd %xmm0,-0x10(%rsp,%rax,8)
addpd  0x1ef0(%rsp,%rax,8),%xmm0
addpd  0x3e00(%rsp,%rax,8),%xmm1
addpd  (%rsp,%rax,8),%xmm1
movapd %xmm0,0x1ef0(%rsp,%rax,8)
movapd %xmm1,(%rsp,%rax,8)
addpd  0x1f00(%rsp,%rax,8),%xmm1
movapd %xmm1,0x1f00(%rsp,%rax,8)
add    $0x4,%rax
cmp    $0x3e2,%rax
jne    1930 <main+0x7f0>
mov    $0x6,%eax
nop
movapd -0x30(%rsp,%rax,8),%xmm0
movapd -0x20(%rsp,%rax,8),%xmm1
movapd -0x10(%rsp,%rax,8),%xmm2
movapd (%rsp,%rax,8),%xmm3
addpd  0x1ed0(%rsp,%rax,8),%xmm0
addpd  0x1ee0(%rsp,%rax,8),%xmm1
movapd %xmm0,0x1ed0(%rsp,%rax,8)
movapd %xmm1,0x1ee0(%rsp,%rax,8)
addpd  0x1ef0(%rsp,%rax,8),%xmm2
addpd  0x1f00(%rsp,%rax,8),%xmm3
movapd %xmm2,0x1ef0(%rsp,%rax,8)
movapd %xmm3,0x1f00(%rsp,%rax,8)
add    $0x8,%rax
cmp    $0x3e6,%rax
jne    19a0 <main+0x860>
xor    %ebx,%ebx
mov    $0x3,%ebp
xor    %r14d,%r14d
xor    %eax,%eax
jmp    1a34 <main+0x8f4>
nopl   0x0(%rax)
add    $0x1,%rbx
add    $0x3,%ebp
cmp    $0x3e0,%rbx
je     17d0 <main+0x690>
movsd  0x1f00(%rsp,%rbx,8),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
ucomisd %xmm1,%xmm0
jne    1a4c <main+0x90c>
jnp    1a20 <main+0x8e0>
mov    %r15,%rdi
mov    %ebx,%esi
mov    %r12,%rdx
mov    %ebp,%ecx
mov    $0x1,%al
call   1040 <printf@plt>
cmp    $0xa,%r14d
jg     1a70 <main+0x930>
add    $0x1,%r14d
mov    $0x1,%eax
jmp    1a20 <main+0x8e0>
xchg   %ax,%ax
lea    0x614(%rip),%rdi
jmp    17e4 <main+0x6a4>
xor    %eax,%eax
add    $0x9b08,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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