#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();
long omp_is_initial_device();
int /*<<< orphan*/ printf(char *, ...);
int main(void) {
  check_offloading();
  int A[(1024 * 3)], B[(1024 * 3)], C[(1024 * 3)], D[(1024 * 3)], E[(1024 * 3)];
  int S[(1024 * 3)];
  {
    int i;
    for (i = 0; i < (1024 * 3); i++) {
      {
        C[i] = 1;
        D[i] = i;
        E[i] = -i;
      }
    }
  };
  long cpuExec = 0;
#pragma omp target map(tofrom : cpuExec)
  { cpuExec = omp_is_initial_device(); }
  int max_threads = 224;
  for (int t = 0; t <= max_threads; t++) {
    int threads = t;

#pragma omp parallel if (threads > 1) num_threads(threads)

#pragma omp for lastprivate(conditional : q0)

#pragma omp for schedule(auto) lastprivate(conditional : q1)

#pragma omp for schedule(dynamic) lastprivate(conditional : q2)

#pragma omp for schedule(guided) lastprivate(conditional : q3)

#pragma omp for schedule(runtime) lastprivate(conditional : q4)

#pragma omp for schedule(static) lastprivate(conditional : q5)

#pragma omp for schedule(static, 1) lastprivate(conditional : q6)

#pragma omp for schedule(static, 9) lastprivate(conditional : q7)

#pragma omp for schedule(static, 13) lastprivate(conditional : q8)

#pragma omp for schedule(static, 30000) lastprivate(conditional : q9)
    {
      int fail = 0;
      int trial;
      for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(1024)
        {{S[0] = 0;
        double q0;
        double q1;
        double q2;
        double q3;
        double q4;
        double q5;
        double q6;
        double q7;
        double q8;
        double q9;
        q0 = q1 = q2 = q3 = q4 = q5 = q6 = q7 = q8 = q9 = 0;
        {
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q0 = C[i] + D[i];
            A[i] += q0;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q1 = C[i] + D[i];
            B[i] += q1;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q2 = C[i] + D[i];
            A[i] += q2;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q3 = C[i] + D[i];
            B[i] += q3;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q4 = C[i] + D[i];
            A[i] += q4;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q5 = C[i] + D[i];
            B[i] += q5;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q6 = C[i] + D[i];
            A[i] += q6;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q7 = C[i] + D[i];
            B[i] += q7;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q8 = C[i] + D[i];
            A[i] += q8;
          }
          for (int i = 0; i < (1024 * 3); i++) {
            if (D[i] % 10 == 0)
              q9 = C[i] + D[i];
            B[i] += q9;
          }
        }
        double tmp = q0 + q1 + q2 + q3 + q4 + q5 + q6 + q7 + q8 + q9;
        S[0] = tmp;
      }
    }
    {
      int i;
      int errorNum = 0;
      for (i = 0; i < 1; i++) {
        if (S[0] != 30710) {
          printf("Failed at %3d with %s, expected %f, got %f\n", i, "S[0]",
                 30710, S[0]);
          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    $0x120d0,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1040 <check_offloading@plt>
movl   $0x0,-0x12014(%rbp)
cmpl   $0xc00,-0x12014(%rbp)
jge    11b3 <main+0x83>
movslq -0x12014(%rbp),%rax
movl   $0x1,-0x9010(%rbp,%rax,4)
mov    -0x12014(%rbp),%ecx
movslq -0x12014(%rbp),%rax
mov    %ecx,-0xc010(%rbp,%rax,4)
xor    %ecx,%ecx
sub    -0x12014(%rbp),%ecx
movslq -0x12014(%rbp),%rax
mov    %ecx,-0xf010(%rbp,%rax,4)
mov    -0x12014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x12014(%rbp)
jmp    1153 <main+0x23>
movq   $0x0,-0x12020(%rbp)
mov    $0x0,%al
call   1050 <omp_is_initial_device@plt>
mov    %rax,-0x12020(%rbp)
movl   $0xe0,-0x12024(%rbp)
movl   $0x0,-0x12028(%rbp)
mov    -0x12028(%rbp),%eax
cmp    -0x12024(%rbp),%eax
jg     1a3f <main+0x90f>
mov    -0x12028(%rbp),%eax
mov    %eax,-0x1202c(%rbp)
movl   $0x0,-0x12030(%rbp)
movl   $0x0,-0x12038(%rbp)
xor    %eax,%eax
cmpl   $0x1,-0x12038(%rbp)
mov    %al,-0x120c1(%rbp)
jge    1237 <main+0x107>
cmpl   $0x0,-0x12030(%rbp)
sete   %al
mov    %al,-0x120c1(%rbp)
mov    -0x120c1(%rbp),%al
test   $0x1,%al
jne    124a <main+0x11a>
jmp    19f8 <main+0x8c8>
movl   $0x0,-0x12010(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12088(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12080(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12078(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12070(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12068(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12060(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12058(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12050(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12048(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x12040(%rbp)
ff
movl   $0x0,-0x1208c(%rbp)
cmpl   $0xc00,-0x1208c(%rbp)
jge    135e <main+0x22e>
movslq -0x1208c(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1323 <main+0x1f3>
movslq -0x1208c(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x1208c(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12040(%rbp)
ff
movsd  -0x12040(%rbp),%xmm1
ff
movslq -0x1208c(%rbp),%rax
cvtsi2sdl -0x3010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x3010(%rbp,%rax,4)
mov    -0x1208c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1208c(%rbp)
jmp    12cc <main+0x19c>
movl   $0x0,-0x12090(%rbp)
cmpl   $0xc00,-0x12090(%rbp)
jge    13fa <main+0x2ca>
movslq -0x12090(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    13bf <main+0x28f>
movslq -0x12090(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x12090(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12048(%rbp)
ff
movsd  -0x12048(%rbp),%xmm1
ff
movslq -0x12090(%rbp),%rax
cvtsi2sdl -0x6010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x6010(%rbp,%rax,4)
mov    -0x12090(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x12090(%rbp)
jmp    1368 <main+0x238>
movl   $0x0,-0x12094(%rbp)
cmpl   $0xc00,-0x12094(%rbp)
jge    1496 <main+0x366>
movslq -0x12094(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    145b <main+0x32b>
movslq -0x12094(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x12094(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12050(%rbp)
ff
movsd  -0x12050(%rbp),%xmm1
ff
movslq -0x12094(%rbp),%rax
cvtsi2sdl -0x3010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x3010(%rbp,%rax,4)
mov    -0x12094(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x12094(%rbp)
jmp    1404 <main+0x2d4>
movl   $0x0,-0x12098(%rbp)
cmpl   $0xc00,-0x12098(%rbp)
jge    1532 <main+0x402>
movslq -0x12098(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    14f7 <main+0x3c7>
movslq -0x12098(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x12098(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12058(%rbp)
ff
movsd  -0x12058(%rbp),%xmm1
ff
movslq -0x12098(%rbp),%rax
cvtsi2sdl -0x6010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x6010(%rbp,%rax,4)
mov    -0x12098(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x12098(%rbp)
jmp    14a0 <main+0x370>
movl   $0x0,-0x1209c(%rbp)
cmpl   $0xc00,-0x1209c(%rbp)
jge    15ce <main+0x49e>
movslq -0x1209c(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1593 <main+0x463>
movslq -0x1209c(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x1209c(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12060(%rbp)
ff
movsd  -0x12060(%rbp),%xmm1
ff
movslq -0x1209c(%rbp),%rax
cvtsi2sdl -0x3010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x3010(%rbp,%rax,4)
mov    -0x1209c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1209c(%rbp)
jmp    153c <main+0x40c>
movl   $0x0,-0x120a0(%rbp)
cmpl   $0xc00,-0x120a0(%rbp)
jge    166a <main+0x53a>
movslq -0x120a0(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    162f <main+0x4ff>
movslq -0x120a0(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x120a0(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12068(%rbp)
ff
movsd  -0x12068(%rbp),%xmm1
ff
movslq -0x120a0(%rbp),%rax
cvtsi2sdl -0x6010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x6010(%rbp,%rax,4)
mov    -0x120a0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120a0(%rbp)
jmp    15d8 <main+0x4a8>
movl   $0x0,-0x120a4(%rbp)
cmpl   $0xc00,-0x120a4(%rbp)
jge    1706 <main+0x5d6>
movslq -0x120a4(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    16cb <main+0x59b>
movslq -0x120a4(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x120a4(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12070(%rbp)
ff
movsd  -0x12070(%rbp),%xmm1
ff
movslq -0x120a4(%rbp),%rax
cvtsi2sdl -0x3010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x3010(%rbp,%rax,4)
mov    -0x120a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120a4(%rbp)
jmp    1674 <main+0x544>
movl   $0x0,-0x120a8(%rbp)
cmpl   $0xc00,-0x120a8(%rbp)
jge    17a2 <main+0x672>
movslq -0x120a8(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1767 <main+0x637>
movslq -0x120a8(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x120a8(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12078(%rbp)
ff
movsd  -0x12078(%rbp),%xmm1
ff
movslq -0x120a8(%rbp),%rax
cvtsi2sdl -0x6010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x6010(%rbp,%rax,4)
mov    -0x120a8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120a8(%rbp)
jmp    1710 <main+0x5e0>
movl   $0x0,-0x120ac(%rbp)
cmpl   $0xc00,-0x120ac(%rbp)
jge    183e <main+0x70e>
movslq -0x120ac(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1803 <main+0x6d3>
movslq -0x120ac(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x120ac(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12080(%rbp)
ff
movsd  -0x12080(%rbp),%xmm1
ff
movslq -0x120ac(%rbp),%rax
cvtsi2sdl -0x3010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x3010(%rbp,%rax,4)
mov    -0x120ac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120ac(%rbp)
jmp    17ac <main+0x67c>
movl   $0x0,-0x120b0(%rbp)
cmpl   $0xc00,-0x120b0(%rbp)
jge    18da <main+0x7aa>
movslq -0x120b0(%rbp),%rax
mov    -0xc010(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    189f <main+0x76f>
movslq -0x120b0(%rbp),%rax
mov    -0x9010(%rbp,%rax,4),%eax
movslq -0x120b0(%rbp),%rcx
add    -0xc010(%rbp,%rcx,4),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x12088(%rbp)
ff
movsd  -0x12088(%rbp),%xmm1
ff
movslq -0x120b0(%rbp),%rax
cvtsi2sdl -0x6010(%rbp,%rax,4),%xmm0
ff ff
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,-0x6010(%rbp,%rax,4)
mov    -0x120b0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120b0(%rbp)
jmp    1848 <main+0x718>
movsd  -0x12040(%rbp),%xmm0
ff
addsd  -0x12048(%rbp),%xmm0
ff
addsd  -0x12050(%rbp),%xmm0
ff
addsd  -0x12058(%rbp),%xmm0
ff
addsd  -0x12060(%rbp),%xmm0
ff
addsd  -0x12068(%rbp),%xmm0
ff
addsd  -0x12070(%rbp),%xmm0
ff
addsd  -0x12078(%rbp),%xmm0
ff
addsd  -0x12080(%rbp),%xmm0
ff
addsd  -0x12088(%rbp),%xmm0
ff
movsd  %xmm0,-0x120b8(%rbp)
ff
cvttsd2si -0x120b8(%rbp),%eax
ff
mov    %eax,-0x12010(%rbp)
movl   $0x0,-0x120c0(%rbp)
movl   $0x0,-0x120bc(%rbp)
cmpl   $0x1,-0x120bc(%rbp)
jge    19df <main+0x8af>
cmpl   $0x77f6,-0x12010(%rbp)
je     19c6 <main+0x896>
mov    -0x120bc(%rbp),%esi
mov    -0x12010(%rbp),%r8d
lea    0x67b(%rip),%rdi
lea    0x6a0(%rip),%rdx
mov    $0x77f6,%ecx
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x12030(%rbp)
mov    -0x120c0(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x120c0(%rbp)
cmp    $0xa,%eax
jle    19c1 <main+0x891>
jmp    19df <main+0x8af>
jmp    19c6 <main+0x896>
jmp    19cb <main+0x89b>
mov    -0x120bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120bc(%rbp)
jmp    1954 <main+0x824>
jmp    19e4 <main+0x8b4>
mov    -0x12038(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x12038(%rbp)
jmp    1212 <main+0xe2>
cmpl   $0x0,-0x12030(%rbp)
je     1a18 <main+0x8e8>
lea    0x625(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1a26 <main+0x8f6>
lea    0x61a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1a2b <main+0x8fb>
mov    -0x12028(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x12028(%rbp)
jmp    11e0 <main+0xb0>
xor    %eax,%eax
add    $0x120d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0xc000,%rsp
xor    %eax,%eax
call   1050 <check_offloading@plt>
movdqa 0xea2(%rip),%xmm0
mov    $0x14,%eax
movdqa 0xea4(%rip),%xmm8
movapd 0xeac(%rip),%xmm2
movdqa 0xeb3(%rip),%xmm9
movdqa 0xebb(%rip),%xmm4
movdqa 0xec3(%rip),%xmm5
movdqa 0xecb(%rip),%xmm6
movdqa 0xed3(%rip),%xmm7
nopl   (%rax)
movdqa %xmm0,%xmm1
paddd  %xmm8,%xmm1
movapd %xmm2,0x2fb0(%rsp,%rax,4)
movapd %xmm2,0x2fc0(%rsp,%rax,4)
movdqa %xmm0,-0x50(%rsp,%rax,4)
movdqa %xmm1,-0x40(%rsp,%rax,4)
movdqa %xmm0,%xmm1
paddd  %xmm9,%xmm1
movdqa %xmm0,%xmm3
paddd  %xmm4,%xmm3
movapd %xmm2,0x2fd0(%rsp,%rax,4)
movapd %xmm2,0x2fe0(%rsp,%rax,4)
movdqa %xmm1,-0x30(%rsp,%rax,4)
movdqa %xmm3,-0x20(%rsp,%rax,4)
movdqa %xmm0,%xmm1
paddd  %xmm5,%xmm1
movdqa %xmm0,%xmm3
paddd  %xmm6,%xmm3
movapd %xmm2,0x2ff0(%rsp,%rax,4)
movapd %xmm2,0x3000(%rsp,%rax,4)
movdqa %xmm1,-0x10(%rsp,%rax,4)
movdqa %xmm3,(%rsp,%rax,4)
paddd  %xmm7,%xmm0
add    $0x18,%rax
cmp    $0xc14,%rax
jne    11a0 <main+0x60>
xor    %eax,%eax
call   1060 <omp_is_initial_device@plt>
lea    0xe6c(%rip),%rbx
lea    0xe34(%rip),%r14
lea    0xe59(%rip),%r15
lea    0xe61(%rip),%r12
xor    %ebp,%ebp
jmp    1274 <main+0x134>
xchg   %ax,%ax
call   1030 <puts@plt>
add    $0x1,%ebp
cmp    $0xe1,%ebp
je     16be <main+0x57e>
xorpd  %xmm10,%xmm10
xor    %eax,%eax
jmp    12a8 <main+0x168>
nopl   (%rax)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x9000(%rsp,%rax,4),%xmm1
addsd  %xmm10,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x9000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     12e0 <main+0x1a0>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     1280 <main+0x140>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm10,%xmm10
cvtsi2sd %ecx,%xmm10
jmp    1280 <main+0x140>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
pxor   %xmm8,%xmm8
xor    %eax,%eax
jmp    1318 <main+0x1d8>
nopl   0x0(%rax)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x6000(%rsp,%rax,4),%xmm1
addsd  %xmm8,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x6000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     1350 <main+0x210>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     12f0 <main+0x1b0>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm8,%xmm8
cvtsi2sd %ecx,%xmm8
jmp    12f0 <main+0x1b0>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
pxor   %xmm9,%xmm9
xor    %eax,%eax
jmp    1388 <main+0x248>
nopl   0x0(%rax)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x9000(%rsp,%rax,4),%xmm1
addsd  %xmm9,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x9000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     13c0 <main+0x280>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     1360 <main+0x220>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm9,%xmm9
cvtsi2sd %ecx,%xmm9
jmp    1360 <main+0x220>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
pxor   %xmm3,%xmm3
xor    %eax,%eax
jmp    13f7 <main+0x2b7>
nopl   0x0(%rax,%rax,1)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x6000(%rsp,%rax,4),%xmm1
addsd  %xmm3,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x6000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     1420 <main+0x2e0>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     13d0 <main+0x290>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm3,%xmm3
cvtsi2sd %ecx,%xmm3
jmp    13d0 <main+0x290>
pxor   %xmm4,%xmm4
xor    %eax,%eax
jmp    1457 <main+0x317>
nopl   0x0(%rax,%rax,1)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x9000(%rsp,%rax,4),%xmm1
addsd  %xmm4,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x9000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     1480 <main+0x340>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     1430 <main+0x2f0>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm4,%xmm4
cvtsi2sd %ecx,%xmm4
jmp    1430 <main+0x2f0>
pxor   %xmm5,%xmm5
xor    %eax,%eax
jmp    14b7 <main+0x377>
nopl   0x0(%rax,%rax,1)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x6000(%rsp,%rax,4),%xmm1
addsd  %xmm5,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x6000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     14e0 <main+0x3a0>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     1490 <main+0x350>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm5,%xmm5
cvtsi2sd %ecx,%xmm5
jmp    1490 <main+0x350>
pxor   %xmm6,%xmm6
xor    %eax,%eax
jmp    1517 <main+0x3d7>
nopl   0x0(%rax,%rax,1)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x9000(%rsp,%rax,4),%xmm1
addsd  %xmm6,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x9000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     1540 <main+0x400>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     14f0 <main+0x3b0>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm6,%xmm6
cvtsi2sd %ecx,%xmm6
jmp    14f0 <main+0x3b0>
pxor   %xmm7,%xmm7
xor    %eax,%eax
jmp    1577 <main+0x437>
nopl   0x0(%rax,%rax,1)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x6000(%rsp,%rax,4),%xmm1
addsd  %xmm7,%xmm1
cvttsd2si %xmm1,%ecx
mov    %ecx,0x6000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     15a0 <main+0x460>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     1550 <main+0x410>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm7,%xmm7
cvtsi2sd %ecx,%xmm7
jmp    1550 <main+0x410>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
jmp    15d7 <main+0x497>
nopl   0x0(%rax,%rax,1)
xorps  %xmm2,%xmm2
cvtsi2sdl 0x9000(%rsp,%rax,4),%xmm2
addsd  %xmm1,%xmm2
cvttsd2si %xmm2,%ecx
mov    %ecx,0x9000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     1600 <main+0x4c0>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     15b0 <main+0x470>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
jmp    15b0 <main+0x470>
xorpd  %xmm2,%xmm2
xor    %eax,%eax
jmp    1637 <main+0x4f7>
nopl   0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
cvtsi2sdl 0x6000(%rsp,%rax,4),%xmm0
addsd  %xmm2,%xmm0
cvttsd2si %xmm0,%ecx
mov    %ecx,0x6000(%rsp,%rax,4)
add    $0x1,%rax
cmp    $0xc00,%rax
je     1660 <main+0x520>
mov    (%rsp,%rax,4),%ecx
imul   $0xcccccccd,%ecx,%edx
add    $0x19999998,%edx
ror    %edx
cmp    $0x19999998,%edx
ja     1610 <main+0x4d0>
add    0x3000(%rsp,%rax,4),%ecx
xorps  %xmm2,%xmm2
cvtsi2sd %ecx,%xmm2
jmp    1610 <main+0x4d0>
addsd  %xmm8,%xmm10
addsd  %xmm9,%xmm10
addsd  %xmm3,%xmm10
addsd  %xmm4,%xmm10
addsd  %xmm5,%xmm10
addsd  %xmm6,%xmm10
addsd  %xmm7,%xmm10
addsd  %xmm1,%xmm10
addsd  %xmm2,%xmm10
cvttsd2si %xmm10,%r8d
mov    %rbx,%rdi
cmp    $0x77f6,%r8d
je     1260 <main+0x120>
mov    %r14,%rdi
xor    %esi,%esi
mov    %r15,%rdx
mov    $0x77f6,%ecx
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r12,%rdi
jmp    1260 <main+0x120>
xor    %eax,%eax
add    $0xc000,%rsp
pop    %rbx
pop    %r12
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"S[0]\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 [3072 x i32]
%3 = alloca [3072 x i32]
%4 = alloca [3072 x i32]
%5 = alloca [3072 x i32]
%6 = alloca [3072 x i32]
%7 = alloca [3072 x i32]
%8 = alloca i32
%9 = alloca i64
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca double
%37 = alloca i32
%38 = alloca i32
store i32 0, i32* %1
%39 = call i32 (...) @check_offloading()
store i32 0, i32* %8
br label %40
40: ; preds = %56, %0
%41 = load i32, i32* %8
%42 = icmp slt i32 %41, 3072
br i1 %42, label %43, label %59
43: ; preds = %40
%44 = load i32, i32* %8
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %45
store i32 1, i32* %46
%47 = load i32, i32* %8
%48 = load i32, i32* %8
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %49
store i32 %47, i32* %50
%51 = load i32, i32* %8
%52 = sub nsw i32 0, %51
%53 = load i32, i32* %8
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds [3072 x i32], [3072 x i32]* %6, i64 0, i64 %54
store i32 %52, i32* %55
br label %56
56: ; preds = %43
%57 = load i32, i32* %8
%58 = add nsw i32 %57, 1
store i32 %58, i32* %8
br label %40
59: ; preds = %40
store i64 0, i64* %9
%60 = call i64 (...) @omp_is_initial_device()
store i64 %60, i64* %9
store i32 224, i32* %10
store i32 0, i32* %11
br label %61
61: ; preds = %472, %59
%62 = load i32, i32* %11
%63 = load i32, i32* %10
%64 = icmp sle i32 %62, %63
br i1 %64, label %65, label %475
65: ; preds = %61
%66 = load i32, i32* %11
store i32 %66, i32* %12
store i32 0, i32* %13
store i32 0, i32* %15
br label %67
67: ; preds = %461, %65
%68 = load i32, i32* %15
%69 = icmp slt i32 %68, 1
br i1 %69, label %70, label %73
70: ; preds = %67
%71 = load i32, i32* %13
%72 = icmp eq i32 %71, 0
br label %73
73: ; preds = %70, %67
%74 = phi i1 [ false, %67 ], [ %72, %70 ]
br i1 %74, label %75, label %464
75: ; preds = %73
%76 = getelementptr inbounds [3072 x i32], [3072 x i32]* %7, i64 0, i64 0
store i32 0, i32* %76
store double 0.000000e+00, double* %25
store double 0.000000e+00, double* %24
store double 0.000000e+00, double* %23
store double 0.000000e+00, double* %22
store double 0.000000e+00, double* %21
store double 0.000000e+00, double* %20
store double 0.000000e+00, double* %19
store double 0.000000e+00, double* %18
store double 0.000000e+00, double* %17
store double 0.000000e+00, double* %16
store i32 0, i32* %26
br label %77
77: ; preds = %107, %75
%78 = load i32, i32* %26
%79 = icmp slt i32 %78, 3072
br i1 %79, label %80, label %110
80: ; preds = %77
%81 = load i32, i32* %26
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %82
%84 = load i32, i32* %83
%85 = srem i32 %84, 10
%86 = icmp eq i32 %85, 0
br i1 %86, label %87, label %98
87: ; preds = %80
%88 = load i32, i32* %26
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %89
%91 = load i32, i32* %90
%92 = load i32, i32* %26
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %93
%95 = load i32, i32* %94
%96 = add nsw i32 %91, %95
%97 = sitofp i32 %96 to double
store double %97, double* %16
br label %98
98: ; preds = %87, %80
%99 = load double, double* %16
%100 = load i32, i32* %26
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %101
%103 = load i32, i32* %102
%104 = sitofp i32 %103 to double
%105 = fadd double %104, %99
%106 = fptosi double %105 to i32
store i32 %106, i32* %102
br label %107
107: ; preds = %98
%108 = load i32, i32* %26
%109 = add nsw i32 %108, 1
store i32 %109, i32* %26
br label %77
110: ; preds = %77
store i32 0, i32* %27
br label %111
111: ; preds = %141, %110
%112 = load i32, i32* %27
%113 = icmp slt i32 %112, 3072
br i1 %113, label %114, label %144
114: ; preds = %111
%115 = load i32, i32* %27
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %116
%118 = load i32, i32* %117
%119 = srem i32 %118, 10
%120 = icmp eq i32 %119, 0
br i1 %120, label %121, label %132
121: ; preds = %114
%122 = load i32, i32* %27
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %123
%125 = load i32, i32* %124
%126 = load i32, i32* %27
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %127
%129 = load i32, i32* %128
%130 = add nsw i32 %125, %129
%131 = sitofp i32 %130 to double
store double %131, double* %17
br label %132
132: ; preds = %121, %114
%133 = load double, double* %17
%134 = load i32, i32* %27
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %135
%137 = load i32, i32* %136
%138 = sitofp i32 %137 to double
%139 = fadd double %138, %133
%140 = fptosi double %139 to i32
store i32 %140, i32* %136
br label %141
141: ; preds = %132
%142 = load i32, i32* %27
%143 = add nsw i32 %142, 1
store i32 %143, i32* %27
br label %111
144: ; preds = %111
store i32 0, i32* %28
br label %145
145: ; preds = %175, %144
%146 = load i32, i32* %28
%147 = icmp slt i32 %146, 3072
br i1 %147, label %148, label %178
148: ; preds = %145
%149 = load i32, i32* %28
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %150
%152 = load i32, i32* %151
%153 = srem i32 %152, 10
%154 = icmp eq i32 %153, 0
br i1 %154, label %155, label %166
155: ; preds = %148
%156 = load i32, i32* %28
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %157
%159 = load i32, i32* %158
%160 = load i32, i32* %28
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %161
%163 = load i32, i32* %162
%164 = add nsw i32 %159, %163
%165 = sitofp i32 %164 to double
store double %165, double* %18
br label %166
166: ; preds = %155, %148
%167 = load double, double* %18
%168 = load i32, i32* %28
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %169
%171 = load i32, i32* %170
%172 = sitofp i32 %171 to double
%173 = fadd double %172, %167
%174 = fptosi double %173 to i32
store i32 %174, i32* %170
br label %175
175: ; preds = %166
%176 = load i32, i32* %28
%177 = add nsw i32 %176, 1
store i32 %177, i32* %28
br label %145
178: ; preds = %145
store i32 0, i32* %29
br label %179
179: ; preds = %209, %178
%180 = load i32, i32* %29
%181 = icmp slt i32 %180, 3072
br i1 %181, label %182, label %212
182: ; preds = %179
%183 = load i32, i32* %29
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %184
%186 = load i32, i32* %185
%187 = srem i32 %186, 10
%188 = icmp eq i32 %187, 0
br i1 %188, label %189, label %200
189: ; preds = %182
%190 = load i32, i32* %29
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %191
%193 = load i32, i32* %192
%194 = load i32, i32* %29
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %195
%197 = load i32, i32* %196
%198 = add nsw i32 %193, %197
%199 = sitofp i32 %198 to double
store double %199, double* %19
br label %200
200: ; preds = %189, %182
%201 = load double, double* %19
%202 = load i32, i32* %29
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %203
%205 = load i32, i32* %204
%206 = sitofp i32 %205 to double
%207 = fadd double %206, %201
%208 = fptosi double %207 to i32
store i32 %208, i32* %204
br label %209
209: ; preds = %200
%210 = load i32, i32* %29
%211 = add nsw i32 %210, 1
store i32 %211, i32* %29
br label %179
212: ; preds = %179
store i32 0, i32* %30
br label %213
213: ; preds = %243, %212
%214 = load i32, i32* %30
%215 = icmp slt i32 %214, 3072
br i1 %215, label %216, label %246
216: ; preds = %213
%217 = load i32, i32* %30
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %218
%220 = load i32, i32* %219
%221 = srem i32 %220, 10
%222 = icmp eq i32 %221, 0
br i1 %222, label %223, label %234
223: ; preds = %216
%224 = load i32, i32* %30
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %225
%227 = load i32, i32* %226
%228 = load i32, i32* %30
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %229
%231 = load i32, i32* %230
%232 = add nsw i32 %227, %231
%233 = sitofp i32 %232 to double
store double %233, double* %20
br label %234
234: ; preds = %223, %216
%235 = load double, double* %20
%236 = load i32, i32* %30
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %237
%239 = load i32, i32* %238
%240 = sitofp i32 %239 to double
%241 = fadd double %240, %235
%242 = fptosi double %241 to i32
store i32 %242, i32* %238
br label %243
243: ; preds = %234
%244 = load i32, i32* %30
%245 = add nsw i32 %244, 1
store i32 %245, i32* %30
br label %213
246: ; preds = %213
store i32 0, i32* %31
br label %247
247: ; preds = %277, %246
%248 = load i32, i32* %31
%249 = icmp slt i32 %248, 3072
br i1 %249, label %250, label %280
250: ; preds = %247
%251 = load i32, i32* %31
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %252
%254 = load i32, i32* %253
%255 = srem i32 %254, 10
%256 = icmp eq i32 %255, 0
br i1 %256, label %257, label %268
257: ; preds = %250
%258 = load i32, i32* %31
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %259
%261 = load i32, i32* %260
%262 = load i32, i32* %31
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %263
%265 = load i32, i32* %264
%266 = add nsw i32 %261, %265
%267 = sitofp i32 %266 to double
store double %267, double* %21
br label %268
268: ; preds = %257, %250
%269 = load double, double* %21
%270 = load i32, i32* %31
%271 = sext i32 %270 to i64
%272 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %271
%273 = load i32, i32* %272
%274 = sitofp i32 %273 to double
%275 = fadd double %274, %269
%276 = fptosi double %275 to i32
store i32 %276, i32* %272
br label %277
277: ; preds = %268
%278 = load i32, i32* %31
%279 = add nsw i32 %278, 1
store i32 %279, i32* %31
br label %247
280: ; preds = %247
store i32 0, i32* %32
br label %281
281: ; preds = %311, %280
%282 = load i32, i32* %32
%283 = icmp slt i32 %282, 3072
br i1 %283, label %284, label %314
284: ; preds = %281
%285 = load i32, i32* %32
%286 = sext i32 %285 to i64
%287 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %286
%288 = load i32, i32* %287
%289 = srem i32 %288, 10
%290 = icmp eq i32 %289, 0
br i1 %290, label %291, label %302
291: ; preds = %284
%292 = load i32, i32* %32
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %293
%295 = load i32, i32* %294
%296 = load i32, i32* %32
%297 = sext i32 %296 to i64
%298 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %297
%299 = load i32, i32* %298
%300 = add nsw i32 %295, %299
%301 = sitofp i32 %300 to double
store double %301, double* %22
br label %302
302: ; preds = %291, %284
%303 = load double, double* %22
%304 = load i32, i32* %32
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %305
%307 = load i32, i32* %306
%308 = sitofp i32 %307 to double
%309 = fadd double %308, %303
%310 = fptosi double %309 to i32
store i32 %310, i32* %306
br label %311
311: ; preds = %302
%312 = load i32, i32* %32
%313 = add nsw i32 %312, 1
store i32 %313, i32* %32
br label %281
314: ; preds = %281
store i32 0, i32* %33
br label %315
315: ; preds = %345, %314
%316 = load i32, i32* %33
%317 = icmp slt i32 %316, 3072
br i1 %317, label %318, label %348
318: ; preds = %315
%319 = load i32, i32* %33
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %320
%322 = load i32, i32* %321
%323 = srem i32 %322, 10
%324 = icmp eq i32 %323, 0
br i1 %324, label %325, label %336
325: ; preds = %318
%326 = load i32, i32* %33
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %327
%329 = load i32, i32* %328
%330 = load i32, i32* %33
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %331
%333 = load i32, i32* %332
%334 = add nsw i32 %329, %333
%335 = sitofp i32 %334 to double
store double %335, double* %23
br label %336
336: ; preds = %325, %318
%337 = load double, double* %23
%338 = load i32, i32* %33
%339 = sext i32 %338 to i64
%340 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %339
%341 = load i32, i32* %340
%342 = sitofp i32 %341 to double
%343 = fadd double %342, %337
%344 = fptosi double %343 to i32
store i32 %344, i32* %340
br label %345
345: ; preds = %336
%346 = load i32, i32* %33
%347 = add nsw i32 %346, 1
store i32 %347, i32* %33
br label %315
348: ; preds = %315
store i32 0, i32* %34
br label %349
349: ; preds = %379, %348
%350 = load i32, i32* %34
%351 = icmp slt i32 %350, 3072
br i1 %351, label %352, label %382
352: ; preds = %349
%353 = load i32, i32* %34
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %354
%356 = load i32, i32* %355
%357 = srem i32 %356, 10
%358 = icmp eq i32 %357, 0
br i1 %358, label %359, label %370
359: ; preds = %352
%360 = load i32, i32* %34
%361 = sext i32 %360 to i64
%362 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %361
%363 = load i32, i32* %362
%364 = load i32, i32* %34
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %365
%367 = load i32, i32* %366
%368 = add nsw i32 %363, %367
%369 = sitofp i32 %368 to double
store double %369, double* %24
br label %370
370: ; preds = %359, %352
%371 = load double, double* %24
%372 = load i32, i32* %34
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %373
%375 = load i32, i32* %374
%376 = sitofp i32 %375 to double
%377 = fadd double %376, %371
%378 = fptosi double %377 to i32
store i32 %378, i32* %374
br label %379
379: ; preds = %370
%380 = load i32, i32* %34
%381 = add nsw i32 %380, 1
store i32 %381, i32* %34
br label %349
382: ; preds = %349
store i32 0, i32* %35
br label %383
383: ; preds = %413, %382
%384 = load i32, i32* %35
%385 = icmp slt i32 %384, 3072
br i1 %385, label %386, label %416
386: ; preds = %383
%387 = load i32, i32* %35
%388 = sext i32 %387 to i64
%389 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %388
%390 = load i32, i32* %389
%391 = srem i32 %390, 10
%392 = icmp eq i32 %391, 0
br i1 %392, label %393, label %404
393: ; preds = %386
%394 = load i32, i32* %35
%395 = sext i32 %394 to i64
%396 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %395
%397 = load i32, i32* %396
%398 = load i32, i32* %35
%399 = sext i32 %398 to i64
%400 = getelementptr inbounds [3072 x i32], [3072 x i32]* %5, i64 0, i64 %399
%401 = load i32, i32* %400
%402 = add nsw i32 %397, %401
%403 = sitofp i32 %402 to double
store double %403, double* %25
br label %404
404: ; preds = %393, %386
%405 = load double, double* %25
%406 = load i32, i32* %35
%407 = sext i32 %406 to i64
%408 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %407
%409 = load i32, i32* %408
%410 = sitofp i32 %409 to double
%411 = fadd double %410, %405
%412 = fptosi double %411 to i32
store i32 %412, i32* %408
br label %413
413: ; preds = %404
%414 = load i32, i32* %35
%415 = add nsw i32 %414, 1
store i32 %415, i32* %35
br label %383
416: ; preds = %383
%417 = load double, double* %16
%418 = load double, double* %17
%419 = fadd double %417, %418
%420 = load double, double* %18
%421 = fadd double %419, %420
%422 = load double, double* %19
%423 = fadd double %421, %422
%424 = load double, double* %20
%425 = fadd double %423, %424
%426 = load double, double* %21
%427 = fadd double %425, %426
%428 = load double, double* %22
%429 = fadd double %427, %428
%430 = load double, double* %23
%431 = fadd double %429, %430
%432 = load double, double* %24
%433 = fadd double %431, %432
%434 = load double, double* %25
%435 = fadd double %433, %434
store double %435, double* %36
%436 = load double, double* %36
%437 = fptosi double %436 to i32
%438 = getelementptr inbounds [3072 x i32], [3072 x i32]* %7, i64 0, i64 0
store i32 %437, i32* %438
store i32 0, i32* %38
store i32 0, i32* %37
br label %439
439: ; preds = %457, %416
%440 = load i32, i32* %37
%441 = icmp slt i32 %440, 1
br i1 %441, label %442, label %460
442: ; preds = %439
%443 = getelementptr inbounds [3072 x i32], [3072 x i32]* %7, i64 0, i64 0
%444 = load i32, i32* %443
%445 = icmp ne i32 %444, 30710
br i1 %445, label %446, label %456
446: ; preds = %442
%447 = load i32, i32* %37
%448 = getelementptr inbounds [3072 x i32], [3072 x i32]* %7, i64 0, i64 0
%449 = load i32, i32* %448
%450 = 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 30710, i32 %449)
store i32 1, i32* %13
%451 = load i32, i32* %38
%452 = add nsw i32 %451, 1
store i32 %452, i32* %38
%453 = icmp sgt i32 %451, 10
br i1 %453, label %454, label %455
454: ; preds = %446
br label %460
455: ; preds = %446
br label %456
456: ; preds = %455, %442
br label %457
457: ; preds = %456
%458 = load i32, i32* %37
%459 = add nsw i32 %458, 1
store i32 %459, i32* %37
br label %439
460: ; preds = %454, %439
br label %461
461: ; preds = %460
%462 = load i32, i32* %15
%463 = add nsw i32 %462, 1
store i32 %463, i32* %15
br label %67
464: ; preds = %73
%465 = load i32, i32* %13
%466 = icmp ne i32 %465, 0
br i1 %466, label %467, label %469
467: ; preds = %464
%468 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
br label %471
469: ; preds = %464
%470 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.3, i64 0, i64 0))
br label %471
471: ; preds = %469, %467
br label %472
472: ; preds = %471
%473 = load i32, i32* %11
%474 = add nsw i32 %473, 1
store i32 %474, i32* %11
br label %61
475: ; preds = %61
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"S[0]\00"
@str = [10 x i8] c"Succeeded\00"
@str.4 = [7 x i8] c"Failed\00"
define i32 @main() {
%1 = alloca [3072 x i32]
%2 = alloca [3072 x i32]
%3 = alloca [3072 x i32]
%4 = alloca [3072 x i32]
%5 = tail call i32 (...) @check_offloading()
%6 = bitcast [3072 x i32]* %1 to i8*
%7 = bitcast [3072 x i32]* %2 to i8*
%8 = bitcast [3072 x i32]* %3 to i8*
%9 = bitcast [3072 x i32]* %4 to i8*
br label %10
10: ; preds = %10, %0
%11 = phi i64 [ 0, %0 ], [ %44, %10 ]
%12 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %0 ], [ %45, %10 ]
%13 = add <4 x i32> %12, <i32 4, i32 4, i32 4, i32 4>
%14 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %11
%15 = bitcast i32* %14 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %15
%16 = getelementptr inbounds i32, i32* %14, i64 4
%17 = bitcast i32* %16 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %17
%18 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %11
%19 = bitcast i32* %18 to <4 x i32>*
store <4 x i32> %12, <4 x i32>* %19
%20 = getelementptr inbounds i32, i32* %18, i64 4
%21 = bitcast i32* %20 to <4 x i32>*
store <4 x i32> %13, <4 x i32>* %21
%22 = add nuw nsw i64 %11, 8
%23 = add <4 x i32> %12, <i32 8, i32 8, i32 8, i32 8>
%24 = add <4 x i32> %12, <i32 12, i32 12, i32 12, i32 12>
%25 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %22
%26 = bitcast i32* %25 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %26
%27 = getelementptr inbounds i32, i32* %25, i64 4
%28 = bitcast i32* %27 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %28
%29 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %22
%30 = bitcast i32* %29 to <4 x i32>*
store <4 x i32> %23, <4 x i32>* %30
%31 = getelementptr inbounds i32, i32* %29, i64 4
%32 = bitcast i32* %31 to <4 x i32>*
store <4 x i32> %24, <4 x i32>* %32
%33 = add nuw nsw i64 %11, 16
%34 = add <4 x i32> %12, <i32 16, i32 16, i32 16, i32 16>
%35 = add <4 x i32> %12, <i32 20, i32 20, i32 20, i32 20>
%36 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %33
%37 = bitcast i32* %36 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %37
%38 = getelementptr inbounds i32, i32* %36, i64 4
%39 = bitcast i32* %38 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %39
%40 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %33
%41 = bitcast i32* %40 to <4 x i32>*
store <4 x i32> %34, <4 x i32>* %41
%42 = getelementptr inbounds i32, i32* %40, i64 4
%43 = bitcast i32* %42 to <4 x i32>*
store <4 x i32> %35, <4 x i32>* %43
%44 = add nuw nsw i64 %11, 24
%45 = add <4 x i32> %12, <i32 24, i32 24, i32 24, i32 24>
%46 = icmp eq i64 %44, 3072
br i1 %46, label %47, label %10
47: ; preds = %10
%48 = tail call i64 (...) @omp_is_initial_device()
br label %49
49: ; preds = %47, %276
%50 = phi i32 [ 0, %47 ], [ %279, %276 ]
br label %52
51: ; preds = %276
ret i32 0
52: ; preds = %49, %64
%53 = phi i64 [ 0, %49 ], [ %71, %64 ]
%54 = phi double [ 0.000000e+00, %49 ], [ %65, %64 ]
%55 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %53
%56 = load i32, i32* %55
%57 = srem i32 %56, 10
%58 = icmp eq i32 %57, 0
br i1 %58, label %59, label %64
59: ; preds = %52
%60 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %53
%61 = load i32, i32* %60
%62 = add nsw i32 %61, %56
%63 = sitofp i32 %62 to double
br label %64
64: ; preds = %59, %52
%65 = phi double [ %63, %59 ], [ %54, %52 ]
%66 = getelementptr inbounds [3072 x i32], [3072 x i32]* %1, i64 0, i64 %53
%67 = load i32, i32* %66
%68 = sitofp i32 %67 to double
%69 = fadd double %65, %68
%70 = fptosi double %69 to i32
store i32 %70, i32* %66
%71 = add nuw nsw i64 %53, 1
%72 = icmp eq i64 %71, 3072
br i1 %72, label %73, label %52
73: ; preds = %64, %85
%74 = phi i64 [ %92, %85 ], [ 0, %64 ]
%75 = phi double [ %86, %85 ], [ 0.000000e+00, %64 ]
%76 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %74
%77 = load i32, i32* %76
%78 = srem i32 %77, 10
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %85
80: ; preds = %73
%81 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %74
%82 = load i32, i32* %81
%83 = add nsw i32 %82, %77
%84 = sitofp i32 %83 to double
br label %85
85: ; preds = %80, %73
%86 = phi double [ %84, %80 ], [ %75, %73 ]
%87 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %74
%88 = load i32, i32* %87
%89 = sitofp i32 %88 to double
%90 = fadd double %86, %89
%91 = fptosi double %90 to i32
store i32 %91, i32* %87
%92 = add nuw nsw i64 %74, 1
%93 = icmp eq i64 %92, 3072
br i1 %93, label %94, label %73
94: ; preds = %85, %106
%95 = phi i64 [ %113, %106 ], [ 0, %85 ]
%96 = phi double [ %107, %106 ], [ 0.000000e+00, %85 ]
%97 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %95
%98 = load i32, i32* %97
%99 = srem i32 %98, 10
%100 = icmp eq i32 %99, 0
br i1 %100, label %101, label %106
101: ; preds = %94
%102 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %95
%103 = load i32, i32* %102
%104 = add nsw i32 %103, %98
%105 = sitofp i32 %104 to double
br label %106
106: ; preds = %101, %94
%107 = phi double [ %105, %101 ], [ %96, %94 ]
%108 = getelementptr inbounds [3072 x i32], [3072 x i32]* %1, i64 0, i64 %95
%109 = load i32, i32* %108
%110 = sitofp i32 %109 to double
%111 = fadd double %107, %110
%112 = fptosi double %111 to i32
store i32 %112, i32* %108
%113 = add nuw nsw i64 %95, 1
%114 = icmp eq i64 %113, 3072
br i1 %114, label %115, label %94
115: ; preds = %106, %127
%116 = phi i64 [ %134, %127 ], [ 0, %106 ]
%117 = phi double [ %128, %127 ], [ 0.000000e+00, %106 ]
%118 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %116
%119 = load i32, i32* %118
%120 = srem i32 %119, 10
%121 = icmp eq i32 %120, 0
br i1 %121, label %122, label %127
122: ; preds = %115
%123 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %116
%124 = load i32, i32* %123
%125 = add nsw i32 %124, %119
%126 = sitofp i32 %125 to double
br label %127
127: ; preds = %122, %115
%128 = phi double [ %126, %122 ], [ %117, %115 ]
%129 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %116
%130 = load i32, i32* %129
%131 = sitofp i32 %130 to double
%132 = fadd double %128, %131
%133 = fptosi double %132 to i32
store i32 %133, i32* %129
%134 = add nuw nsw i64 %116, 1
%135 = icmp eq i64 %134, 3072
br i1 %135, label %136, label %115
136: ; preds = %127, %148
%137 = phi i64 [ %155, %148 ], [ 0, %127 ]
%138 = phi double [ %149, %148 ], [ 0.000000e+00, %127 ]
%139 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %137
%140 = load i32, i32* %139
%141 = srem i32 %140, 10
%142 = icmp eq i32 %141, 0
br i1 %142, label %143, label %148
143: ; preds = %136
%144 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %137
%145 = load i32, i32* %144
%146 = add nsw i32 %145, %140
%147 = sitofp i32 %146 to double
br label %148
148: ; preds = %143, %136
%149 = phi double [ %147, %143 ], [ %138, %136 ]
%150 = getelementptr inbounds [3072 x i32], [3072 x i32]* %1, i64 0, i64 %137
%151 = load i32, i32* %150
%152 = sitofp i32 %151 to double
%153 = fadd double %149, %152
%154 = fptosi double %153 to i32
store i32 %154, i32* %150
%155 = add nuw nsw i64 %137, 1
%156 = icmp eq i64 %155, 3072
br i1 %156, label %157, label %136
157: ; preds = %148, %169
%158 = phi i64 [ %176, %169 ], [ 0, %148 ]
%159 = phi double [ %170, %169 ], [ 0.000000e+00, %148 ]
%160 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %158
%161 = load i32, i32* %160
%162 = srem i32 %161, 10
%163 = icmp eq i32 %162, 0
br i1 %163, label %164, label %169
164: ; preds = %157
%165 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %158
%166 = load i32, i32* %165
%167 = add nsw i32 %166, %161
%168 = sitofp i32 %167 to double
br label %169
169: ; preds = %164, %157
%170 = phi double [ %168, %164 ], [ %159, %157 ]
%171 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %158
%172 = load i32, i32* %171
%173 = sitofp i32 %172 to double
%174 = fadd double %170, %173
%175 = fptosi double %174 to i32
store i32 %175, i32* %171
%176 = add nuw nsw i64 %158, 1
%177 = icmp eq i64 %176, 3072
br i1 %177, label %178, label %157
178: ; preds = %169, %190
%179 = phi i64 [ %197, %190 ], [ 0, %169 ]
%180 = phi double [ %191, %190 ], [ 0.000000e+00, %169 ]
%181 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %179
%182 = load i32, i32* %181
%183 = srem i32 %182, 10
%184 = icmp eq i32 %183, 0
br i1 %184, label %185, label %190
185: ; preds = %178
%186 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %179
%187 = load i32, i32* %186
%188 = add nsw i32 %187, %182
%189 = sitofp i32 %188 to double
br label %190
190: ; preds = %185, %178
%191 = phi double [ %189, %185 ], [ %180, %178 ]
%192 = getelementptr inbounds [3072 x i32], [3072 x i32]* %1, i64 0, i64 %179
%193 = load i32, i32* %192
%194 = sitofp i32 %193 to double
%195 = fadd double %191, %194
%196 = fptosi double %195 to i32
store i32 %196, i32* %192
%197 = add nuw nsw i64 %179, 1
%198 = icmp eq i64 %197, 3072
br i1 %198, label %199, label %178
199: ; preds = %190, %211
%200 = phi i64 [ %218, %211 ], [ 0, %190 ]
%201 = phi double [ %212, %211 ], [ 0.000000e+00, %190 ]
%202 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %200
%203 = load i32, i32* %202
%204 = srem i32 %203, 10
%205 = icmp eq i32 %204, 0
br i1 %205, label %206, label %211
206: ; preds = %199
%207 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %200
%208 = load i32, i32* %207
%209 = add nsw i32 %208, %203
%210 = sitofp i32 %209 to double
br label %211
211: ; preds = %206, %199
%212 = phi double [ %210, %206 ], [ %201, %199 ]
%213 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %200
%214 = load i32, i32* %213
%215 = sitofp i32 %214 to double
%216 = fadd double %212, %215
%217 = fptosi double %216 to i32
store i32 %217, i32* %213
%218 = add nuw nsw i64 %200, 1
%219 = icmp eq i64 %218, 3072
br i1 %219, label %220, label %199
220: ; preds = %211, %232
%221 = phi i64 [ %239, %232 ], [ 0, %211 ]
%222 = phi double [ %233, %232 ], [ 0.000000e+00, %211 ]
%223 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %221
%224 = load i32, i32* %223
%225 = srem i32 %224, 10
%226 = icmp eq i32 %225, 0
br i1 %226, label %227, label %232
227: ; preds = %220
%228 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %221
%229 = load i32, i32* %228
%230 = add nsw i32 %229, %224
%231 = sitofp i32 %230 to double
br label %232
232: ; preds = %227, %220
%233 = phi double [ %231, %227 ], [ %222, %220 ]
%234 = getelementptr inbounds [3072 x i32], [3072 x i32]* %1, i64 0, i64 %221
%235 = load i32, i32* %234
%236 = sitofp i32 %235 to double
%237 = fadd double %233, %236
%238 = fptosi double %237 to i32
store i32 %238, i32* %234
%239 = add nuw nsw i64 %221, 1
%240 = icmp eq i64 %239, 3072
br i1 %240, label %253, label %220
241: ; preds = %265
%242 = fadd double %65, %86
%243 = fadd double %242, %107
%244 = fadd double %243, %128
%245 = fadd double %244, %149
%246 = fadd double %245, %170
%247 = fadd double %246, %191
%248 = fadd double %247, %212
%249 = fadd double %248, %233
%250 = fadd double %249, %266
%251 = fptosi double %250 to i32
%252 = icmp eq i32 %251, 30710
br i1 %252, label %276, label %274
253: ; preds = %232, %265
%254 = phi i64 [ %272, %265 ], [ 0, %232 ]
%255 = phi double [ %266, %265 ], [ 0.000000e+00, %232 ]
%256 = getelementptr inbounds [3072 x i32], [3072 x i32]* %4, i64 0, i64 %254
%257 = load i32, i32* %256
%258 = srem i32 %257, 10
%259 = icmp eq i32 %258, 0
br i1 %259, label %260, label %265
260: ; preds = %253
%261 = getelementptr inbounds [3072 x i32], [3072 x i32]* %3, i64 0, i64 %254
%262 = load i32, i32* %261
%263 = add nsw i32 %262, %257
%264 = sitofp i32 %263 to double
br label %265
265: ; preds = %260, %253
%266 = phi double [ %264, %260 ], [ %255, %253 ]
%267 = getelementptr inbounds [3072 x i32], [3072 x i32]* %2, i64 0, i64 %254
%268 = load i32, i32* %267
%269 = sitofp i32 %268 to double
%270 = fadd double %266, %269
%271 = fptosi double %270 to i32
store i32 %271, i32* %267
%272 = add nuw nsw i64 %254, 1
%273 = icmp eq i64 %272, 3072
br i1 %273, label %241, label %253
274: ; preds = %241
%275 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0), i32 0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 30710, i32 %251)
br label %276
276: ; preds = %241, %274
%277 = phi i8* [ getelementptr inbounds ([7 x i8], [7 x i8]* @str.4, i64 0, i64 0), %274 ], [ getelementptr inbounds ([10 x i8], [10 x i8]* @str, i64 0, i64 0), %241 ]
%278 = tail call i32 @puts(i8* dereferenceable(1) %277)
%279 = add nuw nsw i32 %50, 1
%280 = icmp eq i32 %279, 225
br i1 %280, label %51, label %49
}