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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ scanf(char *, int *);
int main() {
  int N, d = 0;
  float a = 1, b = 1, c = 1, x, y, z;
  scanf("%d", &N);
  for (a = 1; a <= N; a++) {
    for (b = 1; b <= a; b++) {
      for (c = 1; c <= b; c++) {
        x = ((a * a) + (b * b) - (c * c)) / (2 * a * b);
        y = ((a * a) + (c * c) - (b * b)) / (2 * a * c);
        z = ((b * b) + (c * c) - (a * a)) / (2 * b * c);
        if (x < 1 && x > -1 && y < 1 && y > -1 && z < 1 && z > -1 && a >= b &&
            b >= c && a >= c)
          if ((x < 0 && y > 0 && z > 0) || (y < 0 && x > 0 && z > 0) ||
              (z < 0 && x > 0 && y > 0) || (x > 0 && y > 0 && z > 0) ||
              (x = 0 && y != 0 && z != 0) || (y = 0 && x != 0 && z != 0) ||
              (z = 0 && x != 0 && y != 0))
            d = d + 1;
      }
    }
  }
  printf("Number of possible triangles is %d", d);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0xc(%rbp)
movss  0xec2(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  0xeb5(%rip),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  0xea8(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
lea    0xec8(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1040 <scanf@plt>
movss  0xe8b(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0x10(%rbp),%xmm1
cvtsi2ssl -0x8(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     14d1 <main+0x3b1>
movss  0xe6b(%rip),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  -0x14(%rbp),%xmm1
movss  -0x10(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     14b5 <main+0x395>
movss  0xe4b(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x18(%rbp),%xmm1
movss  -0x14(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1499 <main+0x379>
movss  -0x10(%rbp),%xmm1
movss  -0x10(%rbp),%xmm2
movss  -0x14(%rbp),%xmm0
mulss  -0x14(%rbp),%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  0xdf4(%rip),%xmm1
mulss  -0x10(%rbp),%xmm1
mulss  -0x14(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x10(%rbp),%xmm1
movss  -0x10(%rbp),%xmm2
movss  -0x18(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x14(%rbp),%xmm0
movss  -0x14(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  0xd9e(%rip),%xmm1
mulss  -0x10(%rbp),%xmm1
mulss  -0x18(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x14(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
movss  -0x18(%rbp),%xmm0
mulss  -0x18(%rbp),%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x10(%rbp),%xmm0
movss  -0x10(%rbp),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  0xd48(%rip),%xmm1
mulss  -0x14(%rbp),%xmm1
mulss  -0x18(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0xd29(%rip),%xmm0
ucomiss -0x1c(%rbp),%xmm0
jbe    147d <main+0x35d>
movss  -0x1c(%rbp),%xmm0
movss  0xd1a(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    147d <main+0x35d>
movss  0xd01(%rip),%xmm0
ucomiss -0x20(%rbp),%xmm0
jbe    147d <main+0x35d>
movss  -0x20(%rbp),%xmm0
movss  0xcf2(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    147d <main+0x35d>
movss  0xcd9(%rip),%xmm0
ucomiss -0x24(%rbp),%xmm0
jbe    147d <main+0x35d>
movss  -0x24(%rbp),%xmm0
movss  0xcca(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    147d <main+0x35d>
movss  -0x10(%rbp),%xmm0
ucomiss -0x14(%rbp),%xmm0
jb     147d <main+0x35d>
movss  -0x14(%rbp),%xmm0
ucomiss -0x18(%rbp),%xmm0
jb     147d <main+0x35d>
movss  -0x10(%rbp),%xmm0
ucomiss -0x18(%rbp),%xmm0
jb     147d <main+0x35d>
xorps  %xmm0,%xmm0
ucomiss -0x1c(%rbp),%xmm0
jbe    13a3 <main+0x283>
movss  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    13a3 <main+0x283>
movss  -0x24(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
ja     146f <main+0x34f>
xorps  %xmm0,%xmm0
ucomiss -0x20(%rbp),%xmm0
jbe    13d2 <main+0x2b2>
movss  -0x1c(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    13d2 <main+0x2b2>
movss  -0x24(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
ja     146f <main+0x34f>
xorps  %xmm0,%xmm0
ucomiss -0x24(%rbp),%xmm0
jbe    1401 <main+0x2e1>
movss  -0x1c(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1401 <main+0x2e1>
movss  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
ja     146f <main+0x34f>
movss  -0x1c(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1434 <main+0x314>
movss  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1434 <main+0x314>
movss  -0x24(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
ja     146f <main+0x34f>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
xor    %eax,%eax
test   $0x1,%al
jne    146f <main+0x34f>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
xor    %eax,%eax
test   $0x1,%al
jne    146f <main+0x34f>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
xor    %eax,%eax
test   $0x1,%al
jne    146f <main+0x34f>
jmp    1478 <main+0x358>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    147d <main+0x35d>
jmp    1482 <main+0x362>
movss  0xb76(%rip),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
jmp    11ba <main+0x9a>
jmp    149e <main+0x37e>
movss  0xb5a(%rip),%xmm0
addss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
jmp    119a <main+0x7a>
jmp    14ba <main+0x39a>
movss  0xb3e(%rip),%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
jmp    117a <main+0x5a>
mov    -0xc(%rbp),%esi
lea    0xb31(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x58,%rsp
lea    0xf25(%rip),%rdi
lea    0xc(%rsp),%rsi
call   1040 <scanf@plt>
mov    0xc(%rsp),%eax
test   %eax,%eax
jle    135c <main+0x23c>
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x8(%rsp)
xor    %esi,%esi
movss  0xeaa(%rip),%xmm13
movss  0xea6(%rip),%xmm4
movaps %xmm13,%xmm6
jmp    1184 <main+0x64>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
addss  %xmm13,%xmm6
movss  0x8(%rsp),%xmm0
ucomiss %xmm6,%xmm0
jb     135e <main+0x23e>
ucomiss %xmm13,%xmm6
jb     1170 <main+0x50>
movaps %xmm6,%xmm0
addss  %xmm6,%xmm0
movaps %xmm0,0x10(%rsp)
movaps %xmm6,%xmm0
xorps  0xe70(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps %xmm13,%xmm1
jmp    11ba <main+0x9a>
nopl   0x0(%rax,%rax,1)
addss  %xmm13,%xmm1
ucomiss %xmm1,%xmm6
jb     1170 <main+0x50>
ucomiss %xmm13,%xmm1
jb     11b0 <main+0x90>
movaps %xmm1,%xmm0
mulss  %xmm1,%xmm0
movaps %xmm6,%xmm15
mulss  %xmm6,%xmm15
movaps %xmm15,%xmm14
movaps %xmm0,0x40(%rsp)
addss  %xmm0,%xmm14
movaps 0x10(%rsp),%xmm7
mulss  %xmm1,%xmm7
movaps %xmm1,%xmm5
xorps  0xe1f(%rip),%xmm5
movaps %xmm1,%xmm0
addss  %xmm1,%xmm0
movaps %xmm0,0x30(%rsp)
shufps $0x0,%xmm14,%xmm14
shufps $0x0,%xmm7,%xmm7
movaps %xmm13,%xmm9
jmp    121e <main+0xfe>
nopl   0x0(%rax)
add    $0x1,%esi
addss  %xmm13,%xmm9
ucomiss %xmm9,%xmm1
jb     11b0 <main+0x90>
movaps %xmm9,%xmm2
xorps  0xde7(%rip),%xmm2
movaps %xmm9,%xmm8
mulss  %xmm9,%xmm8
movaps %xmm15,%xmm0
addss  %xmm8,%xmm0
movaps %xmm14,%xmm3
movss  %xmm0,%xmm3
movlhps %xmm5,%xmm2
shufps $0xe2,%xmm5,%xmm2
movaps %xmm9,%xmm11
movlhps %xmm1,%xmm11
shufps $0xe2,%xmm1,%xmm11
mulps  %xmm2,%xmm11
addps  %xmm3,%xmm11
movaps 0x10(%rsp),%xmm0
mulss  %xmm9,%xmm0
movaps %xmm7,%xmm2
movss  %xmm0,%xmm2
divps  %xmm2,%xmm11
movaps %xmm11,%xmm0
cmpnltps 0xda0(%rip),%xmm0
05
unpcklps %xmm0,%xmm0
movmskpd %xmm0,%eax
test   $0x2,%al
jne    1213 <main+0xf3>
movaps %xmm11,%xmm10
shufps $0x55,%xmm11,%xmm10
ucomiss %xmm4,%xmm10
jbe    1213 <main+0xf3>
test   $0x1,%al
jne    1213 <main+0xf3>
ucomiss %xmm4,%xmm11
jbe    1213 <main+0xf3>
addss  0x40(%rsp),%xmm8
movaps 0x20(%rsp),%xmm12
mulss  %xmm6,%xmm12
addss  %xmm8,%xmm12
movaps 0x30(%rsp),%xmm0
mulss  %xmm9,%xmm0
divss  %xmm0,%xmm12
ucomiss %xmm12,%xmm13
jbe    1213 <main+0xf3>
ucomiss %xmm4,%xmm12
jbe    1213 <main+0xf3>
ucomiss %xmm9,%xmm6
jb     1213 <main+0xf3>
xorps  %xmm0,%xmm0
ucomiss %xmm10,%xmm0
jbe    130d <main+0x1ed>
ucomiss %xmm0,%xmm11
jbe    130d <main+0x1ed>
ucomiss %xmm0,%xmm12
ja     1210 <main+0xf0>
ucomiss %xmm11,%xmm0
jbe    1323 <main+0x203>
ucomiss %xmm0,%xmm10
jbe    1323 <main+0x203>
ucomiss %xmm0,%xmm12
ja     1210 <main+0xf0>
ucomiss %xmm12,%xmm0
jbe    1339 <main+0x219>
ucomiss %xmm0,%xmm10
jbe    1339 <main+0x219>
ucomiss %xmm0,%xmm11
ja     1210 <main+0xf0>
ucomiss %xmm0,%xmm10
jbe    1213 <main+0xf3>
ucomiss %xmm0,%xmm11
jbe    1213 <main+0xf3>
ucomiss %xmm0,%xmm12
ja     1210 <main+0xf0>
jmp    1213 <main+0xf3>
xor    %esi,%esi
lea    0xccb(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x58,%rsp
ret

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

LLVM IR (-O2):
@.str = [3 x i8] c"%d\00"
@.str.1 = [35 x i8] c"Number of possible triangles is %d\00"
define i32 @main() {
%1 = alloca i32
%2 = bitcast i32* %1 to i8*
%3 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %1)
%4 = load i32, i32* %1
%5 = sitofp i32 %4 to float
%6 = icmp slt i32 %4, 1
br i1 %6, label %93, label %7
7: ; preds = %0, %89
%8 = phi float [ %91, %89 ], [ 1.000000e+00, %0 ]
%9 = phi i32 [ %90, %89 ], [ 0, %0 ]
%10 = fcmp ult float %8, 1.000000e+00
br i1 %10, label %89, label %11
11: ; preds = %7
%12 = fmul float %8, 2.000000e+00
%13 = fneg float %8
br label %14
14: ; preds = %11, %85
%15 = phi float [ 1.000000e+00, %11 ], [ %87, %85 ]
%16 = phi i32 [ %9, %11 ], [ %86, %85 ]
%17 = fcmp ult float %15, 1.000000e+00
br i1 %17, label %85, label %18
18: ; preds = %14
%19 = fmul float %15, %15
%20 = call float @llvm.fmuladd.f32(float %8, float %8, float %19)
%21 = fmul float %12, %15
%22 = fneg float %15
%23 = fmul float %15, 2.000000e+00
%24 = insertelement <2 x float> poison, float %22, i64 0
%25 = insertelement <2 x float> poison, float %15, i64 0
%26 = insertelement <2 x float> poison, float %20, i64 1
%27 = insertelement <2 x float> poison, float %21, i64 1
br label %28
28: ; preds = %18, %81
%29 = phi float [ 1.000000e+00, %18 ], [ %83, %81 ]
%30 = phi i32 [ %16, %18 ], [ %82, %81 ]
%31 = fneg float %29
%32 = fmul float %29, %29
%33 = call float @llvm.fmuladd.f32(float %8, float %8, float %32)
%34 = insertelement <2 x float> %24, float %31, i64 1
%35 = insertelement <2 x float> %25, float %29, i64 1
%36 = insertelement <2 x float> %26, float %33, i64 0
%37 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %34, <2 x float> %35, <2 x float> %36)
%38 = fmul float %12, %29
%39 = insertelement <2 x float> %27, float %38, i64 0
%40 = fdiv <2 x float> %37, %39
%41 = call float @llvm.fmuladd.f32(float %15, float %15, float %32)
%42 = call float @llvm.fmuladd.f32(float %13, float %8, float %41)
%43 = fmul float %23, %29
%44 = fdiv float %42, %43
%45 = extractelement <2 x float> %40, i64 1
%46 = fcmp ule float %45, -1.000000e+00
%47 = fcmp uge <2 x float> %40, <float 1.000000e+00, float 1.000000e+00>
%48 = extractelement <2 x i1> %47, i64 1
%49 = or i1 %48, %46
%50 = extractelement <2 x i1> %47, i64 0
%51 = select i1 %49, i1 true, i1 %50
%52 = extractelement <2 x float> %40, i64 0
%53 = fcmp ule float %52, -1.000000e+00
%54 = select i1 %51, i1 true, i1 %53
%55 = fcmp uge float %44, 1.000000e+00
%56 = select i1 %54, i1 true, i1 %55
%57 = fcmp ule float %44, -1.000000e+00
%58 = select i1 %56, i1 true, i1 %57
%59 = fcmp ult float %8, %29
%60 = select i1 %58, i1 true, i1 %59
br i1 %60, label %81, label %61
61: ; preds = %28
%62 = fcmp olt float %45, 0.000000e+00
%63 = fcmp ogt float %52, 0.000000e+00
%64 = select i1 %62, i1 %63, i1 false
%65 = fcmp ogt float %44, 0.000000e+00
%66 = select i1 %64, i1 %65, i1 false
br i1 %66, label %79, label %67
67: ; preds = %61
%68 = fcmp olt float %52, 0.000000e+00
%69 = fcmp ogt float %45, 0.000000e+00
%70 = select i1 %68, i1 %69, i1 false
%71 = select i1 %70, i1 %65, i1 false
br i1 %71, label %79, label %72
72: ; preds = %67
%73 = fcmp olt float %44, 0.000000e+00
%74 = select i1 %73, i1 %69, i1 false
%75 = select i1 %74, i1 %63, i1 false
br i1 %75, label %79, label %76
76: ; preds = %72
%77 = select i1 %69, i1 %63, i1 false
%78 = select i1 %77, i1 %65, i1 false
br i1 %78, label %79, label %81
79: ; preds = %76, %72, %67, %61
%80 = add nsw i32 %30, 1
br label %81
81: ; preds = %76, %28, %79
%82 = phi i32 [ %80, %79 ], [ %30, %28 ], [ %30, %76 ]
%83 = fadd float %29, 1.000000e+00
%84 = fcmp ugt float %83, %15
br i1 %84, label %85, label %28
85: ; preds = %81, %14
%86 = phi i32 [ %16, %14 ], [ %82, %81 ]
%87 = fadd float %15, 1.000000e+00
%88 = fcmp ugt float %87, %8
br i1 %88, label %89, label %14
89: ; preds = %85, %7
%90 = phi i32 [ %9, %7 ], [ %86, %85 ]
%91 = fadd float %8, 1.000000e+00
%92 = fcmp ugt float %91, %5
br i1 %92, label %93, label %7
93: ; preds = %89, %0
%94 = phi i32 [ 0, %0 ], [ %90, %89 ]
%95 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.1, i64 0, i64 0), i32 %94)
ret i32 0
}