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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, double);
double sqrt(double);
int main() {
  double i, root, j;
  int canbe[28200];
  double abun[28200];
  int counter = 0;
  double sum;
  for (i = 0; i < 28200; i++) {
    canbe[(int)i] = 0;
    abun[(int)i] = 0;
  }
  for (i = 10; i < 28124; i++) {
    root = sqrt(i);
    sum = 1;
    for (j = 2; j < (int)(root + 1); j++) {
      if (!((long int)i % (long int)j)) {
        sum += j;
        if (i / j != j)
          sum += i / j;
      }
    }
    if (i < sum) {
      abun[counter++] = i;
      printf("%d\n", (int)i);
    }
  }
  for (i = 0; i < 28200; i++) {
    for (j = i; j < 28200; j++) {
      if (abun[(int)i] && abun[(int)j])
        counter = abun[(int)i] + abun[(int)j];
      if (counter < 28150) {
        canbe[counter] = 1;
      }
    }
  }
  sum = 0;
  for (i = 0; i < 28124; i++)
    if (!canbe[(int)i]) {
      sum += i;
    }
  printf("\n%lf\n", abun[0]);
  printf("sum: %lf\n", sum);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x52a10,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x52a04(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xeb4(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1193 <main+0x73>
cvttsd2si -0x10(%rbp),%eax
cltq
movl   $0x0,-0x1b8c0(%rbp,%rax,4)
cvttsd2si -0x10(%rbp),%eax
cltq
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x52a00(%rbp,%rax,8)
fa ff
movsd  0xe94(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    1144 <main+0x24>
movsd  0xe6d(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xe68(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    12f7 <main+0x1d7>
movsd  -0x10(%rbp),%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x18(%rbp)
movsd  0xe4e(%rip),%xmm0
movsd  %xmm0,-0x52a10(%rbp)
ff
movsd  0xe46(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm1
movsd  0xe2c(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jbe    128e <main+0x16e>
cvttsd2si -0x10(%rbp),%rax
cvttsd2si -0x20(%rbp),%rcx
cqto
idiv   %rcx
cmp    $0x0,%rdx
jne    1272 <main+0x152>
movsd  -0x20(%rbp),%xmm0
addsd  -0x52a10(%rbp),%xmm0
ff
movsd  %xmm0,-0x52a10(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1253 <main+0x133>
jp     1253 <main+0x133>
jmp    126d <main+0x14d>
movsd  -0x10(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
addsd  -0x52a10(%rbp),%xmm0
ff
movsd  %xmm0,-0x52a10(%rbp)
ff
jmp    1272 <main+0x152>
jmp    1277 <main+0x157>
movsd  0xd99(%rip),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    11df <main+0xbf>
movsd  -0x10(%rbp),%xmm1
movsd  -0x52a10(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    12db <main+0x1bb>
movsd  -0x10(%rbp),%xmm0
mov    -0x52a04(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x52a04(%rbp)
cltq
movsd  %xmm0,-0x52a00(%rbp,%rax,8)
fa ff
cvttsd2si -0x10(%rbp),%eax
cvtsi2sd %eax,%xmm0
lea    0xd52(%rip),%rdi
call   1030 <printf@plt>
jmp    12e0 <main+0x1c0>
movsd  0xd30(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    11a0 <main+0x80>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xcf9(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1403 <main+0x2e3>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xcdc(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    13e7 <main+0x2c7>
cvttsd2si -0x10(%rbp),%eax
cltq
movsd  -0x52a00(%rbp,%rax,8),%xmm0
fa ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1357 <main+0x237>
jp     1357 <main+0x237>
jmp    13a9 <main+0x289>
cvttsd2si -0x20(%rbp),%eax
cltq
movsd  -0x52a00(%rbp,%rax,8),%xmm0
fa ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    137f <main+0x25f>
jp     137f <main+0x25f>
jmp    13a9 <main+0x289>
cvttsd2si -0x10(%rbp),%eax
cltq
movsd  -0x52a00(%rbp,%rax,8),%xmm0
fa ff
cvttsd2si -0x20(%rbp),%eax
cltq
addsd  -0x52a00(%rbp,%rax,8),%xmm0
fa ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x52a04(%rbp)
cmpl   $0x6df6,-0x52a04(%rbp)
jge    13cb <main+0x2ab>
movslq -0x52a04(%rbp),%rax
movl   $0x1,-0x1b8c0(%rbp,%rax,4)
jmp    13d0 <main+0x2b0>
movsd  0xc40(%rip),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    131c <main+0x1fc>
jmp    13ec <main+0x2cc>
movsd  0xc24(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    12ff <main+0x1df>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x52a10(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xbf2(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    146f <main+0x34f>
cvttsd2si -0x10(%rbp),%eax
cltq
cmpl   $0x0,-0x1b8c0(%rbp,%rax,4)
jne    1453 <main+0x333>
movsd  -0x10(%rbp),%xmm0
addsd  -0x52a10(%rbp),%xmm0
ff
movsd  %xmm0,-0x52a10(%rbp)
ff
jmp    1458 <main+0x338>
movsd  0xbb8(%rip),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    1416 <main+0x2f6>
movsd  -0x52a00(%rbp),%xmm0
ff
lea    0xbae(%rip),%rdi
call   1030 <printf@plt>
movsd  -0x52a10(%rbp),%xmm0
ff
lea    0xba0(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x52a10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r14
push   %rbx
sub    $0x529f0,%rsp
mov    $0x12,%eax
xorpd  %xmm0,%xmm0
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movapd %xmm0,-0x38(%rsp,%rax,4)
movapd %xmm0,0x1b820(%rsp,%rax,8)
movapd %xmm0,0x1b830(%rsp,%rax,8)
movapd %xmm0,-0x28(%rsp,%rax,4)
movapd %xmm0,0x1b840(%rsp,%rax,8)
movapd %xmm0,0x1b850(%rsp,%rax,8)
movapd %xmm0,-0x18(%rsp,%rax,4)
movapd %xmm0,0x1b860(%rsp,%rax,8)
movapd %xmm0,0x1b870(%rsp,%rax,8)
movapd %xmm0,-0x8(%rsp,%rax,4)
movapd %xmm0,0x1b880(%rsp,%rax,8)
movapd %xmm0,0x1b890(%rsp,%rax,8)
movapd %xmm0,0x8(%rsp,%rax,4)
movapd %xmm0,0x1b8a0(%rsp,%rax,8)
movapd %xmm0,0x1b8b0(%rsp,%rax,8)
add    $0x14,%rax
cmp    $0x6e3a,%eax
jne    1140 <main+0x20>
mov    $0xa,%ebp
movsd  0xe2c(%rip),%xmm4
xor    %ebx,%ebx
movsd  0xe2a(%rip),%xmm5
lea    0xe53(%rip),%r14
jmp    1203 <main+0xe3>
nopw   0x0(%rax,%rax,1)
addsd  %xmm5,%xmm4
add    $0x1,%ebp
cmp    $0x6ddc,%ebp
je     1317 <main+0x1f7>
xorps  %xmm6,%xmm6
cvtsi2sd %ebp,%xmm6
ucomisd 0xe1e(%rip),%xmm6
movsd  %xmm4,(%rsp)
jb     1230 <main+0x110>
xorps  %xmm0,%xmm0
sqrtsd %xmm6,%xmm0
jmp    1252 <main+0x132>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movapd %xmm6,%xmm0
movsd  %xmm6,0x8(%rsp)
call   1040 <sqrt@plt>
movsd  0x8(%rsp),%xmm6
movsd  0xdbb(%rip),%xmm5
movsd  (%rsp),%xmm4
addsd  %xmm5,%xmm0
cvttsd2si %xmm0,%eax
movapd %xmm5,%xmm1
cmp    $0x3,%eax
jl     12e0 <main+0x1c0>
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
mov    %ebp,%ecx
movapd %xmm5,%xmm1
movsd  0xd97(%rip),%xmm2
jmp    128a <main+0x16a>
nopl   0x0(%rax,%rax,1)
addsd  %xmm5,%xmm2
ucomisd %xmm2,%xmm0
jbe    12e0 <main+0x1c0>
cvttsd2si %xmm2,%rsi
mov    %rsi,%rax
shr    $0x20,%rax
je     12b0 <main+0x190>
mov    %rcx,%rax
xor    %edx,%edx
idiv   %rsi
test   %rdx,%rdx
jne    1280 <main+0x160>
jmp    12bb <main+0x19b>
nopw   0x0(%rax,%rax,1)
mov    %ecx,%eax
xor    %edx,%edx
div    %esi
test   %rdx,%rdx
jne    1280 <main+0x160>
addsd  %xmm2,%xmm1
movapd %xmm6,%xmm3
divsd  %xmm2,%xmm3
ucomisd %xmm2,%xmm3
jne    12cf <main+0x1af>
jnp    1280 <main+0x160>
addsd  %xmm3,%xmm1
jmp    1280 <main+0x160>
cs nopw 0x0(%rax,%rax,1)
nop
ucomisd %xmm6,%xmm1
jbe    11f0 <main+0xd0>
movslq %ebx,%rax
add    $0x1,%ebx
movsd  %xmm6,0x1b8b0(%rsp,%rax,8)
mov    %r14,%rdi
movapd %xmm4,%xmm0
call   1030 <printf@plt>
movsd  0xcfb(%rip),%xmm5
movsd  (%rsp),%xmm4
jmp    11f0 <main+0xd0>
xor    %eax,%eax
xorpd  %xmm0,%xmm0
movsd  0xce3(%rip),%xmm1
movsd  0xceb(%rip),%xmm2
xorpd  %xmm3,%xmm3
jmp    134e <main+0x22e>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
addsd  %xmm1,%xmm3
add    $0x1,%eax
cmp    $0x6e28,%eax
je     13b7 <main+0x297>
cmp    $0x6e27,%eax
ja     1340 <main+0x220>
mov    %eax,%ecx
movsd  0x1b8b0(%rsp,%rcx,8),%xmm4
movapd %xmm3,%xmm5
jmp    137a <main+0x25a>
cs nopw 0x0(%rax,%rax,1)
addsd  %xmm1,%xmm5
ucomisd %xmm5,%xmm2
jbe    1340 <main+0x220>
ucomisd %xmm0,%xmm4
jne    1382 <main+0x262>
jnp    13a2 <main+0x282>
cvttsd2si %xmm5,%ecx
movslq %ecx,%rcx
movsd  0x1b8b0(%rsp,%rcx,8),%xmm6
ucomisd %xmm0,%xmm6
jne    139a <main+0x27a>
jnp    13a2 <main+0x282>
addsd  %xmm4,%xmm6
cvttsd2si %xmm6,%ebx
cmp    $0x6df5,%ebx
jg     1370 <main+0x250>
movslq %ebx,%rcx
movl   $0x1,0x10(%rsp,%rcx,4)
jmp    1370 <main+0x250>
xorpd  %xmm7,%xmm7
xor    %eax,%eax
movsd  0xc5b(%rip),%xmm0
movsd  0xc5b(%rip),%xmm1
xorpd  %xmm2,%xmm2
jmp    1403 <main+0x2e3>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movapd %xmm0,%xmm6
addsd  %xmm3,%xmm7
addsd  %xmm4,%xmm7
addsd  %xmm5,%xmm7
addsd  %xmm6,%xmm7
addsd  %xmm1,%xmm2
add    $0x4,%rax
cmp    $0x6ddc,%eax
je     146b <main+0x34b>
cmpl   $0x0,0x10(%rsp,%rax,4)
movapd %xmm2,%xmm3
je     1412 <main+0x2f2>
movapd %xmm0,%xmm3
cmpl   $0x0,0x14(%rsp,%rax,4)
je     1440 <main+0x320>
movapd %xmm0,%xmm4
cmpl   $0x0,0x18(%rsp,%rax,4)
jne    1451 <main+0x331>
lea    0x2(%rax),%ecx
xorps  %xmm5,%xmm5
cvtsi2sd %ecx,%xmm5
cmpl   $0x0,0x1c(%rsp,%rax,4)
jne    13e0 <main+0x2c0>
jmp    145c <main+0x33c>
nopw   0x0(%rax,%rax,1)
lea    0x1(%rax),%ecx
xorps  %xmm4,%xmm4
cvtsi2sd %ecx,%xmm4
cmpl   $0x0,0x18(%rsp,%rax,4)
je     1424 <main+0x304>
movapd %xmm0,%xmm5
cmpl   $0x0,0x1c(%rsp,%rax,4)
jne    13e0 <main+0x2c0>
lea    0x3(%rax),%ecx
xorps  %xmm6,%xmm6
cvtsi2sd %ecx,%xmm6
jmp    13e4 <main+0x2c4>
movsd  0x1b8b0(%rsp),%xmm0
lea    0xbc1(%rip),%rdi
movsd  %xmm7,(%rsp)
call   1030 <printf@plt>
lea    0xbb6(%rip),%rdi
movsd  (%rsp),%xmm0
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x529f0,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [4 x i8] c"%d\0A\00"
@.str.1 = [6 x i8] c"\0A%lf\0A\00"
@.str.2 = [10 x i8] c"sum: %lf\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca [28200 x i32]
%6 = alloca [28200 x double]
%7 = alloca i32
%8 = alloca double
store i32 0, i32* %1
store i32 0, i32* %7
store double 0.000000e+00, double* %2
br label %9
9: ; preds = %21, %0
%10 = load double, double* %2
%11 = fcmp olt double %10, 2.820000e+04
br i1 %11, label %12, label %24
12: ; preds = %9
%13 = load double, double* %2
%14 = fptosi double %13 to i32
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds [28200 x i32], [28200 x i32]* %5, i64 0, i64 %15
store i32 0, i32* %16
%17 = load double, double* %2
%18 = fptosi double %17 to i32
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds [28200 x double], [28200 x double]* %6, i64 0, i64 %19
store double 0.000000e+00, double* %20
br label %21
21: ; preds = %12
%22 = load double, double* %2
%23 = fadd double %22, 1.000000e+00
store double %23, double* %2
br label %9
24: ; preds = %9
store double 1.000000e+01, double* %2
br label %25
25: ; preds = %80, %24
%26 = load double, double* %2
%27 = fcmp olt double %26, 2.812400e+04
br i1 %27, label %28, label %83
28: ; preds = %25
%29 = load double, double* %2
%30 = call double @sqrt(double %29)
store double %30, double* %3
store double 1.000000e+00, double* %8
store double 2.000000e+00, double* %4
br label %31
31: ; preds = %62, %28
%32 = load double, double* %4
%33 = load double, double* %3
%34 = fadd double %33, 1.000000e+00
%35 = fptosi double %34 to i32
%36 = sitofp i32 %35 to double
%37 = fcmp olt double %32, %36
br i1 %37, label %38, label %65
38: ; preds = %31
%39 = load double, double* %2
%40 = fptosi double %39 to i64
%41 = load double, double* %4
%42 = fptosi double %41 to i64
%43 = srem i64 %40, %42
%44 = icmp ne i64 %43, 0
br i1 %44, label %61, label %45
45: ; preds = %38
%46 = load double, double* %4
%47 = load double, double* %8
%48 = fadd double %47, %46
store double %48, double* %8
%49 = load double, double* %2
%50 = load double, double* %4
%51 = fdiv double %49, %50
%52 = load double, double* %4
%53 = fcmp une double %51, %52
br i1 %53, label %54, label %60
54: ; preds = %45
%55 = load double, double* %2
%56 = load double, double* %4
%57 = fdiv double %55, %56
%58 = load double, double* %8
%59 = fadd double %58, %57
store double %59, double* %8
br label %60
60: ; preds = %54, %45
br label %61
61: ; preds = %60, %38
br label %62
62: ; preds = %61
%63 = load double, double* %4
%64 = fadd double %63, 1.000000e+00
store double %64, double* %4
br label %31
65: ; preds = %31
%66 = load double, double* %2
%67 = load double, double* %8
%68 = fcmp olt double %66, %67
br i1 %68, label %69, label %79
69: ; preds = %65
%70 = load double, double* %2
%71 = load i32, i32* %7
%72 = add nsw i32 %71, 1
store i32 %72, i32* %7
%73 = sext i32 %71 to i64
%74 = getelementptr inbounds [28200 x double], [28200 x double]* %6, i64 0, i64 %73
store double %70, double* %74
%75 = load double, double* %2
%76 = fptosi double %75 to i32
%77 = sitofp i32 %76 to double
%78 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %77)
br label %79
79: ; preds = %69, %65
br label %80
80: ; preds = %79
%81 = load double, double* %2
%82 = fadd double %81, 1.000000e+00
store double %82, double* %2
br label %25
83: ; preds = %25
store double 0.000000e+00, double* %2
br label %84
84: ; preds = %131, %83
%85 = load double, double* %2
%86 = fcmp olt double %85, 2.820000e+04
br i1 %86, label %87, label %134
87: ; preds = %84
%88 = load double, double* %2
store double %88, double* %4
br label %89
89: ; preds = %127, %87
%90 = load double, double* %4
%91 = fcmp olt double %90, 2.820000e+04
br i1 %91, label %92, label %130
92: ; preds = %89
%93 = load double, double* %2
%94 = fptosi double %93 to i32
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds [28200 x double], [28200 x double]* %6, i64 0, i64 %95
%97 = load double, double* %96
%98 = fcmp une double %97, 0.000000e+00
br i1 %98, label %99, label %119
99: ; preds = %92
%100 = load double, double* %4
%101 = fptosi double %100 to i32
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [28200 x double], [28200 x double]* %6, i64 0, i64 %102
%104 = load double, double* %103
%105 = fcmp une double %104, 0.000000e+00
br i1 %105, label %106, label %119
106: ; preds = %99
%107 = load double, double* %2
%108 = fptosi double %107 to i32
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [28200 x double], [28200 x double]* %6, i64 0, i64 %109
%111 = load double, double* %110
%112 = load double, double* %4
%113 = fptosi double %112 to i32
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds [28200 x double], [28200 x double]* %6, i64 0, i64 %114
%116 = load double, double* %115
%117 = fadd double %111, %116
%118 = fptosi double %117 to i32
store i32 %118, i32* %7
br label %119
119: ; preds = %106, %99, %92
%120 = load i32, i32* %7
%121 = icmp slt i32 %120, 28150
br i1 %121, label %122, label %126
122: ; preds = %119
%123 = load i32, i32* %7
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds [28200 x i32], [28200 x i32]* %5, i64 0, i64 %124
store i32 1, i32* %125
br label %126
126: ; preds = %122, %119
br label %127
127: ; preds = %126
%128 = load double, double* %4
%129 = fadd double %128, 1.000000e+00
store double %129, double* %4
br label %89
130: ; preds = %89
br label %131
131: ; preds = %130
%132 = load double, double* %2
%133 = fadd double %132, 1.000000e+00
store double %133, double* %2
br label %84
134: ; preds = %84
store double 0.000000e+00, double* %8
store double 0.000000e+00, double* %2
br label %135
135: ; preds = %150, %134
%136 = load double, double* %2
%137 = fcmp olt double %136, 2.812400e+04
br i1 %137, label %138, label %153
138: ; preds = %135
%139 = load double, double* %2
%140 = fptosi double %139 to i32
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [28200 x i32], [28200 x i32]* %5, i64 0, i64 %141
%143 = load i32, i32* %142
%144 = icmp ne i32 %143, 0
br i1 %144, label %149, label %145
145: ; preds = %138
%146 = load double, double* %2
%147 = load double, double* %8
%148 = fadd double %147, %146
store double %148, double* %8
br label %149
149: ; preds = %145, %138
br label %150
150: ; preds = %149
%151 = load double, double* %2
%152 = fadd double %151, 1.000000e+00
store double %152, double* %2
br label %135
153: ; preds = %135
%154 = getelementptr inbounds [28200 x double], [28200 x double]* %6, i64 0, i64 0
%155 = load double, double* %154
%156 = call i32 @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), double %155)
%157 = load double, double* %8
%158 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), double %157)
ret i32 0
}

LLVM IR (-O2):
@.str = [4 x i8] c"%d\0A\00"
@.str.1 = [6 x i8] c"\0A%lf\0A\00"
@.str.2 = [10 x i8] c"sum: %lf\0A\00"
define i32 @main() {
%1 = alloca [28200 x i32]
%2 = alloca [28200 x double]
%3 = bitcast [28200 x i32]* %1 to i8*
%4 = bitcast [28200 x double]* %2 to i8*
br label %5
5: ; preds = %5, %0
%6 = phi i32 [ 0, %0 ], [ %56, %5 ]
%7 = zext i32 %6 to i64
%8 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %7
%9 = bitcast i32* %8 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %9
%10 = getelementptr inbounds i32, i32* %8, i64 2
%11 = bitcast i32* %10 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %11
%12 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %7
%13 = bitcast double* %12 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %13
%14 = getelementptr inbounds double, double* %12, i64 2
%15 = bitcast double* %14 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %15
%16 = add nuw nsw i32 %6, 4
%17 = zext i32 %16 to i64
%18 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %17
%19 = bitcast i32* %18 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %19
%20 = getelementptr inbounds i32, i32* %18, i64 2
%21 = bitcast i32* %20 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %21
%22 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %17
%23 = bitcast double* %22 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %23
%24 = getelementptr inbounds double, double* %22, i64 2
%25 = bitcast double* %24 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %25
%26 = add nuw nsw i32 %6, 8
%27 = zext i32 %26 to i64
%28 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %27
%29 = bitcast i32* %28 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %29
%30 = getelementptr inbounds i32, i32* %28, i64 2
%31 = bitcast i32* %30 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %31
%32 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %27
%33 = bitcast double* %32 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %33
%34 = getelementptr inbounds double, double* %32, i64 2
%35 = bitcast double* %34 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %35
%36 = add nuw nsw i32 %6, 12
%37 = zext i32 %36 to i64
%38 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %37
%39 = bitcast i32* %38 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %39
%40 = getelementptr inbounds i32, i32* %38, i64 2
%41 = bitcast i32* %40 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %41
%42 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %37
%43 = bitcast double* %42 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %43
%44 = getelementptr inbounds double, double* %42, i64 2
%45 = bitcast double* %44 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %45
%46 = add nuw nsw i32 %6, 16
%47 = zext i32 %46 to i64
%48 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %47
%49 = bitcast i32* %48 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %49
%50 = getelementptr inbounds i32, i32* %48, i64 2
%51 = bitcast i32* %50 to <2 x i32>*
store <2 x i32> zeroinitializer, <2 x i32>* %51
%52 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %47
%53 = bitcast double* %52 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %53
%54 = getelementptr inbounds double, double* %52, i64 2
%55 = bitcast double* %54 to <2 x double>*
store <2 x double> zeroinitializer, <2 x double>* %55
%56 = add nuw nsw i32 %6, 20
%57 = icmp eq i32 %56, 28200
br i1 %57, label %58, label %5
58: ; preds = %5, %94
%59 = phi i32 [ %95, %94 ], [ 0, %5 ]
%60 = phi i32 [ %96, %94 ], [ 10, %5 ]
%61 = sitofp i32 %60 to double
%62 = tail call double @sqrt(double %61)
%63 = fadd double %62, 1.000000e+00
%64 = fptosi double %63 to i32
%65 = sitofp i32 %64 to double
%66 = icmp sgt i32 %64, 2
br i1 %66, label %67, label %85
67: ; preds = %58
%68 = zext i32 %60 to i64
br label %69
69: ; preds = %67, %81
%70 = phi double [ 1.000000e+00, %67 ], [ %82, %81 ]
%71 = phi double [ 2.000000e+00, %67 ], [ %83, %81 ]
%72 = fptosi double %71 to i64
%73 = srem i64 %68, %72
%74 = icmp eq i64 %73, 0
br i1 %74, label %75, label %81
75: ; preds = %69
%76 = fadd double %71, %70
%77 = fdiv double %61, %71
%78 = fcmp une double %77, %71
br i1 %78, label %79, label %81
79: ; preds = %75
%80 = fadd double %77, %76
br label %81
81: ; preds = %69, %79, %75
%82 = phi double [ %70, %69 ], [ %80, %79 ], [ %76, %75 ]
%83 = fadd double %71, 1.000000e+00
%84 = fcmp olt double %83, %65
br i1 %84, label %69, label %85
85: ; preds = %81, %58
%86 = phi double [ 1.000000e+00, %58 ], [ %82, %81 ]
%87 = fcmp ogt double %86, %61
br i1 %87, label %88, label %94
88: ; preds = %85
%89 = add nsw i32 %59, 1
%90 = sext i32 %59 to i64
%91 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %90
store double %61, double* %91
%92 = sitofp i32 %60 to double
%93 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), double %92)
br label %94
94: ; preds = %85, %88
%95 = phi i32 [ %89, %88 ], [ %59, %85 ]
%96 = add nuw nsw i32 %60, 1
%97 = icmp eq i32 %96, 28124
br i1 %97, label %98, label %58
98: ; preds = %94, %129
%99 = phi i32 [ %130, %129 ], [ %95, %94 ]
%100 = phi i32 [ %131, %129 ], [ 0, %94 ]
%101 = icmp ult i32 %100, 28200
br i1 %101, label %102, label %129
102: ; preds = %98
%103 = sitofp i32 %100 to double
%104 = zext i32 %100 to i64
%105 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %104
%106 = load double, double* %105
%107 = fcmp une double %106, 0.000000e+00
br label %108
108: ; preds = %102, %126
%109 = phi i32 [ %99, %102 ], [ %121, %126 ]
%110 = phi double [ %103, %102 ], [ %127, %126 ]
br i1 %107, label %111, label %120
111: ; preds = %108
%112 = fptosi double %110 to i32
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 %113
%115 = load double, double* %114
%116 = fcmp une double %115, 0.000000e+00
br i1 %116, label %117, label %120
117: ; preds = %111
%118 = fadd double %106, %115
%119 = fptosi double %118 to i32
br label %120
120: ; preds = %117, %111, %108
%121 = phi i32 [ %119, %117 ], [ %109, %111 ], [ %109, %108 ]
%122 = icmp slt i32 %121, 28150
br i1 %122, label %123, label %126
123: ; preds = %120
%124 = sext i32 %121 to i64
%125 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %124
store i32 1, i32* %125
br label %126
126: ; preds = %120, %123
%127 = fadd double %110, 1.000000e+00
%128 = fcmp olt double %127, 2.820000e+04
br i1 %128, label %108, label %129
129: ; preds = %126, %98
%130 = phi i32 [ %99, %98 ], [ %121, %126 ]
%131 = add nuw nsw i32 %100, 1
%132 = icmp eq i32 %131, 28200
br i1 %132, label %133, label %98
133: ; preds = %129, %133
%134 = phi double [ %166, %133 ], [ 0.000000e+00, %129 ]
%135 = phi i32 [ %167, %133 ], [ 0, %129 ]
%136 = sitofp i32 %135 to double
%137 = zext i32 %135 to i64
%138 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %137
%139 = load i32, i32* %138
%140 = icmp eq i32 %139, 0
%141 = select i1 %140, double %136, double -0.000000e+00
%142 = fadd double %134, %141
%143 = or i32 %135, 1
%144 = sitofp i32 %143 to double
%145 = zext i32 %143 to i64
%146 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %145
%147 = load i32, i32* %146
%148 = icmp eq i32 %147, 0
%149 = select i1 %148, double %144, double -0.000000e+00
%150 = fadd double %142, %149
%151 = or i32 %135, 2
%152 = sitofp i32 %151 to double
%153 = zext i32 %151 to i64
%154 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %153
%155 = load i32, i32* %154
%156 = icmp eq i32 %155, 0
%157 = select i1 %156, double %152, double -0.000000e+00
%158 = fadd double %150, %157
%159 = or i32 %135, 3
%160 = sitofp i32 %159 to double
%161 = zext i32 %159 to i64
%162 = getelementptr inbounds [28200 x i32], [28200 x i32]* %1, i64 0, i64 %161
%163 = load i32, i32* %162
%164 = icmp eq i32 %163, 0
%165 = select i1 %164, double %160, double -0.000000e+00
%166 = fadd double %158, %165
%167 = add nuw nsw i32 %135, 4
%168 = icmp eq i32 %167, 28124
br i1 %168, label %169, label %133
169: ; preds = %133
%170 = getelementptr inbounds [28200 x double], [28200 x double]* %2, i64 0, i64 0
%171 = load double, double* %170
%172 = tail call i32 @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), double %171)
%173 = tail call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), double %166)
ret i32 0
}