#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 /*<<< orphan*/ scanf(char *, double *, double *, double *);
int main() {
  double a, b, c, x;
  scanf("%lf%lf%lf", &a, &b, &c);
  if (a < b) {
    x = a;
    a = b;
    b = x;
  }
  if (b < c) {
    x = b;
    b = c;
    c = x;
  }
  if (a < b) {
    x = a;
    a = b;
    b = x;
  }
  if (a >= b + c) {
    printf("NAO FORMA TRIANGULO\n");
    if (a == b && b == c) {
      printf("TRIANGULO EQUILATERO\n");
    } else if ((a == b && b != c) || (a == c && a != b) || (b == c && c != a)) {
      printf("TRIANGULO ISOSCELES\n");
    }
  } else if ((a * a) == ((b * b) + (c * c))) {
    printf("TRIANGULO RETANGULO\n");
    if (a == b && b == c) {
      printf("TRIANGULO EQUILATERO\n");
    } else if ((a == b && b != c) || (a == c && a != b) || (b == c && c != a)) {
      printf("TRIANGULO ISOSCELES\n");
    }
  } else if ((a * a) > ((b * b) + (c * c))) {
    printf("TRIANGULO OBTUSANGULO\n");
    if (a == b && b == c) {
      printf("TRIANGULO EQUILATERO\n");
    } else if ((a == b && b != c) || (a == c && a != b) || (b == c && c != a)) {
      printf("TRIANGULO ISOSCELES\n");
    }
  } else if ((a * a) < ((b * b) + (c * c))) {
    printf("TRIANGULO ACUTANGULO\n");
    if (a == b && b == c) {
      printf("TRIANGULO EQUILATERO\n");
    } else if ((a == b && b != c) || (a == c && a != b) || (b == c && c != a)) {
      printf("TRIANGULO ISOSCELES\n");
    }
  } else if (a == b && b == c) {
    printf("TRIANGULO EQUILATERO\n");
    if (a == b && b == c) {
      printf("TRIANGULO EQUILATERO\n");
    } else if ((a == b && b != c) || (a == c && a != b) || (b == c && c != a)) {
      printf("TRIANGULO ISOSCELES\n");
    }
  } else if ((a == b && b != c) || (a == c && a != b) || (b == c && c != a)) {
    printf("TRIANGULO ISOSCELES\n");
    if (a == b && b == c) {
      printf("TRIANGULO EQUILATERO\n");
    } else if ((a == b && b != c) || (a == c && a != b) || (b == c && c != a)) {
      printf("TRIANGULO ISOSCELES\n");
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeca(%rip),%rdi
lea    -0x10(%rbp),%rsi
lea    -0x18(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1040 <scanf@plt>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1179 <main+0x59>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11ab <main+0x8b>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11dd <main+0xbd>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
addsd  -0x20(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jb     12de <main+0x1be>
lea    0xe0d(%rip),%rdi
call   1030 <printf@plt>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    123f <main+0x11f>
jp     123f <main+0x11f>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    123f <main+0x11f>
jp     123f <main+0x11f>
lea    0xdea(%rip),%rdi
call   1030 <printf@plt>
jmp    12d9 <main+0x1b9>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    126b <main+0x14b>
jp     126b <main+0x14b>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    12c8 <main+0x1a8>
jp     12c8 <main+0x1a8>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1297 <main+0x177>
jp     1297 <main+0x177>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    12c8 <main+0x1a8>
jp     12c8 <main+0x1a8>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    12d4 <main+0x1b4>
jp     12d4 <main+0x1b4>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    12c8 <main+0x1a8>
jp     12c8 <main+0x1a8>
jmp    12d4 <main+0x1b4>
lea    0xd66(%rip),%rdi
call   1030 <printf@plt>
jmp    12d9 <main+0x1b9>
jmp    18ca <main+0x7aa>
movsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm2
mulsd  -0x20(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jne    13fc <main+0x2dc>
jp     13fc <main+0x2dc>
lea    0xd2f(%rip),%rdi
call   1030 <printf@plt>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    135d <main+0x23d>
jp     135d <main+0x23d>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    135d <main+0x23d>
jp     135d <main+0x23d>
lea    0xccc(%rip),%rdi
call   1030 <printf@plt>
jmp    13f7 <main+0x2d7>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    1389 <main+0x269>
jp     1389 <main+0x269>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    13e6 <main+0x2c6>
jp     13e6 <main+0x2c6>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    13b5 <main+0x295>
jp     13b5 <main+0x295>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    13e6 <main+0x2c6>
jp     13e6 <main+0x2c6>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    13f2 <main+0x2d2>
jp     13f2 <main+0x2d2>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    13e6 <main+0x2c6>
jp     13e6 <main+0x2c6>
jmp    13f2 <main+0x2d2>
lea    0xc48(%rip),%rdi
call   1030 <printf@plt>
jmp    13f7 <main+0x2d7>
jmp    18c5 <main+0x7a5>
movsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm2
mulsd  -0x20(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1514 <main+0x3f4>
lea    0xc2c(%rip),%rdi
call   1030 <printf@plt>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    1475 <main+0x355>
jp     1475 <main+0x355>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1475 <main+0x355>
jp     1475 <main+0x355>
lea    0xbb4(%rip),%rdi
call   1030 <printf@plt>
jmp    150f <main+0x3ef>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    14a1 <main+0x381>
jp     14a1 <main+0x381>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    14fe <main+0x3de>
jp     14fe <main+0x3de>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    14cd <main+0x3ad>
jp     14cd <main+0x3ad>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    14fe <main+0x3de>
jp     14fe <main+0x3de>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    150a <main+0x3ea>
jp     150a <main+0x3ea>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    14fe <main+0x3de>
jp     14fe <main+0x3de>
jmp    150a <main+0x3ea>
lea    0xb30(%rip),%rdi
call   1030 <printf@plt>
jmp    150f <main+0x3ef>
jmp    18c0 <main+0x7a0>
movsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm2
mulsd  -0x20(%rbp),%xmm2
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    162c <main+0x50c>
lea    0xb2b(%rip),%rdi
call   1030 <printf@plt>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    158d <main+0x46d>
jp     158d <main+0x46d>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    158d <main+0x46d>
jp     158d <main+0x46d>
lea    0xa9c(%rip),%rdi
call   1030 <printf@plt>
jmp    1627 <main+0x507>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    15b9 <main+0x499>
jp     15b9 <main+0x499>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1616 <main+0x4f6>
jp     1616 <main+0x4f6>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    15e5 <main+0x4c5>
jp     15e5 <main+0x4c5>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    1616 <main+0x4f6>
jp     1616 <main+0x4f6>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1622 <main+0x502>
jp     1622 <main+0x502>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    1616 <main+0x4f6>
jp     1616 <main+0x4f6>
jmp    1622 <main+0x502>
lea    0xa18(%rip),%rdi
call   1030 <printf@plt>
jmp    1627 <main+0x507>
jmp    18bb <main+0x79b>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    1740 <main+0x620>
jp     1740 <main+0x620>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1740 <main+0x620>
jp     1740 <main+0x620>
lea    0x9c0(%rip),%rdi
call   1030 <printf@plt>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    16a1 <main+0x581>
jp     16a1 <main+0x581>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    16a1 <main+0x581>
jp     16a1 <main+0x581>
lea    0x988(%rip),%rdi
call   1030 <printf@plt>
jmp    173b <main+0x61b>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    16cd <main+0x5ad>
jp     16cd <main+0x5ad>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    172a <main+0x60a>
jp     172a <main+0x60a>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    16f9 <main+0x5d9>
jp     16f9 <main+0x5d9>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    172a <main+0x60a>
jp     172a <main+0x60a>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1736 <main+0x616>
jp     1736 <main+0x616>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    172a <main+0x60a>
jp     172a <main+0x60a>
jmp    1736 <main+0x616>
lea    0x904(%rip),%rdi
call   1030 <printf@plt>
jmp    173b <main+0x61b>
jmp    18b6 <main+0x796>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    176c <main+0x64c>
jp     176c <main+0x64c>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    17c9 <main+0x6a9>
jp     17c9 <main+0x6a9>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1798 <main+0x678>
jp     1798 <main+0x678>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    17c9 <main+0x6a9>
jp     17c9 <main+0x6a9>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    18b1 <main+0x791>
jp     18b1 <main+0x791>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    17c9 <main+0x6a9>
jp     17c9 <main+0x6a9>
jmp    18b1 <main+0x791>
lea    0x865(%rip),%rdi
call   1030 <printf@plt>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    1812 <main+0x6f2>
jp     1812 <main+0x6f2>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1812 <main+0x6f2>
jp     1812 <main+0x6f2>
lea    0x817(%rip),%rdi
call   1030 <printf@plt>
jmp    18ac <main+0x78c>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    183e <main+0x71e>
jp     183e <main+0x71e>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    189b <main+0x77b>
jp     189b <main+0x77b>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    186a <main+0x74a>
jp     186a <main+0x74a>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    189b <main+0x77b>
jp     189b <main+0x77b>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    18a7 <main+0x787>
jp     18a7 <main+0x787>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jne    189b <main+0x77b>
jp     189b <main+0x77b>
jmp    18a7 <main+0x787>
lea    0x793(%rip),%rdi
call   1030 <printf@plt>
jmp    18ac <main+0x78c>
jmp    18b1 <main+0x791>
jmp    18b6 <main+0x796>
jmp    18bb <main+0x79b>
jmp    18c0 <main+0x7a0>
jmp    18c5 <main+0x7a5>
jmp    18ca <main+0x7aa>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x20,%rsp
lea    0xed4(%rip),%rdi
lea    0x10(%rsp),%rsi
lea    0x8(%rsp),%rdx
lea    0x18(%rsp),%rcx
call   1040 <scanf@plt>
movsd  0x10(%rsp),%xmm2
movsd  0x8(%rsp),%xmm0
ucomisd %xmm2,%xmm0
jbe    1164 <main+0x44>
movsd  %xmm0,0x10(%rsp)
movsd  %xmm2,0x8(%rsp)
movapd %xmm0,%xmm3
jmp    116c <main+0x4c>
movapd %xmm2,%xmm3
movapd %xmm0,%xmm2
movsd  0x18(%rsp),%xmm0
ucomisd %xmm2,%xmm0
jbe    1198 <main+0x78>
movsd  %xmm0,0x8(%rsp)
movsd  %xmm2,0x18(%rsp)
movapd %xmm2,%xmm1
ucomisd %xmm3,%xmm0
ja     11a6 <main+0x86>
movapd %xmm0,%xmm2
movapd %xmm3,%xmm0
jmp    11b6 <main+0x96>
movapd %xmm0,%xmm1
movapd %xmm2,%xmm0
ucomisd %xmm3,%xmm0
jbe    118e <main+0x6e>
movsd  %xmm0,0x10(%rsp)
movsd  %xmm3,0x8(%rsp)
movapd %xmm3,%xmm2
movapd %xmm2,%xmm3
addsd  %xmm1,%xmm3
ucomisd %xmm3,%xmm0
jae    11f1 <main+0xd1>
movapd %xmm0,%xmm3
mulsd  %xmm0,%xmm3
movapd %xmm1,%xmm5
mulsd  %xmm1,%xmm5
movapd %xmm2,%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm5,%xmm4
ucomisd %xmm4,%xmm3
jne    122b <main+0x10b>
jp     122b <main+0x10b>
lea    0xe46(%rip),%rdi
jmp    11f8 <main+0xd8>
lea    0xe51(%rip),%rdi
call   1030 <puts@plt>
movsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm2
ucomisd %xmm2,%xmm0
movsd  0x18(%rsp),%xmm1
jne    128e <main+0x16e>
jp     128e <main+0x16e>
ucomisd %xmm1,%xmm2
jne    128e <main+0x16e>
jp     128e <main+0x16e>
lea    0xe4b(%rip),%rbx
jmp    12c5 <main+0x1a5>
jbe    1236 <main+0x116>
lea    0xdeb(%rip),%rdi
jmp    11f8 <main+0xd8>
ucomisd %xmm3,%xmm4
jbe    1245 <main+0x125>
lea    0xdc7(%rip),%rdi
jmp    11f8 <main+0xd8>
ucomisd %xmm2,%xmm0
jne    12d5 <main+0x1b5>
jp     12d5 <main+0x1b5>
ucomisd %xmm1,%xmm2
jne    12d5 <main+0x1b5>
jp     12d5 <main+0x1b5>
lea    0xe0d(%rip),%rbx
mov    %rbx,%rdi
call   1030 <puts@plt>
movsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm2
ucomisd %xmm2,%xmm0
movsd  0x18(%rsp),%xmm1
jne    128e <main+0x16e>
jp     128e <main+0x16e>
ucomisd %xmm1,%xmm2
jne    128e <main+0x16e>
jnp    12c5 <main+0x1a5>
ucomisd %xmm2,%xmm0
lea    0xdc4(%rip),%rbx
jne    12a5 <main+0x185>
jp     12a5 <main+0x185>
ucomisd %xmm1,%xmm2
jne    12c5 <main+0x1a5>
jp     12c5 <main+0x1a5>
ucomisd %xmm1,%xmm0
jne    12b5 <main+0x195>
jp     12b5 <main+0x195>
ucomisd %xmm2,%xmm0
jne    12c5 <main+0x1a5>
jp     12c5 <main+0x1a5>
ucomisd %xmm1,%xmm2
jne    12cd <main+0x1ad>
jp     12cd <main+0x1ad>
ucomisd %xmm0,%xmm1
jne    12c5 <main+0x1a5>
jnp    12cd <main+0x1ad>
mov    %rbx,%rdi
call   1030 <puts@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbx
ret
ucomisd %xmm2,%xmm0
jne    12e5 <main+0x1c5>
jp     12e5 <main+0x1c5>
ucomisd %xmm1,%xmm2
jne    1305 <main+0x1e5>
jp     1305 <main+0x1e5>
ucomisd %xmm1,%xmm0
jne    12f5 <main+0x1d5>
jp     12f5 <main+0x1d5>
ucomisd %xmm2,%xmm0
jne    1305 <main+0x1e5>
jp     1305 <main+0x1e5>
ucomisd %xmm1,%xmm2
jne    12cd <main+0x1ad>
jp     12cd <main+0x1ad>
ucomisd %xmm0,%xmm1
jne    1305 <main+0x1e5>
jnp    12cd <main+0x1ad>
lea    0xd51(%rip),%rbx
mov    %rbx,%rdi
call   1030 <puts@plt>
movsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm2
ucomisd %xmm2,%xmm0
movsd  0x18(%rsp),%xmm1
jne    133a <main+0x21a>
jp     133a <main+0x21a>
ucomisd %xmm1,%xmm2
jne    133a <main+0x21a>
jnp    121f <main+0xff>
ucomisd %xmm2,%xmm0
jne    12a5 <main+0x185>
jnp    129d <main+0x17d>
jmp    12a5 <main+0x185>

LLVM IR (-O0):
@.str = [10 x i8] c"%lf%lf%lf\00"
@.str.1 = [21 x i8] c"NAO FORMA TRIANGULO\0A\00"
@.str.2 = [22 x i8] c"TRIANGULO EQUILATERO\0A\00"
@.str.3 = [21 x i8] c"TRIANGULO ISOSCELES\0A\00"
@.str.4 = [21 x i8] c"TRIANGULO RETANGULO\0A\00"
@.str.5 = [23 x i8] c"TRIANGULO OBTUSANGULO\0A\00"
@.str.6 = [22 x i8] c"TRIANGULO ACUTANGULO\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
store i32 0, i32* %1
%6 = call i32 @scanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), double* %2, double* %3, double* %4)
%7 = load double, double* %2
%8 = load double, double* %3
%9 = fcmp olt double %7, %8
br i1 %9, label %10, label %14
10: ; preds = %0
%11 = load double, double* %2
store double %11, double* %5
%12 = load double, double* %3
store double %12, double* %2
%13 = load double, double* %5
store double %13, double* %3
br label %14
14: ; preds = %10, %0
%15 = load double, double* %3
%16 = load double, double* %4
%17 = fcmp olt double %15, %16
br i1 %17, label %18, label %22
18: ; preds = %14
%19 = load double, double* %3
store double %19, double* %5
%20 = load double, double* %4
store double %20, double* %3
%21 = load double, double* %5
store double %21, double* %4
br label %22
22: ; preds = %18, %14
%23 = load double, double* %2
%24 = load double, double* %3
%25 = fcmp olt double %23, %24
br i1 %25, label %26, label %30
26: ; preds = %22
%27 = load double, double* %2
store double %27, double* %5
%28 = load double, double* %3
store double %28, double* %2
%29 = load double, double* %5
store double %29, double* %3
br label %30
30: ; preds = %26, %22
%31 = load double, double* %2
%32 = load double, double* %3
%33 = load double, double* %4
%34 = fadd double %32, %33
%35 = fcmp oge double %31, %34
br i1 %35, label %36, label %75
36: ; preds = %30
%37 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0))
%38 = load double, double* %2
%39 = load double, double* %3
%40 = fcmp oeq double %38, %39
br i1 %40, label %41, label %47
41: ; preds = %36
%42 = load double, double* %3
%43 = load double, double* %4
%44 = fcmp oeq double %42, %43
br i1 %44, label %45, label %47
45: ; preds = %41
%46 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %74
47: ; preds = %41, %36
%48 = load double, double* %2
%49 = load double, double* %3
%50 = fcmp oeq double %48, %49
br i1 %50, label %51, label %55
51: ; preds = %47
%52 = load double, double* %3
%53 = load double, double* %4
%54 = fcmp une double %52, %53
br i1 %54, label %71, label %55
55: ; preds = %51, %47
%56 = load double, double* %2
%57 = load double, double* %4
%58 = fcmp oeq double %56, %57
br i1 %58, label %59, label %63
59: ; preds = %55
%60 = load double, double* %2
%61 = load double, double* %3
%62 = fcmp une double %60, %61
br i1 %62, label %71, label %63
63: ; preds = %59, %55
%64 = load double, double* %3
%65 = load double, double* %4
%66 = fcmp oeq double %64, %65
br i1 %66, label %67, label %73
67: ; preds = %63
%68 = load double, double* %4
%69 = load double, double* %2
%70 = fcmp une double %68, %69
br i1 %70, label %71, label %73
71: ; preds = %67, %59, %51
%72 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
br label %73
73: ; preds = %71, %67, %63
br label %74
74: ; preds = %73, %45
br label %340
75: ; preds = %30
%76 = load double, double* %2
%77 = load double, double* %2
%78 = fmul double %76, %77
%79 = load double, double* %3
%80 = load double, double* %3
%81 = load double, double* %4
%82 = load double, double* %4
%83 = fmul double %81, %82
%84 = call double @llvm.fmuladd.f64(double %79, double %80, double %83)
%85 = fcmp oeq double %78, %84
br i1 %85, label %86, label %125
86: ; preds = %75
%87 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
%88 = load double, double* %2
%89 = load double, double* %3
%90 = fcmp oeq double %88, %89
br i1 %90, label %91, label %97
91: ; preds = %86
%92 = load double, double* %3
%93 = load double, double* %4
%94 = fcmp oeq double %92, %93
br i1 %94, label %95, label %97
95: ; preds = %91
%96 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %124
97: ; preds = %91, %86
%98 = load double, double* %2
%99 = load double, double* %3
%100 = fcmp oeq double %98, %99
br i1 %100, label %101, label %105
101: ; preds = %97
%102 = load double, double* %3
%103 = load double, double* %4
%104 = fcmp une double %102, %103
br i1 %104, label %121, label %105
105: ; preds = %101, %97
%106 = load double, double* %2
%107 = load double, double* %4
%108 = fcmp oeq double %106, %107
br i1 %108, label %109, label %113
109: ; preds = %105
%110 = load double, double* %2
%111 = load double, double* %3
%112 = fcmp une double %110, %111
br i1 %112, label %121, label %113
113: ; preds = %109, %105
%114 = load double, double* %3
%115 = load double, double* %4
%116 = fcmp oeq double %114, %115
br i1 %116, label %117, label %123
117: ; preds = %113
%118 = load double, double* %4
%119 = load double, double* %2
%120 = fcmp une double %118, %119
br i1 %120, label %121, label %123
121: ; preds = %117, %109, %101
%122 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
br label %123
123: ; preds = %121, %117, %113
br label %124
124: ; preds = %123, %95
br label %339
125: ; preds = %75
%126 = load double, double* %2
%127 = load double, double* %2
%128 = fmul double %126, %127
%129 = load double, double* %3
%130 = load double, double* %3
%131 = load double, double* %4
%132 = load double, double* %4
%133 = fmul double %131, %132
%134 = call double @llvm.fmuladd.f64(double %129, double %130, double %133)
%135 = fcmp ogt double %128, %134
br i1 %135, label %136, label %175
136: ; preds = %125
%137 = call i32 @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0))
%138 = load double, double* %2
%139 = load double, double* %3
%140 = fcmp oeq double %138, %139
br i1 %140, label %141, label %147
141: ; preds = %136
%142 = load double, double* %3
%143 = load double, double* %4
%144 = fcmp oeq double %142, %143
br i1 %144, label %145, label %147
145: ; preds = %141
%146 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %174
147: ; preds = %141, %136
%148 = load double, double* %2
%149 = load double, double* %3
%150 = fcmp oeq double %148, %149
br i1 %150, label %151, label %155
151: ; preds = %147
%152 = load double, double* %3
%153 = load double, double* %4
%154 = fcmp une double %152, %153
br i1 %154, label %171, label %155
155: ; preds = %151, %147
%156 = load double, double* %2
%157 = load double, double* %4
%158 = fcmp oeq double %156, %157
br i1 %158, label %159, label %163
159: ; preds = %155
%160 = load double, double* %2
%161 = load double, double* %3
%162 = fcmp une double %160, %161
br i1 %162, label %171, label %163
163: ; preds = %159, %155
%164 = load double, double* %3
%165 = load double, double* %4
%166 = fcmp oeq double %164, %165
br i1 %166, label %167, label %173
167: ; preds = %163
%168 = load double, double* %4
%169 = load double, double* %2
%170 = fcmp une double %168, %169
br i1 %170, label %171, label %173
171: ; preds = %167, %159, %151
%172 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
br label %173
173: ; preds = %171, %167, %163
br label %174
174: ; preds = %173, %145
br label %338
175: ; preds = %125
%176 = load double, double* %2
%177 = load double, double* %2
%178 = fmul double %176, %177
%179 = load double, double* %3
%180 = load double, double* %3
%181 = load double, double* %4
%182 = load double, double* %4
%183 = fmul double %181, %182
%184 = call double @llvm.fmuladd.f64(double %179, double %180, double %183)
%185 = fcmp olt double %178, %184
br i1 %185, label %186, label %225
186: ; preds = %175
%187 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0))
%188 = load double, double* %2
%189 = load double, double* %3
%190 = fcmp oeq double %188, %189
br i1 %190, label %191, label %197
191: ; preds = %186
%192 = load double, double* %3
%193 = load double, double* %4
%194 = fcmp oeq double %192, %193
br i1 %194, label %195, label %197
195: ; preds = %191
%196 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %224
197: ; preds = %191, %186
%198 = load double, double* %2
%199 = load double, double* %3
%200 = fcmp oeq double %198, %199
br i1 %200, label %201, label %205
201: ; preds = %197
%202 = load double, double* %3
%203 = load double, double* %4
%204 = fcmp une double %202, %203
br i1 %204, label %221, label %205
205: ; preds = %201, %197
%206 = load double, double* %2
%207 = load double, double* %4
%208 = fcmp oeq double %206, %207
br i1 %208, label %209, label %213
209: ; preds = %205
%210 = load double, double* %2
%211 = load double, double* %3
%212 = fcmp une double %210, %211
br i1 %212, label %221, label %213
213: ; preds = %209, %205
%214 = load double, double* %3
%215 = load double, double* %4
%216 = fcmp oeq double %214, %215
br i1 %216, label %217, label %223
217: ; preds = %213
%218 = load double, double* %4
%219 = load double, double* %2
%220 = fcmp une double %218, %219
br i1 %220, label %221, label %223
221: ; preds = %217, %209, %201
%222 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
br label %223
223: ; preds = %221, %217, %213
br label %224
224: ; preds = %223, %195
br label %337
225: ; preds = %175
%226 = load double, double* %2
%227 = load double, double* %3
%228 = fcmp oeq double %226, %227
br i1 %228, label %229, label %272
229: ; preds = %225
%230 = load double, double* %3
%231 = load double, double* %4
%232 = fcmp oeq double %230, %231
br i1 %232, label %233, label %272
233: ; preds = %229
%234 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
%235 = load double, double* %2
%236 = load double, double* %3
%237 = fcmp oeq double %235, %236
br i1 %237, label %238, label %244
238: ; preds = %233
%239 = load double, double* %3
%240 = load double, double* %4
%241 = fcmp oeq double %239, %240
br i1 %241, label %242, label %244
242: ; preds = %238
%243 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %271
244: ; preds = %238, %233
%245 = load double, double* %2
%246 = load double, double* %3
%247 = fcmp oeq double %245, %246
br i1 %247, label %248, label %252
248: ; preds = %244
%249 = load double, double* %3
%250 = load double, double* %4
%251 = fcmp une double %249, %250
br i1 %251, label %268, label %252
252: ; preds = %248, %244
%253 = load double, double* %2
%254 = load double, double* %4
%255 = fcmp oeq double %253, %254
br i1 %255, label %256, label %260
256: ; preds = %252
%257 = load double, double* %2
%258 = load double, double* %3
%259 = fcmp une double %257, %258
br i1 %259, label %268, label %260
260: ; preds = %256, %252
%261 = load double, double* %3
%262 = load double, double* %4
%263 = fcmp oeq double %261, %262
br i1 %263, label %264, label %270
264: ; preds = %260
%265 = load double, double* %4
%266 = load double, double* %2
%267 = fcmp une double %265, %266
br i1 %267, label %268, label %270
268: ; preds = %264, %256, %248
%269 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
br label %270
270: ; preds = %268, %264, %260
br label %271
271: ; preds = %270, %242
br label %336
272: ; preds = %229, %225
%273 = load double, double* %2
%274 = load double, double* %3
%275 = fcmp oeq double %273, %274
br i1 %275, label %276, label %280
276: ; preds = %272
%277 = load double, double* %3
%278 = load double, double* %4
%279 = fcmp une double %277, %278
br i1 %279, label %296, label %280
280: ; preds = %276, %272
%281 = load double, double* %2
%282 = load double, double* %4
%283 = fcmp oeq double %281, %282
br i1 %283, label %284, label %288
284: ; preds = %280
%285 = load double, double* %2
%286 = load double, double* %3
%287 = fcmp une double %285, %286
br i1 %287, label %296, label %288
288: ; preds = %284, %280
%289 = load double, double* %3
%290 = load double, double* %4
%291 = fcmp oeq double %289, %290
br i1 %291, label %292, label %335
292: ; preds = %288
%293 = load double, double* %4
%294 = load double, double* %2
%295 = fcmp une double %293, %294
br i1 %295, label %296, label %335
296: ; preds = %292, %284, %276
%297 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
%298 = load double, double* %2
%299 = load double, double* %3
%300 = fcmp oeq double %298, %299
br i1 %300, label %301, label %307
301: ; preds = %296
%302 = load double, double* %3
%303 = load double, double* %4
%304 = fcmp oeq double %302, %303
br i1 %304, label %305, label %307
305: ; preds = %301
%306 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %334
307: ; preds = %301, %296
%308 = load double, double* %2
%309 = load double, double* %3
%310 = fcmp oeq double %308, %309
br i1 %310, label %311, label %315
311: ; preds = %307
%312 = load double, double* %3
%313 = load double, double* %4
%314 = fcmp une double %312, %313
br i1 %314, label %331, label %315
315: ; preds = %311, %307
%316 = load double, double* %2
%317 = load double, double* %4
%318 = fcmp oeq double %316, %317
br i1 %318, label %319, label %323
319: ; preds = %315
%320 = load double, double* %2
%321 = load double, double* %3
%322 = fcmp une double %320, %321
br i1 %322, label %331, label %323
323: ; preds = %319, %315
%324 = load double, double* %3
%325 = load double, double* %4
%326 = fcmp oeq double %324, %325
br i1 %326, label %327, label %333
327: ; preds = %323
%328 = load double, double* %4
%329 = load double, double* %2
%330 = fcmp une double %328, %329
br i1 %330, label %331, label %333
331: ; preds = %327, %319, %311
%332 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0))
br label %333
333: ; preds = %331, %327, %323
br label %334
334: ; preds = %333, %305
br label %335
335: ; preds = %334, %292, %288
br label %336
336: ; preds = %335, %271
br label %337
337: ; preds = %336, %224
br label %338
338: ; preds = %337, %174
br label %339
339: ; preds = %338, %124
br label %340
340: ; preds = %339, %74
ret i32 0
}

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