#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 */
typedef int /*<<< orphan*/ myList;

/* Variables and functions */
double pow(long, double);
int /*<<< orphan*/ printf(char *, long);
long round(double);
int main(void) {
  long myList[] = {
      74266682763,    158640665547,   197701612563,     281637364827,
      297066731052,   380385308667,   547148417907,     634562662188,
      668400144867,   765502289643,   790806450252,     902092778643,
      923498999787,   1096307901507,  1124208577947,    1126549459308,
      1188266924208,  1283928994803,  1285083261147,    1427765989923,
      1521541234668,  1735660299387,  1779314513067,    1856667069075,
      1935665424147,  2182535283747,  2188593671628,    2281429304427,
      2401415956443,  2444217334923,  2534736283443,    2538250648752,
      2673600579468,  3062009158572,  3163225801008,    3318136637907,
      3423467778003,  3492910748523,  3608371114572,    3693995999148,
      3877372442307,  3966016638675,  3974810464443,    4161730388907,
      4213834009707,  4385231606028,  4496834311788,    4506197837232,
      4690733057283,  4753067696832,  4873348987563,    4924335761163,
      4942540314075,  5002343826627,  5070912641067,    5135715979212,
      5140333044588,  5465904416427,  5711063959692,    5858440199283,
      6015601303803,  6086164938672,  6739752891963,    6889520606787,
      6942641197548,  7040934120675,  7117258052268,    7426668276300,
      7663046166867,  7742661696588,  7868603111187,    8118835007787,
      8146911091683,  8311490998083,  8730141134988,    8754374686512,
      8832248651667,  8889850120683,  8986268614323,    9106754693547,
      9125717217708,  9159077516043,  9509632716675,    9605663825772,
      9776869339692,  9866771113563,  9958691247267,    10117877201523,
      10138945133772, 10153002595008, 10230492706707,   10694402317872,
      10730808767523, 10788418589403, 11152720398603,   11555360953227,
      11565749350323, 11948706929523, 12248036634288,   12299773139787,
      12652903204032, 12849893909307, 12973097997363,   13272546551628,
      13678710447675, 13693871112012, 13971642994092,   14353723178067,
      14433484458288, 14775983996592, 15108641132403,   15140327187027,
      15286656818667, 15509489769228, 15620942694483,   15785064547707,
      15864066554700, 15899241857772, 16013830617603,   16476300154587,
      16646921555628, 16710003621675, 16854639170187,   16855336038828,
      17420988817323, 17540926424112, 17692064495427,   17987337247152,
      18024791348928, 18136664491323, 18762932229132,   19012270787328,
      19137557241075, 19195520531187, 19389364497867,   19493395950252,
      19642817553723, 19697343044652, 19770161256300,   20009375306508,
      20154661062627, 20283650564268, 12346266026754075};
  int sz = sizeof(myList) / sizeof(long);
  int j;
  double Sqrt3 = pow(3, 0.5);
  long DistanceSqrd;
  long DistanceSqrd12;
  long firstLayer;
  long lastLayer;
  long layer;
  long layerSqrd;
  long ct;
  long ctmax = 0;
  long DstSqrdMax;
  long delta;
  long i;
  float eps;
  float erro;
  double i_float;
  float p;
  eps = 1.e-8;
  for (j = 0; j < sz; j++) {
    DistanceSqrd = myList[j];
    printf("%li ", DistanceSqrd);
    DistanceSqrd12 = 12 * DistanceSqrd;
    firstLayer = pow(DistanceSqrd, 0.5) / Sqrt3;
    lastLayer = 2. / 3 * pow(DistanceSqrd, 0.5);
    ct = 0;
    layer = firstLayer;
    do {
      layerSqrd = layer * layer;
      delta = DistanceSqrd12 - 27 * layerSqrd;
      i_float = (3.0 * layer - pow(delta, 0.5)) / 6.0;
      i = round(i_float);
      erro = i - i_float;
      if (erro < 0)
        erro = -erro;
      if (erro < eps & i >= 0) {
        if (DistanceSqrd == 3 * (layerSqrd - layer * i + i * i)) {
          if (i == 0) {
            ct += 6;
            printf("%li ", layer);
          } else if (!(layer & 1) & i == layer >> 1) {
            ct += 6;
            printf("%li ", layer);
          } else {
            ct += 12;
            printf("%li ", layer);
          }
        }
      }
      layer += 1;
    } while (layer <= lastLayer);
    if (ct > ctmax) {
      ctmax = ct;
      DstSqrdMax = DistanceSqrd;
    }
    printf("%li\n", ct);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x510,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x480(%rbp),%rdi
lea    0xed0(%rip),%rsi
mov    $0x478,%edx
call   1040 <memcpy@plt>
movl   $0x8f,-0x484(%rbp)
mov    $0x3,%edi
movsd  0xe87(%rip),%xmm0
call   1050 <pow@plt>
movsd  %xmm0,-0x490(%rbp)
ff
movq   $0x0,-0x4d0(%rbp)
movss  0xe5f(%rip),%xmm0
movss  %xmm0,-0x4ec(%rbp)
ff
movl   $0x0,-0x488(%rbp)
mov    -0x488(%rbp),%eax
cmp    -0x484(%rbp),%eax
jge    1530 <main+0x3f0>
movslq -0x488(%rbp),%rax
mov    -0x480(%rbp,%rax,8),%rax
ff
mov    %rax,-0x498(%rbp)
mov    -0x498(%rbp),%rsi
lea    0x12bf(%rip),%rdi
call   1030 <printf@plt>
imul   $0xc,-0x498(%rbp),%rax
0c
mov    %rax,-0x4a0(%rbp)
mov    -0x498(%rbp),%rdi
movsd  0xdfc(%rip),%xmm0
call   1050 <pow@plt>
divsd  -0x490(%rbp),%xmm0
ff
cvttsd2si %xmm0,%rax
mov    %rax,-0x4a8(%rbp)
mov    -0x498(%rbp),%rdi
movsd  0xdd4(%rip),%xmm0
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xdcc(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%rax
mov    %rax,-0x4b0(%rbp)
movq   $0x0,-0x4c8(%rbp)
mov    -0x4a8(%rbp),%rax
mov    %rax,-0x4b8(%rbp)
mov    -0x4b8(%rbp),%rax
imul   -0x4b8(%rbp),%rax
ff
mov    %rax,-0x4c0(%rbp)
mov    -0x4a0(%rbp),%rax
imul   $0x1b,-0x4c0(%rbp),%rcx
1b
sub    %rcx,%rax
mov    %rax,-0x4e0(%rbp)
cvtsi2sdq -0x4b8(%rbp),%xmm0
ff ff
movsd  %xmm0,-0x508(%rbp)
ff
mov    -0x4e0(%rbp),%rdi
movsd  0xd4c(%rip),%xmm0
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x508(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xd35(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd1d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x4f8(%rbp)
ff
movsd  -0x4f8(%rbp),%xmm0
ff
call   1060 <round@plt>
mov    %rax,-0x4e8(%rbp)
cvtsi2sdq -0x4e8(%rbp),%xmm0
ff ff
subsd  -0x4f8(%rbp),%xmm0
ff
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4f0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomiss -0x4f0(%rbp),%xmm0
jbe    1365 <main+0x225>
movss  -0x4f0(%rbp),%xmm0
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x4f0(%rbp)
ff
movss  -0x4f0(%rbp),%xmm1
ff
movss  -0x4ec(%rbp),%xmm0
ff
ucomiss %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cmpq   $0x0,-0x4e8(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     14b3 <main+0x373>
mov    -0x498(%rbp),%rax
mov    -0x4c0(%rbp),%rcx
mov    -0x4b8(%rbp),%rdx
imul   -0x4e8(%rbp),%rdx
ff
sub    %rdx,%rcx
mov    -0x4e8(%rbp),%rdx
imul   -0x4e8(%rbp),%rdx
ff
add    %rdx,%rcx
imul   $0x3,%rcx,%rcx
cmp    %rcx,%rax
jne    14ae <main+0x36e>
cmpq   $0x0,-0x4e8(%rbp)
jne    1413 <main+0x2d3>
mov    -0x4c8(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x4c8(%rbp)
mov    -0x4b8(%rbp),%rsi
lea    0x109f(%rip),%rdi
call   1030 <printf@plt>
jmp    14a9 <main+0x369>
mov    -0x4b8(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    -0x4e8(%rbp),%rcx
mov    -0x4b8(%rbp),%rdx
sar    $0x1,%rdx
cmp    %rdx,%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     147f <main+0x33f>
mov    -0x4c8(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x4c8(%rbp)
mov    -0x4b8(%rbp),%rsi
lea    0x1033(%rip),%rdi
call   1030 <printf@plt>
jmp    14a4 <main+0x364>
mov    -0x4c8(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x4c8(%rbp)
mov    -0x4b8(%rbp),%rsi
lea    0x1009(%rip),%rdi
call   1030 <printf@plt>
jmp    14a9 <main+0x369>
jmp    14ae <main+0x36e>
jmp    14b3 <main+0x373>
mov    -0x4b8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x4b8(%rbp)
mov    -0x4b8(%rbp),%rax
cmp    -0x4b0(%rbp),%rax
jle    126d <main+0x12d>
mov    -0x4c8(%rbp),%rax
cmp    -0x4d0(%rbp),%rax
jle    1509 <main+0x3c9>
mov    -0x4c8(%rbp),%rax
mov    %rax,-0x4d0(%rbp)
mov    -0x498(%rbp),%rax
mov    %rax,-0x4d8(%rbp)
mov    -0x4c8(%rbp),%rsi
lea    0xf96(%rip),%rdi
call   1030 <printf@plt>
mov    -0x488(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x488(%rbp)
jmp    11b3 <main+0x73>
xor    %eax,%eax
add    $0x510,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
movsd  0xeba(%rip),%xmm0
mov    $0x3,%edi
call   1040 <pow@plt>
movsd  %xmm0,0x10(%rsp)
xor    %eax,%eax
jmp    1185 <main+0x55>
nopw   0x0(%rax,%rax,1)
lea    0x1356(%rip),%rdi
mov    (%rsp),%rsi
call   1030 <printf@plt>
mov    0x18(%rsp),%rax
add    $0x1,%rax
cmp    $0x8f,%rax
je     1323 <main+0x1f3>
mov    %rax,0x18(%rsp)
lea    0xeaf(%rip),%rcx
mov    (%rcx,%rax,8),%rbx
lea    0x131c(%rip),%rdi
mov    %rbx,%rsi
call   1030 <printf@plt>
lea    0x0(,%rbx,4),%rax
lea    (%rax,%rax,2),%r14
mov    %rbx,%rdi
movsd  0xe45(%rip),%xmm0
call   1040 <pow@plt>
divsd  0x10(%rsp),%xmm0
cvttsd2si %xmm0,%rbp
mov    %rbx,0x20(%rsp)
mov    %rbx,%rdi
movsd  0xe25(%rip),%xmm0
call   1040 <pow@plt>
mulsd  0xe20(%rip),%xmm0
cvttsd2si %xmm0,%r15
mov    %rbp,%r13
neg    %r13
mov    %ebp,%r12d
not    %r12d
xor    %eax,%eax
mov    %rax,(%rsp)
jmp    1252 <main+0x122>
mov    %rbp,%rcx
sar    %rcx
xor    %edx,%edx
cmp    %rcx,%rax
sete   %dl
test   %r12d,%edx
mov    $0x6,%eax
mov    $0xc,%ecx
cmove  %rcx,%rax
mov    (%rsp),%rcx
add    %rax,%rcx
mov    %rcx,(%rsp)
lea    0x1286(%rip),%rdi
mov    %rbp,%rsi
call   1030 <printf@plt>
lea    0x1(%rbp),%rax
add    $0xffffffffffffffff,%r13
add    $0xffffffff,%r12d
cmp    %r15,%rbp
mov    %rax,%rbp
jge    1160 <main+0x30>
mov    %rbp,%rbx
imul   %rbp,%rbx
imul   $0xffffffffffffffe5,%rbx,%rdi
add    %r14,%rdi
xorps  %xmm0,%xmm0
cvtsi2sd %rbp,%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xd8a(%rip),%xmm0
call   1040 <pow@plt>
movsd  0x8(%rsp),%xmm1
mulsd  0xd87(%rip),%xmm1
subsd  %xmm0,%xmm1
divsd  0xd83(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
movapd %xmm1,%xmm0
call   1050 <round@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
subsd  0x8(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
movaps %xmm0,%xmm1
xorps  0xd60(%rip),%xmm1
movaps %xmm0,%xmm2
cmpltss 0xd68(%rip),%xmm2
andps  %xmm2,%xmm1
andnps %xmm0,%xmm2
orps   %xmm1,%xmm2
xor    %ecx,%ecx
movss  0xd51(%rip),%xmm0
ucomiss %xmm2,%xmm0
seta   %cl
mov    %rax,%rdx
shr    $0x3f,%rdx
not    %edx
test   %edx,%ecx
je     123a <main+0x10a>
lea    (%rax,%r13,1),%rcx
imul   %rax,%rcx
add    %rbx,%rcx
lea    (%rcx,%rcx,2),%rcx
cmp    %rcx,0x20(%rsp)
jne    123a <main+0x10a>
test   %rax,%rax
jne    1201 <main+0xd1>
mov    $0x6,%eax
jmp    1220 <main+0xf0>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.myList = [143 x i64] [i64 74266682763, i64 158640665547, i64 197701612563, i64 281637364827, i64 297066731052, i64 380385308667, i64 547148417907, i64 634562662188, i64 668400144867, i64 765502289643, i64 790806450252, i64 902092778643, i64 923498999787, i64 1096307901507, i64 1124208577947, i64 1126549459308, i64 1188266924208, i64 1283928994803, i64 1285083261147, i64 1427765989923, i64 1521541234668, i64 1735660299387, i64 1779314513067, i64 1856667069075, i64 1935665424147, i64 2182535283747, i64 2188593671628, i64 2281429304427, i64 2401415956443, i64 2444217334923, i64 2534736283443, i64 2538250648752, i64 2673600579468, i64 3062009158572, i64 3163225801008, i64 3318136637907, i64 3423467778003, i64 3492910748523, i64 3608371114572, i64 3693995999148, i64 3877372442307, i64 3966016638675, i64 3974810464443, i64 4161730388907, i64 4213834009707, i64 4385231606028, i64 4496834311788, i64 4506197837232, i64 4690733057283, i64 4753067696832, i64 4873348987563, i64 4924335761163, i64 4942540314075, i64 5002343826627, i64 5070912641067, i64 5135715979212, i64 5140333044588, i64 5465904416427, i64 5711063959692, i64 5858440199283, i64 6015601303803, i64 6086164938672, i64 6739752891963, i64 6889520606787, i64 6942641197548, i64 7040934120675, i64 7117258052268, i64 7426668276300, i64 7663046166867, i64 7742661696588, i64 7868603111187, i64 8118835007787, i64 8146911091683, i64 8311490998083, i64 8730141134988, i64 8754374686512, i64 8832248651667, i64 8889850120683, i64 8986268614323, i64 9106754693547, i64 9125717217708, i64 9159077516043, i64 9509632716675, i64 9605663825772, i64 9776869339692, i64 9866771113563, i64 9958691247267, i64 10117877201523, i64 10138945133772, i64 10153002595008, i64 10230492706707, i64 10694402317872, i64 10730808767523, i64 10788418589403, i64 11152720398603, i64 11555360953227, i64 11565749350323, i64 11948706929523, i64 12248036634288, i64 12299773139787, i64 12652903204032, i64 12849893909307, i64 12973097997363, i64 13272546551628, i64 13678710447675, i64 13693871112012, i64 13971642994092, i64 14353723178067, i64 14433484458288, i64 14775983996592, i64 15108641132403, i64 15140327187027, i64 15286656818667, i64 15509489769228, i64 15620942694483, i64 15785064547707, i64 15864066554700, i64 15899241857772, i64 16013830617603, i64 16476300154587, i64 16646921555628, i64 16710003621675, i64 16854639170187, i64 16855336038828, i64 17420988817323, i64 17540926424112, i64 17692064495427, i64 17987337247152, i64 18024791348928, i64 18136664491323, i64 18762932229132, i64 19012270787328, i64 19137557241075, i64 19195520531187, i64 19389364497867, i64 19493395950252, i64 19642817553723, i64 19697343044652, i64 19770161256300, i64 20009375306508, i64 20154661062627, i64 20283650564268, i64 12346266026754075]
@.str = [5 x i8] c"%li \00"
@.str.1 = [5 x i8] c"%li\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [143 x i64]
%3 = alloca i32
%4 = alloca i32
%5 = alloca double
%6 = alloca i64
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i64
%11 = alloca i64
%12 = alloca i64
%13 = alloca i64
%14 = alloca i64
%15 = alloca i64
%16 = alloca i64
%17 = alloca float
%18 = alloca float
%19 = alloca double
%20 = alloca float
store i32 0, i32* %1
%21 = bitcast [143 x i64]* %2 to i8*
store i32 143, i32* %3
%22 = call double @pow(i64 3, double 5.000000e-01)
store double %22, double* %5
store i64 0, i64* %13
store float 0x3E45798EE0000000, float* %17
store i32 0, i32* %4
br label %23
23: ; preds = %147, %0
%24 = load i32, i32* %4
%25 = load i32, i32* %3
%26 = icmp slt i32 %24, %25
br i1 %26, label %27, label %150
27: ; preds = %23
%28 = load i32, i32* %4
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [143 x i64], [143 x i64]* %2, i64 0, i64 %29
%31 = load i64, i64* %30
store i64 %31, i64* %6
%32 = load i64, i64* %6
%33 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i64 %32)
%34 = load i64, i64* %6
%35 = mul nsw i64 12, %34
store i64 %35, i64* %7
%36 = load i64, i64* %6
%37 = call double @pow(i64 %36, double 5.000000e-01)
%38 = load double, double* %5
%39 = fdiv double %37, %38
%40 = fptosi double %39 to i64
store i64 %40, i64* %8
%41 = load i64, i64* %6
%42 = call double @pow(i64 %41, double 5.000000e-01)
%43 = fmul double 0x3FE5555555555555, %42
%44 = fptosi double %43 to i64
store i64 %44, i64* %9
store i64 0, i64* %12
%45 = load i64, i64* %8
store i64 %45, i64* %10
br label %46
46: ; preds = %133, %27
%47 = load i64, i64* %10
%48 = load i64, i64* %10
%49 = mul nsw i64 %47, %48
store i64 %49, i64* %11
%50 = load i64, i64* %7
%51 = load i64, i64* %11
%52 = mul nsw i64 27, %51
%53 = sub nsw i64 %50, %52
store i64 %53, i64* %15
%54 = load i64, i64* %10
%55 = sitofp i64 %54 to double
%56 = load i64, i64* %15
%57 = call double @pow(i64 %56, double 5.000000e-01)
%58 = fneg double %57
%59 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %55, double %58)
%60 = fdiv double %59, 6.000000e+00
store double %60, double* %19
%61 = load double, double* %19
%62 = call i64 @round(double %61)
store i64 %62, i64* %16
%63 = load i64, i64* %16
%64 = sitofp i64 %63 to double
%65 = load double, double* %19
%66 = fsub double %64, %65
%67 = fptrunc double %66 to float
store float %67, float* %18
%68 = load float, float* %18
%69 = fcmp olt float %68, 0.000000e+00
br i1 %69, label %70, label %73
70: ; preds = %46
%71 = load float, float* %18
%72 = fneg float %71
store float %72, float* %18
br label %73
73: ; preds = %70, %46
%74 = load float, float* %18
%75 = load float, float* %17
%76 = fcmp olt float %74, %75
%77 = zext i1 %76 to i32
%78 = load i64, i64* %16
%79 = icmp sge i64 %78, 0
%80 = zext i1 %79 to i32
%81 = and i32 %77, %80
%82 = icmp ne i32 %81, 0
br i1 %82, label %83, label %130
83: ; preds = %73
%84 = load i64, i64* %6
%85 = load i64, i64* %11
%86 = load i64, i64* %10
%87 = load i64, i64* %16
%88 = mul nsw i64 %86, %87
%89 = sub nsw i64 %85, %88
%90 = load i64, i64* %16
%91 = load i64, i64* %16
%92 = mul nsw i64 %90, %91
%93 = add nsw i64 %89, %92
%94 = mul nsw i64 3, %93
%95 = icmp eq i64 %84, %94
br i1 %95, label %96, label %129
96: ; preds = %83
%97 = load i64, i64* %16
%98 = icmp eq i64 %97, 0
br i1 %98, label %99, label %104
99: ; preds = %96
%100 = load i64, i64* %12
%101 = add nsw i64 %100, 6
store i64 %101, i64* %12
%102 = load i64, i64* %10
%103 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i64 %102)
br label %128
104: ; preds = %96
%105 = load i64, i64* %10
%106 = and i64 %105, 1
%107 = icmp ne i64 %106, 0
%108 = xor i1 %107, true
%109 = zext i1 %108 to i32
%110 = load i64, i64* %16
%111 = load i64, i64* %10
%112 = ashr i64 %111, 1
%113 = icmp eq i64 %110, %112
%114 = zext i1 %113 to i32
%115 = and i32 %109, %114
%116 = icmp ne i32 %115, 0
br i1 %116, label %117, label %122
117: ; preds = %104
%118 = load i64, i64* %12
%119 = add nsw i64 %118, 6
store i64 %119, i64* %12
%120 = load i64, i64* %10
%121 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i64 %120)
br label %127
122: ; preds = %104
%123 = load i64, i64* %12
%124 = add nsw i64 %123, 12
store i64 %124, i64* %12
%125 = load i64, i64* %10
%126 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i64 %125)
br label %127
127: ; preds = %122, %117
br label %128
128: ; preds = %127, %99
br label %129
129: ; preds = %128, %83
br label %130
130: ; preds = %129, %73
%131 = load i64, i64* %10
%132 = add nsw i64 %131, 1
store i64 %132, i64* %10
br label %133
133: ; preds = %130
%134 = load i64, i64* %10
%135 = load i64, i64* %9
%136 = icmp sle i64 %134, %135
br i1 %136, label %46, label %137
137: ; preds = %133
%138 = load i64, i64* %12
%139 = load i64, i64* %13
%140 = icmp sgt i64 %138, %139
br i1 %140, label %141, label %144
141: ; preds = %137
%142 = load i64, i64* %12
store i64 %142, i64* %13
%143 = load i64, i64* %6
store i64 %143, i64* %14
br label %144
144: ; preds = %141, %137
%145 = load i64, i64* %12
%146 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i64 %145)
br label %147
147: ; preds = %144
%148 = load i32, i32* %4
%149 = add nsw i32 %148, 1
store i32 %149, i32* %4
br label %23
150: ; preds = %23
ret i32 0
}

LLVM IR (-O2):
@__const.main.myList = [143 x i64] [i64 74266682763, i64 158640665547, i64 197701612563, i64 281637364827, i64 297066731052, i64 380385308667, i64 547148417907, i64 634562662188, i64 668400144867, i64 765502289643, i64 790806450252, i64 902092778643, i64 923498999787, i64 1096307901507, i64 1124208577947, i64 1126549459308, i64 1188266924208, i64 1283928994803, i64 1285083261147, i64 1427765989923, i64 1521541234668, i64 1735660299387, i64 1779314513067, i64 1856667069075, i64 1935665424147, i64 2182535283747, i64 2188593671628, i64 2281429304427, i64 2401415956443, i64 2444217334923, i64 2534736283443, i64 2538250648752, i64 2673600579468, i64 3062009158572, i64 3163225801008, i64 3318136637907, i64 3423467778003, i64 3492910748523, i64 3608371114572, i64 3693995999148, i64 3877372442307, i64 3966016638675, i64 3974810464443, i64 4161730388907, i64 4213834009707, i64 4385231606028, i64 4496834311788, i64 4506197837232, i64 4690733057283, i64 4753067696832, i64 4873348987563, i64 4924335761163, i64 4942540314075, i64 5002343826627, i64 5070912641067, i64 5135715979212, i64 5140333044588, i64 5465904416427, i64 5711063959692, i64 5858440199283, i64 6015601303803, i64 6086164938672, i64 6739752891963, i64 6889520606787, i64 6942641197548, i64 7040934120675, i64 7117258052268, i64 7426668276300, i64 7663046166867, i64 7742661696588, i64 7868603111187, i64 8118835007787, i64 8146911091683, i64 8311490998083, i64 8730141134988, i64 8754374686512, i64 8832248651667, i64 8889850120683, i64 8986268614323, i64 9106754693547, i64 9125717217708, i64 9159077516043, i64 9509632716675, i64 9605663825772, i64 9776869339692, i64 9866771113563, i64 9958691247267, i64 10117877201523, i64 10138945133772, i64 10153002595008, i64 10230492706707, i64 10694402317872, i64 10730808767523, i64 10788418589403, i64 11152720398603, i64 11555360953227, i64 11565749350323, i64 11948706929523, i64 12248036634288, i64 12299773139787, i64 12652903204032, i64 12849893909307, i64 12973097997363, i64 13272546551628, i64 13678710447675, i64 13693871112012, i64 13971642994092, i64 14353723178067, i64 14433484458288, i64 14775983996592, i64 15108641132403, i64 15140327187027, i64 15286656818667, i64 15509489769228, i64 15620942694483, i64 15785064547707, i64 15864066554700, i64 15899241857772, i64 16013830617603, i64 16476300154587, i64 16646921555628, i64 16710003621675, i64 16854639170187, i64 16855336038828, i64 17420988817323, i64 17540926424112, i64 17692064495427, i64 17987337247152, i64 18024791348928, i64 18136664491323, i64 18762932229132, i64 19012270787328, i64 19137557241075, i64 19195520531187, i64 19389364497867, i64 19493395950252, i64 19642817553723, i64 19697343044652, i64 19770161256300, i64 20009375306508, i64 20154661062627, i64 20283650564268, i64 12346266026754075]
@.str = [5 x i8] c"%li \00"
@.str.1 = [5 x i8] c"%li\0A\00"
define i32 @main() {
%1 = tail call double @pow(i64 3, double 5.000000e-01)
br label %2
2: ; preds = %0, %64
%3 = phi i64 [ 0, %0 ], [ %66, %64 ]
%4 = getelementptr inbounds [143 x i64], [143 x i64]* @__const.main.myList, i64 0, i64 %3
%5 = load i64, i64* %4
%6 = tail call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i64 %5)
%7 = mul nsw i64 %5, 12
%8 = tail call double @pow(i64 %5, double 5.000000e-01)
%9 = fdiv double %8, %1
%10 = fptosi double %9 to i64
%11 = tail call double @pow(i64 %5, double 5.000000e-01)
%12 = fmul double %11, 0x3FE5555555555555
%13 = fptosi double %12 to i64
br label %14
14: ; preds = %60, %2
%15 = phi i64 [ 0, %2 ], [ %61, %60 ]
%16 = phi i64 [ %10, %2 ], [ %62, %60 ]
%17 = mul nsw i64 %16, %16
%18 = mul i64 %17, -27
%19 = add i64 %18, %7
%20 = sitofp i64 %16 to double
%21 = tail call double @pow(i64 %19, double 5.000000e-01)
%22 = fneg double %21
%23 = tail call double @llvm.fmuladd.f64(double %20, double 3.000000e+00, double %22)
%24 = fdiv double %23, 6.000000e+00
%25 = tail call i64 @round(double %24)
%26 = sitofp i64 %25 to double
%27 = fsub double %26, %24
%28 = fptrunc double %27 to float
%29 = fcmp olt float %28, 0.000000e+00
%30 = fneg float %28
%31 = select i1 %29, float %30, float %28
%32 = fcmp olt float %31, 0x3E45798EE0000000
%33 = zext i1 %32 to i32
%34 = lshr i64 %25, 63
%35 = trunc i64 %34 to i32
%36 = xor i32 %35, -1
%37 = and i32 %33, %36
%38 = icmp eq i32 %37, 0
br i1 %38, label %60, label %39
39: ; preds = %14
%40 = sub i64 %25, %16
%41 = mul i64 %40, %25
%42 = add i64 %41, %17
%43 = mul nsw i64 %42, 3
%44 = icmp eq i64 %5, %43
br i1 %44, label %45, label %60
45: ; preds = %39
%46 = icmp eq i64 %25, 0
br i1 %46, label %56, label %47
47: ; preds = %45
%48 = trunc i64 %16 to i32
%49 = xor i32 %48, -1
%50 = ashr i64 %16, 1
%51 = icmp eq i64 %25, %50
%52 = zext i1 %51 to i32
%53 = and i32 %52, %49
%54 = icmp eq i32 %53, 0
%55 = select i1 %54, i64 12, i64 6
br label %56
56: ; preds = %47, %45
%57 = phi i64 [ 6, %45 ], [ %55, %47 ]
%58 = add nsw i64 %15, %57
%59 = tail call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i64 %16)
br label %60
60: ; preds = %56, %39, %14
%61 = phi i64 [ %15, %39 ], [ %15, %14 ], [ %58, %56 ]
%62 = add nsw i64 %16, 1
%63 = icmp slt i64 %16, %13
br i1 %63, label %14, label %64
64: ; preds = %60
%65 = tail call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i64 %61)
%66 = add nuw nsw i64 %3, 1
%67 = icmp eq i64 %66, 143
br i1 %67, label %68, label %2
68: ; preds = %64
ret i32 0
}