#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 fabs(float);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, float *);
float sqrt(float);
int /*<<< orphan*/ system(char *);
int main() {
  float x1, y1;
  printf("Vvedit tochky A:\nx -> ");
  scanf("%f", &x1);
  printf("y -> ");
  scanf("%f", &y1);
  float x2, y2;
  printf("Vvedit tochky B:\nx -> ");
  scanf("%f", &x2);
  printf("y -> ");
  scanf("%f", &y2);
  float x3, y3;
  printf("Vvedit tochky C:\nx -> ");
  scanf("%f", &x3);
  printf("y -> ");
  scanf("%f", &y3);
  if (x1 < 0 || x1 >= 6) {
    printf("Tochka A ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y1 < 0) {
    printf("Tochka A ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y1 * y1 - x1 < 0) {
    printf("Tochka A ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y1 - 4.0 / x1 < 0) {
    printf("Tochka A ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (x2 < 0 || x2 >= 6) {
    printf("Tochka B ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y2 < 0) {
    printf("Tochka B ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y2 * y2 - x2 < 0) {
    printf("Tochka B ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y2 - 4.0 / x2 < 0) {
    printf("Tochka B ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (x3 < 0 || x3 >= 6) {
    printf("Tochka C ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y3 < 0) {
    printf("Tochka C ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y3 * y3 - x3 < 0) {
    printf("Tochka C ne nalejit R");
    system("PAUSE");
    return 0;
  };
  if (y3 - 4.0 / x3 < 0) {
    printf("Tochka C ne nalejit R");
    system("PAUSE");
    return 0;
  };
  float squareRectangle =
      fabs((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2;
  if (squareRectangle == 0) {
    printf("Tochky na odnyi pramiy!");
    system("PAUSE");
    return 0;
  };
  printf("Perumetr: %.*f\n", 2,
         sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) +
             sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1)) +
             sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2)));
  printf("Plosha: %.*f", 2, squareRectangle);
  system("PAUSE");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeaa(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xeb3(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1060 <scanf@plt>
lea    0xea6(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe95(%rip),%rdi
lea    -0xc(%rbp),%rsi
call   1060 <scanf@plt>
lea    0xe8e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe77(%rip),%rdi
lea    -0x10(%rbp),%rsi
call   1060 <scanf@plt>
lea    0xe6a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe59(%rip),%rdi
lea    -0x14(%rbp),%rsi
call   1060 <scanf@plt>
lea    0xe69(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe3b(%rip),%rdi
lea    -0x18(%rbp),%rsi
call   1060 <scanf@plt>
lea    0xe2e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe1d(%rip),%rdi
lea    -0x1c(%rbp),%rsi
call   1060 <scanf@plt>
xorps  %xmm0,%xmm0
ucomiss -0x8(%rbp),%xmm0
ja     1236 <main+0xe6>
movss  -0x8(%rbp),%xmm0
movss  0xdd3(%rip),%xmm1
ucomiss %xmm1,%xmm0
jb     125c <main+0x10c>
lea    0xe21(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe29(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
xorps  %xmm0,%xmm0
ucomiss -0xc(%rbp),%xmm0
jbe    128f <main+0x13f>
lea    0xdee(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xdf6(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0xc(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
movss  -0x8(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
jbe    12e5 <main+0x195>
lea    0xd98(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xda0(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xd09(%rip),%xmm0
divsd  %xmm2,%xmm0
subsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    133a <main+0x1ea>
lea    0xd43(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd4b(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
xorps  %xmm0,%xmm0
ucomiss -0x10(%rbp),%xmm0
ja     135d <main+0x20d>
movss  -0x10(%rbp),%xmm0
movss  0xcac(%rip),%xmm1
ucomiss %xmm1,%xmm0
jb     1383 <main+0x233>
lea    0xd16(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd02(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
xorps  %xmm0,%xmm0
ucomiss -0x14(%rbp),%xmm0
jbe    13b6 <main+0x266>
lea    0xce3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xccf(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0x14(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
movss  -0x10(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
jbe    140c <main+0x2bc>
lea    0xc8d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xc79(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x10(%rbp),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xbe2(%rip),%xmm0
divsd  %xmm2,%xmm0
subsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1461 <main+0x311>
lea    0xc38(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xc24(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
xorps  %xmm0,%xmm0
ucomiss -0x18(%rbp),%xmm0
ja     1484 <main+0x334>
movss  -0x18(%rbp),%xmm0
movss  0xb85(%rip),%xmm1
ucomiss %xmm1,%xmm0
jb     14aa <main+0x35a>
lea    0xc05(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xbdb(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
xorps  %xmm0,%xmm0
ucomiss -0x1c(%rbp),%xmm0
jbe    14dd <main+0x38d>
lea    0xbd2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xba8(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0x1c(%rbp),%xmm1
movss  -0x1c(%rbp),%xmm2
movss  -0x18(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
jbe    1533 <main+0x3e3>
lea    0xb7c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb52(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xabb(%rip),%xmm0
divsd  %xmm2,%xmm0
subsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1588 <main+0x438>
lea    0xb27(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xafd(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0x10(%rbp),%xmm0
subss  -0x8(%rbp),%xmm0
movss  -0x1c(%rbp),%xmm2
subss  -0xc(%rbp),%xmm2
movss  -0x18(%rbp),%xmm1
subss  -0x8(%rbp),%xmm1
movss  -0x14(%rbp),%xmm3
subss  -0xc(%rbp),%xmm3
mulss  %xmm3,%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1050 <fabs@plt>
mov    $0x2,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    161c <main+0x4cc>
jp     161c <main+0x4cc>
lea    0xaa9(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xa69(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
jmp    172f <main+0x5df>
movss  -0x10(%rbp),%xmm0
subss  -0x8(%rbp),%xmm0
movss  -0x10(%rbp),%xmm2
subss  -0x8(%rbp),%xmm2
movss  -0x14(%rbp),%xmm1
subss  -0xc(%rbp),%xmm1
movss  -0x14(%rbp),%xmm3
subss  -0xc(%rbp),%xmm3
mulss  %xmm3,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1070 <sqrt@plt>
movss  %xmm0,-0x28(%rbp)
movss  -0x18(%rbp),%xmm0
subss  -0x8(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
subss  -0x8(%rbp),%xmm2
movss  -0x1c(%rbp),%xmm1
subss  -0xc(%rbp),%xmm1
movss  -0x1c(%rbp),%xmm3
subss  -0xc(%rbp),%xmm3
mulss  %xmm3,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1070 <sqrt@plt>
movaps %xmm0,%xmm1
movss  -0x28(%rbp),%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x18(%rbp),%xmm0
subss  -0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm2
subss  -0x10(%rbp),%xmm2
movss  -0x1c(%rbp),%xmm1
subss  -0x14(%rbp),%xmm1
movss  -0x1c(%rbp),%xmm3
subss  -0x14(%rbp),%xmm3
mulss  %xmm3,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1070 <sqrt@plt>
movaps %xmm0,%xmm1
movss  -0x24(%rbp),%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x9ca(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%al
call   1040 <printf@plt>
movss  -0x20(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x9be(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0x951(%rip),%rdi
call   1030 <system@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x28,%rsp
lea    0xeb2(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xebb(%rip),%rbx
lea    0x20(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
lea    0xeaa(%rip),%r14
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x1c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
lea    0xe92(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x18(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x14(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
lea    0xe77(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x10(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xc(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
movss  0x20(%rsp),%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
ja     1259 <main+0x109>
ucomiss 0xdf0(%rip),%xmm1
jae    1259 <main+0x109>
movss  0x1c(%rsp),%xmm2
xorps  %xmm0,%xmm0
ucomiss %xmm2,%xmm0
ja     1259 <main+0x109>
movaps %xmm2,%xmm3
mulss  %xmm2,%xmm3
subss  %xmm1,%xmm3
ucomiss %xmm3,%xmm0
ja     1259 <main+0x109>
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
cvtss2sd %xmm1,%xmm4
movsd  0xdc5(%rip),%xmm3
movapd %xmm3,%xmm5
divsd  %xmm4,%xmm5
addsd  %xmm0,%xmm5
xorpd  %xmm0,%xmm0
ucomisd %xmm5,%xmm0
jbe    127d <main+0x12d>
lea    0xdfe(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe06(%rip),%rdi
call   1030 <system@plt>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r14
ret
movss  0x18(%rsp),%xmm4
xorpd  %xmm0,%xmm0
ucomiss %xmm4,%xmm0
ja     12d7 <main+0x187>
ucomiss 0xd6d(%rip),%xmm4
jae    12d7 <main+0x187>
movss  0x14(%rsp),%xmm5
xorps  %xmm0,%xmm0
ucomiss %xmm5,%xmm0
ja     12d7 <main+0x187>
movaps %xmm5,%xmm6
mulss  %xmm5,%xmm6
subss  %xmm4,%xmm6
ucomiss %xmm6,%xmm0
ja     12d7 <main+0x187>
xorps  %xmm0,%xmm0
cvtss2sd %xmm5,%xmm0
xorps  %xmm6,%xmm6
cvtss2sd %xmm4,%xmm6
movapd %xmm3,%xmm7
divsd  %xmm6,%xmm7
addsd  %xmm0,%xmm7
xorpd  %xmm0,%xmm0
ucomisd %xmm7,%xmm0
jbe    12e0 <main+0x190>
lea    0xd9c(%rip),%rdi
jmp    1260 <main+0x110>
movss  0x10(%rsp),%xmm6
xorpd  %xmm0,%xmm0
ucomiss %xmm6,%xmm0
ja     133c <main+0x1ec>
ucomiss 0xd0a(%rip),%xmm6
jae    133c <main+0x1ec>
movss  0xc(%rsp),%xmm0
xorps  %xmm8,%xmm8
ucomiss %xmm0,%xmm8
ja     133c <main+0x1ec>
movaps %xmm0,%xmm7
mulss  %xmm0,%xmm7
subss  %xmm6,%xmm7
ucomiss %xmm7,%xmm8
ja     133c <main+0x1ec>
xorps  %xmm8,%xmm8
cvtss2sd %xmm0,%xmm8
xorps  %xmm7,%xmm7
cvtss2sd %xmm6,%xmm7
divsd  %xmm7,%xmm3
addsd  %xmm8,%xmm3
xorpd  %xmm7,%xmm7
ucomisd %xmm3,%xmm7
jbe    1348 <main+0x1f8>
lea    0xd4d(%rip),%rdi
jmp    1260 <main+0x110>
subss  %xmm1,%xmm4
subss  %xmm2,%xmm0
mulss  %xmm4,%xmm0
subss  %xmm1,%xmm6
subss  %xmm2,%xmm5
mulss  %xmm6,%xmm5
subss  %xmm5,%xmm0
call   1050 <fabs@plt>
lea    0x1(%rax),%ecx
cmp    $0x2,%ecx
ja     137d <main+0x22d>
lea    0xd2e(%rip),%rdi
jmp    1260 <main+0x110>
mov    %eax,%ebx
shr    $0x1f,%ebx
add    %eax,%ebx
movss  0x18(%rsp),%xmm0
subss  0x20(%rsp),%xmm0
movss  0x14(%rsp),%xmm1
subss  0x1c(%rsp),%xmm1
mulss  %xmm1,%xmm1
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorpd  %xmm3,%xmm3
ucomiss %xmm3,%xmm0
jb     13b7 <main+0x267>
sqrtss %xmm0,%xmm2
jmp    13c2 <main+0x272>
call   1070 <sqrt@plt>
xorps  %xmm3,%xmm3
movaps %xmm0,%xmm2
sar    %ebx
movss  0x10(%rsp),%xmm0
subss  0x20(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
subss  0x1c(%rsp),%xmm1
mulss  %xmm1,%xmm1
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
ucomiss %xmm3,%xmm0
jb     13f3 <main+0x2a3>
sqrtss %xmm0,%xmm0
jmp    1404 <main+0x2b4>
movss  %xmm2,0x8(%rsp)
call   1070 <sqrt@plt>
movss  0x8(%rsp),%xmm2
addss  %xmm0,%xmm2
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
movss  %xmm0,0x24(%rsp)
movss  0x10(%rsp),%xmm0
subss  0x18(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
subss  0x14(%rsp),%xmm1
mulss  %xmm1,%xmm1
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1447 <main+0x2f7>
sqrtss %xmm0,%xmm0
jmp    1458 <main+0x308>
movss  %xmm2,0x8(%rsp)
call   1070 <sqrt@plt>
movss  0x8(%rsp),%xmm2
addss  %xmm0,%xmm2
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
lea    0xc54(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%al
call   1040 <printf@plt>
movss  0x24(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc47(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    1267 <main+0x117>

LLVM IR (-O0):
@.str = [23 x i8] c"Vvedit tochky A:\0Ax -> \00"
@.str.1 = [3 x i8] c"%f\00"
@.str.2 = [6 x i8] c"y -> \00"
@.str.3 = [23 x i8] c"Vvedit tochky B:\0Ax -> \00"
@.str.4 = [23 x i8] c"Vvedit tochky C:\0Ax -> \00"
@.str.5 = [22 x i8] c"Tochka A ne nalejit R\00"
@.str.6 = [6 x i8] c"PAUSE\00"
@.str.7 = [22 x i8] c"Tochka B ne nalejit R\00"
@.str.8 = [22 x i8] c"Tochka C ne nalejit R\00"
@.str.9 = [24 x i8] c"Tochky na odnyi pramiy!\00"
@.str.10 = [16 x i8] c"Perumetr: %.*f\0A\00"
@.str.11 = [13 x i8] c"Plosha: %.*f\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = alloca float
%7 = alloca float
%8 = alloca float
store i32 0, i32* %1
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0))
%10 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %2)
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%12 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %3)
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.3, i64 0, i64 0))
%14 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %4)
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%16 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %5)
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0))
%18 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %6)
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%20 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %7)
%21 = load float, float* %2
%22 = fcmp olt float %21, 0.000000e+00
br i1 %22, label %26, label %23
23: ; preds = %0
%24 = load float, float* %2
%25 = fcmp oge float %24, 6.000000e+00
br i1 %25, label %26, label %29
26: ; preds = %23, %0
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
%28 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
29: ; preds = %23
%30 = load float, float* %3
%31 = fcmp olt float %30, 0.000000e+00
br i1 %31, label %32, label %35
32: ; preds = %29
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
%34 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
35: ; preds = %29
%36 = load float, float* %3
%37 = load float, float* %3
%38 = load float, float* %2
%39 = fneg float %38
%40 = call float @llvm.fmuladd.f32(float %36, float %37, float %39)
%41 = fcmp olt float %40, 0.000000e+00
br i1 %41, label %42, label %45
42: ; preds = %35
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
%44 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
45: ; preds = %35
%46 = load float, float* %3
%47 = fpext float %46 to double
%48 = load float, float* %2
%49 = fpext float %48 to double
%50 = fdiv double 4.000000e+00, %49
%51 = fsub double %47, %50
%52 = fcmp olt double %51, 0.000000e+00
br i1 %52, label %53, label %56
53: ; preds = %45
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
%55 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
56: ; preds = %45
%57 = load float, float* %4
%58 = fcmp olt float %57, 0.000000e+00
br i1 %58, label %62, label %59
59: ; preds = %56
%60 = load float, float* %4
%61 = fcmp oge float %60, 6.000000e+00
br i1 %61, label %62, label %65
62: ; preds = %59, %56
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
%64 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
65: ; preds = %59
%66 = load float, float* %5
%67 = fcmp olt float %66, 0.000000e+00
br i1 %67, label %68, label %71
68: ; preds = %65
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
%70 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
71: ; preds = %65
%72 = load float, float* %5
%73 = load float, float* %5
%74 = load float, float* %4
%75 = fneg float %74
%76 = call float @llvm.fmuladd.f32(float %72, float %73, float %75)
%77 = fcmp olt float %76, 0.000000e+00
br i1 %77, label %78, label %81
78: ; preds = %71
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
%80 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
81: ; preds = %71
%82 = load float, float* %5
%83 = fpext float %82 to double
%84 = load float, float* %4
%85 = fpext float %84 to double
%86 = fdiv double 4.000000e+00, %85
%87 = fsub double %83, %86
%88 = fcmp olt double %87, 0.000000e+00
br i1 %88, label %89, label %92
89: ; preds = %81
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
%91 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
92: ; preds = %81
%93 = load float, float* %6
%94 = fcmp olt float %93, 0.000000e+00
br i1 %94, label %98, label %95
95: ; preds = %92
%96 = load float, float* %6
%97 = fcmp oge float %96, 6.000000e+00
br i1 %97, label %98, label %101
98: ; preds = %95, %92
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
%100 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
101: ; preds = %95
%102 = load float, float* %7
%103 = fcmp olt float %102, 0.000000e+00
br i1 %103, label %104, label %107
104: ; preds = %101
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
%106 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
107: ; preds = %101
%108 = load float, float* %7
%109 = load float, float* %7
%110 = load float, float* %6
%111 = fneg float %110
%112 = call float @llvm.fmuladd.f32(float %108, float %109, float %111)
%113 = fcmp olt float %112, 0.000000e+00
br i1 %113, label %114, label %117
114: ; preds = %107
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
%116 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
117: ; preds = %107
%118 = load float, float* %7
%119 = fpext float %118 to double
%120 = load float, float* %6
%121 = fpext float %120 to double
%122 = fdiv double 4.000000e+00, %121
%123 = fsub double %119, %122
%124 = fcmp olt double %123, 0.000000e+00
br i1 %124, label %125, label %128
125: ; preds = %117
%126 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
%127 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
128: ; preds = %117
%129 = load float, float* %4
%130 = load float, float* %2
%131 = fsub float %129, %130
%132 = load float, float* %7
%133 = load float, float* %3
%134 = fsub float %132, %133
%135 = load float, float* %6
%136 = load float, float* %2
%137 = fsub float %135, %136
%138 = load float, float* %5
%139 = load float, float* %3
%140 = fsub float %138, %139
%141 = fmul float %137, %140
%142 = fneg float %141
%143 = call float @llvm.fmuladd.f32(float %131, float %134, float %142)
%144 = call i32 @fabs(float %143)
%145 = sdiv i32 %144, 2
%146 = sitofp i32 %145 to float
store float %146, float* %8
%147 = load float, float* %8
%148 = fcmp oeq float %147, 0.000000e+00
br i1 %148, label %149, label %152
149: ; preds = %128
%150 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.9, i64 0, i64 0))
%151 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
152: ; preds = %128
%153 = load float, float* %4
%154 = load float, float* %2
%155 = fsub float %153, %154
%156 = load float, float* %4
%157 = load float, float* %2
%158 = fsub float %156, %157
%159 = load float, float* %5
%160 = load float, float* %3
%161 = fsub float %159, %160
%162 = load float, float* %5
%163 = load float, float* %3
%164 = fsub float %162, %163
%165 = fmul float %161, %164
%166 = call float @llvm.fmuladd.f32(float %155, float %158, float %165)
%167 = call float @sqrt(float %166)
%168 = load float, float* %6
%169 = load float, float* %2
%170 = fsub float %168, %169
%171 = load float, float* %6
%172 = load float, float* %2
%173 = fsub float %171, %172
%174 = load float, float* %7
%175 = load float, float* %3
%176 = fsub float %174, %175
%177 = load float, float* %7
%178 = load float, float* %3
%179 = fsub float %177, %178
%180 = fmul float %176, %179
%181 = call float @llvm.fmuladd.f32(float %170, float %173, float %180)
%182 = call float @sqrt(float %181)
%183 = fadd float %167, %182
%184 = load float, float* %6
%185 = load float, float* %4
%186 = fsub float %184, %185
%187 = load float, float* %6
%188 = load float, float* %4
%189 = fsub float %187, %188
%190 = load float, float* %7
%191 = load float, float* %5
%192 = fsub float %190, %191
%193 = load float, float* %7
%194 = load float, float* %5
%195 = fsub float %193, %194
%196 = fmul float %192, %195
%197 = call float @llvm.fmuladd.f32(float %186, float %189, float %196)
%198 = call float @sqrt(float %197)
%199 = fadd float %183, %198
%200 = fpext float %199 to double
%201 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0), i32 2, double %200)
%202 = load float, float* %8
%203 = fpext float %202 to double
%204 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32 2, double %203)
%205 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %1
br label %206
206: ; preds = %152, %149, %125, %114, %104, %98, %89, %78, %68, %62, %53, %42, %32, %26
%207 = load i32, i32* %1
ret i32 %207
}

LLVM IR (-O2):
@.str = [23 x i8] c"Vvedit tochky A:\0Ax -> \00"
@.str.1 = [3 x i8] c"%f\00"
@.str.2 = [6 x i8] c"y -> \00"
@.str.3 = [23 x i8] c"Vvedit tochky B:\0Ax -> \00"
@.str.4 = [23 x i8] c"Vvedit tochky C:\0Ax -> \00"
@.str.5 = [22 x i8] c"Tochka A ne nalejit R\00"
@.str.6 = [6 x i8] c"PAUSE\00"
@.str.7 = [22 x i8] c"Tochka B ne nalejit R\00"
@.str.8 = [22 x i8] c"Tochka C ne nalejit R\00"
@.str.9 = [24 x i8] c"Tochky na odnyi pramiy!\00"
@.str.10 = [16 x i8] c"Perumetr: %.*f\0A\00"
@.str.11 = [13 x i8] c"Plosha: %.*f\00"
define i32 @main() {
%1 = alloca float
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = alloca float
%7 = bitcast float* %1 to i8*
%8 = bitcast float* %2 to i8*
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str, i64 0, i64 0))
%10 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %1)
%11 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%12 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %2)
%13 = bitcast float* %3 to i8*
%14 = bitcast float* %4 to i8*
%15 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.3, i64 0, i64 0))
%16 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %3)
%17 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%18 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %4)
%19 = bitcast float* %5 to i8*
%20 = bitcast float* %6 to i8*
%21 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0))
%22 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %5)
%23 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%24 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %6)
%25 = load float, float* %1
%26 = fcmp olt float %25, 0.000000e+00
%27 = fcmp oge float %25, 6.000000e+00
%28 = or i1 %26, %27
br i1 %28, label %29, label %31
29: ; preds = %0
%30 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
br label %151
31: ; preds = %0
%32 = load float, float* %2
%33 = fcmp olt float %32, 0.000000e+00
br i1 %33, label %34, label %36
34: ; preds = %31
%35 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
br label %151
36: ; preds = %31
%37 = fneg float %25
%38 = call float @llvm.fmuladd.f32(float %32, float %32, float %37)
%39 = fcmp olt float %38, 0.000000e+00
br i1 %39, label %40, label %42
40: ; preds = %36
%41 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
br label %151
42: ; preds = %36
%43 = fpext float %32 to double
%44 = fpext float %25 to double
%45 = fdiv double 4.000000e+00, %44
%46 = fsub double %43, %45
%47 = fcmp olt double %46, 0.000000e+00
br i1 %47, label %48, label %50
48: ; preds = %42
%49 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
br label %151
50: ; preds = %42
%51 = load float, float* %3
%52 = fcmp olt float %51, 0.000000e+00
%53 = fcmp oge float %51, 6.000000e+00
%54 = or i1 %52, %53
br i1 %54, label %55, label %57
55: ; preds = %50
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
br label %151
57: ; preds = %50
%58 = load float, float* %4
%59 = fcmp olt float %58, 0.000000e+00
br i1 %59, label %60, label %62
60: ; preds = %57
%61 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
br label %151
62: ; preds = %57
%63 = fneg float %51
%64 = call float @llvm.fmuladd.f32(float %58, float %58, float %63)
%65 = fcmp olt float %64, 0.000000e+00
br i1 %65, label %66, label %68
66: ; preds = %62
%67 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
br label %151
68: ; preds = %62
%69 = fpext float %58 to double
%70 = fpext float %51 to double
%71 = fdiv double 4.000000e+00, %70
%72 = fsub double %69, %71
%73 = fcmp olt double %72, 0.000000e+00
br i1 %73, label %74, label %76
74: ; preds = %68
%75 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
br label %151
76: ; preds = %68
%77 = load float, float* %5
%78 = fcmp olt float %77, 0.000000e+00
%79 = fcmp oge float %77, 6.000000e+00
%80 = or i1 %78, %79
br i1 %80, label %81, label %83
81: ; preds = %76
%82 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
br label %151
83: ; preds = %76
%84 = load float, float* %6
%85 = fcmp olt float %84, 0.000000e+00
br i1 %85, label %86, label %88
86: ; preds = %83
%87 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
br label %151
88: ; preds = %83
%89 = fneg float %77
%90 = call float @llvm.fmuladd.f32(float %84, float %84, float %89)
%91 = fcmp olt float %90, 0.000000e+00
br i1 %91, label %92, label %94
92: ; preds = %88
%93 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
br label %151
94: ; preds = %88
%95 = fpext float %84 to double
%96 = fpext float %77 to double
%97 = fdiv double 4.000000e+00, %96
%98 = fsub double %95, %97
%99 = fcmp olt double %98, 0.000000e+00
br i1 %99, label %100, label %102
100: ; preds = %94
%101 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.8, i64 0, i64 0))
br label %151
102: ; preds = %94
%103 = fsub float %51, %25
%104 = fsub float %84, %32
%105 = fsub float %77, %25
%106 = fsub float %58, %32
%107 = fneg float %105
%108 = fmul float %106, %107
%109 = call float @llvm.fmuladd.f32(float %103, float %104, float %108)
%110 = call i32 @fabs(float %109)
%111 = add i32 %110, 1
%112 = icmp ult i32 %111, 3
br i1 %112, label %113, label %115
113: ; preds = %102
%114 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.9, i64 0, i64 0))
br label %151
115: ; preds = %102
%116 = sdiv i32 %110, 2
%117 = sitofp i32 %116 to float
%118 = load float, float* %3
%119 = load float, float* %1
%120 = fsub float %118, %119
%121 = load float, float* %4
%122 = load float, float* %2
%123 = fsub float %121, %122
%124 = fmul float %123, %123
%125 = call float @llvm.fmuladd.f32(float %120, float %120, float %124)
%126 = call float @sqrt(float %125)
%127 = load float, float* %5
%128 = load float, float* %1
%129 = fsub float %127, %128
%130 = load float, float* %6
%131 = load float, float* %2
%132 = fsub float %130, %131
%133 = fmul float %132, %132
%134 = call float @llvm.fmuladd.f32(float %129, float %129, float %133)
%135 = call float @sqrt(float %134)
%136 = fadd float %126, %135
%137 = load float, float* %5
%138 = load float, float* %3
%139 = fsub float %137, %138
%140 = load float, float* %6
%141 = load float, float* %4
%142 = fsub float %140, %141
%143 = fmul float %142, %142
%144 = call float @llvm.fmuladd.f32(float %139, float %139, float %143)
%145 = call float @sqrt(float %144)
%146 = fadd float %136, %145
%147 = fpext float %146 to double
%148 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0), i32 2, double %147)
%149 = fpext float %117 to double
%150 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32 2, double %149)
br label %151
151: ; preds = %113, %115, %100, %92, %86, %81, %74, %66, %60, %55, %48, %40, %34, %29
%152 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
ret i32 0
}