#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 */
double max1(double, double);
double max2(double);
double min1(double, double);
double min2(double);
int /*<<< orphan*/ printError();
int /*<<< orphan*/ printPoints(double, double, double, double);
int /*<<< orphan*/ scanf(char *, double *, double *, double *, double *);
int main() {
  double xLeft, xRight, yBottom, yTop, x1, x2, y1, y2, deltaX, deltaY;
  double p1, p2, p3, p4, q1, q2, q3, q4, u1, u2, u3, u4, umax, umin, xPoint1,
      xPoint2, yPoint1, yPoint2;
  scanf("%lf%lf%lf%lf", &xLeft, &xRight, &yBottom, &yTop);
  scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
  deltaX = x2 - x1;
  deltaY = y2 - y1;
  p1 = -deltaX;
  p2 = deltaX;
  p3 = -deltaY;
  p4 = deltaY;
  q1 = x1 - xLeft;
  q2 = xRight - x1;
  q3 = y1 - yBottom;
  q4 = yTop - y1;
  if (deltaX == 0) {
    if (q1 < 0 || q2 < 0) {
      printError();
    } else {
      u3 = q3 / p3;
      u4 = q4 / p4;
      if (p3 < 0) {
        umax = max2(u3);
        umin = min2(u4);
      } else {
        umax = max2(u4);
        umin = min2(u3);
      }
      if (umax < umin) {
        xPoint1 = x1 + umax * (x2 - x1);
        yPoint1 = y1 + umax * (y2 - y1);
        xPoint2 = x1 + umin * (x2 - x1);
        yPoint2 = y1 + umin * (y2 - y1);
        printPoints(xPoint1, yPoint1, xPoint2, yPoint2);
      } else {
        printError();
      }
    }
  }
  if (deltaY == 0) {
    if (q3 < 0 || q4 < 0) {
      printError();
    } else {
      u1 = q1 / p1;
      u2 = q2 / p2;
      if (p1 < 0) {
        umax = max2(u1);
        umin = min2(u2);
      } else {
        umax = max2(u2);
        umin = min2(u1);
      }
      if (umax < umin) {
        xPoint1 = x1 + umax * (x2 - x1);
        yPoint1 = y1 + umax * (y2 - y1);
        xPoint2 = x1 + umin * (x2 - x1);
        yPoint2 = y1 + umin * (y2 - y1);
        printPoints(xPoint1, yPoint1, xPoint2, yPoint2);
      } else {
        printError();
      }
    }
  }
  if (p1 != 0 && p2 != 0 && p3 != 0 && p4 != 0) {
    u1 = q1 / p1;
    u2 = q2 / p2;
    u3 = q3 / p3;
    u4 = q4 / p4;
    if (p1 > 0 && p2 > 0) {
      umax = max1(u3, u4);
      umin = min1(u1, u2);
    }
    if (p1 > 0 && p3 > 0) {
      umax = max1(u2, u4);
      umin = min1(u1, u3);
    }
    if (p1 > 0 && p4 > 0) {
      umax = max1(u2, u3);
      umin = min1(u1, u4);
    }
    if (p2 > 0 && p3 > 0) {
      umax = max1(u1, u4);
      umin = min1(u2, u3);
    }
    if (p2 > 0 && p4 > 0) {
      umax = max1(u1, u3);
      umin = min1(u2, u4);
    }
    if (p3 > 0 && p4 > 0) {
      umax = max1(u1, u2);
      umin = min1(u3, u4);
    }
    if (umax < umin) {
      xPoint1 = x1 + umax * (x2 - x1);
      yPoint1 = y1 + umax * (y2 - y1);
      xPoint2 = x1 + umin * (x2 - x1);
      yPoint2 = y1 + umin * (y2 - y1);
      printPoints(xPoint1, yPoint1, xPoint2, yPoint2);
    } else {
      printError();
    }
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xe77(%rip),%rdi
lea    -0x10(%rbp),%rsi
lea    -0x18(%rbp),%rdx
lea    -0x20(%rbp),%rcx
lea    -0x28(%rbp),%r8
call   1080 <scanf@plt>
lea    0xe5b(%rip),%rdi
lea    -0x30(%rbp),%rsi
lea    -0x40(%rbp),%rdx
lea    -0x38(%rbp),%rcx
lea    -0x48(%rbp),%r8
call   1080 <scanf@plt>
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x30(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1438 <main+0x2c8>
jp     1438 <main+0x2c8>
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
ja     12aa <main+0x13a>
xorps  %xmm0,%xmm0
ucomisd -0x88(%rbp),%xmm0
ff
jbe    12b6 <main+0x146>
mov    $0x0,%al
call   1090 <printError@plt>
jmp    1433 <main+0x2c3>
movsd  -0x90(%rbp),%xmm0
ff
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0x70(%rbp),%xmm0
jbe    131d <main+0x1ad>
movsd  -0xb0(%rbp),%xmm0
ff
call   1040 <max2@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
call   1060 <min2@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1347 <main+0x1d7>
movsd  -0xb8(%rbp),%xmm0
ff
call   1040 <max2@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
call   1060 <min2@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1427 <main+0x2b7>
movsd  -0x30(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x40(%rbp),%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm3
ff
call   1050 <printPoints@plt>
jmp    142e <main+0x2be>
mov    $0x0,%al
call   1090 <printError@plt>
jmp    1433 <main+0x2c3>
jmp    1438 <main+0x2c8>
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    15fd <main+0x48d>
jp     15fd <main+0x48d>
xorps  %xmm0,%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
ja     1472 <main+0x302>
xorps  %xmm0,%xmm0
ucomisd -0x98(%rbp),%xmm0
ff
jbe    147e <main+0x30e>
mov    $0x0,%al
call   1090 <printError@plt>
jmp    15f8 <main+0x488>
movsd  -0x80(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0x60(%rbp),%xmm0
jbe    14e2 <main+0x372>
movsd  -0xa0(%rbp),%xmm0
ff
call   1040 <max2@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
call   1060 <min2@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    150c <main+0x39c>
movsd  -0xa8(%rbp),%xmm0
ff
call   1040 <max2@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1060 <min2@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    15ec <main+0x47c>
movsd  -0x30(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x40(%rbp),%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm3
ff
call   1050 <printPoints@plt>
jmp    15f3 <main+0x483>
mov    $0x0,%al
call   1090 <printError@plt>
jmp    15f8 <main+0x488>
jmp    15fd <main+0x48d>
movsd  -0x60(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    161a <main+0x4aa>
jp     161a <main+0x4aa>
jmp    19e2 <main+0x872>
movsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1637 <main+0x4c7>
jp     1637 <main+0x4c7>
jmp    19e2 <main+0x872>
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1654 <main+0x4e4>
jp     1654 <main+0x4e4>
jmp    19e2 <main+0x872>
movsd  -0x78(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1671 <main+0x501>
jp     1671 <main+0x501>
jmp    19e2 <main+0x872>
movsd  -0x80(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1720 <main+0x5b0>
movsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1720 <main+0x5b0>
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
call   1070 <max1@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm1
ff
call   1030 <min1@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    177e <main+0x60e>
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    177e <main+0x60e>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
call   1070 <max1@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
call   1030 <min1@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    17dc <main+0x66c>
movsd  -0x78(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    17dc <main+0x66c>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
call   1070 <max1@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
call   1030 <min1@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    183a <main+0x6ca>
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    183a <main+0x6ca>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
call   1070 <max1@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
call   1030 <min1@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1898 <main+0x728>
movsd  -0x78(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1898 <main+0x728>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
call   1070 <max1@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
call   1030 <min1@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    18f6 <main+0x786>
movsd  -0x78(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    18f6 <main+0x786>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm1
ff
call   1070 <max1@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
call   1030 <min1@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    19d6 <main+0x866>
movsd  -0x30(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x40(%rbp),%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm3
ff
call   1050 <printPoints@plt>
jmp    19dd <main+0x86d>
mov    $0x0,%al
call   1090 <printError@plt>
jmp    19e2 <main+0x872>
mov    -0x4(%rbp),%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0xc0,%rsp
lea    0xe91(%rip),%rbx
lea    0x98(%rsp),%rsi
lea    0x90(%rsp),%rdx
lea    0x88(%rsp),%rcx
lea    0x80(%rsp),%r8
mov    %rbx,%rdi
call   1080 <scanf@plt>
lea    0x68(%rsp),%rsi
lea    0x58(%rsp),%rdx
lea    0x60(%rsp),%rcx
lea    0x50(%rsp),%r8
mov    %rbx,%rdi
call   1080 <scanf@plt>
movsd  0x60(%rsp),%xmm3
movsd  0x68(%rsp),%xmm0
subsd  %xmm0,%xmm3
movsd  0x50(%rsp),%xmm4
movsd  0x58(%rsp),%xmm1
subsd  %xmm1,%xmm4
movapd 0xe15(%rip),%xmm5
movapd %xmm3,%xmm2
xorpd  %xmm5,%xmm2
movapd %xmm2,0xa0(%rsp)
movsd  0x90(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,0x20(%rsp)
movapd %xmm0,%xmm2
subsd  0x98(%rsp),%xmm2
movsd  0x80(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x18(%rsp)
subsd  0x88(%rsp),%xmm1
movsd  %xmm1,0x28(%rsp)
xorpd  %xmm4,%xmm5
movapd %xmm5,0xb0(%rsp)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm3
movapd %xmm3,0x40(%rsp)
movapd %xmm4,0x30(%rsp)
movsd  %xmm2,0x8(%rsp)
jne    1340 <main+0x1d0>
jp     1340 <main+0x1d0>
ucomisd %xmm2,%xmm1
ja     1342 <main+0x1d2>
xorpd  %xmm3,%xmm3
ucomisd 0x20(%rsp),%xmm3
ja     1342 <main+0x1d2>
movsd  0x28(%rsp),%xmm1
divsd  0xb0(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
divsd  %xmm4,%xmm2
ucomisd %xmm3,%xmm4
movapd %xmm1,%xmm0
ja     12b2 <main+0x142>
movapd %xmm2,%xmm0
cmpltsd %xmm4,%xmm3
andpd  %xmm3,%xmm2
andnpd %xmm1,%xmm3
orpd   %xmm2,%xmm3
movapd %xmm3,0x70(%rsp)
call   1040 <max2@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x70(%rsp),%xmm0
call   1060 <min2@plt>
movsd  0x10(%rsp),%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm0,0x70(%rsp)
jbe    1357 <main+0x1e7>
movapd %xmm0,%xmm6
movsd  0x68(%rsp),%xmm4
movsd  0x60(%rsp),%xmm2
subsd  %xmm4,%xmm2
movapd %xmm1,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm4,%xmm0
movsd  0x58(%rsp),%xmm5
movsd  0x50(%rsp),%xmm3
subsd  %xmm5,%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm6,%xmm2
addsd  %xmm4,%xmm2
mulsd  %xmm6,%xmm3
addsd  %xmm5,%xmm3
call   1050 <printPoints@plt>
jmp    135e <main+0x1ee>
jmp    1374 <main+0x204>
xor    %eax,%eax
call   1090 <printError@plt>
movapd 0x30(%rsp),%xmm4
movapd 0x40(%rsp),%xmm3
jmp    136a <main+0x1fa>
xor    %eax,%eax
call   1090 <printError@plt>
movapd 0x40(%rsp),%xmm3
movapd 0x30(%rsp),%xmm4
movsd  0x8(%rsp),%xmm2
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm4
jne    148b <main+0x31b>
jp     148b <main+0x31b>
xorpd  %xmm0,%xmm0
ucomisd 0x28(%rsp),%xmm0
ja     1457 <main+0x2e7>
ucomisd 0x18(%rsp),%xmm0
ja     1457 <main+0x2e7>
movapd %xmm2,%xmm1
divsd  0xa0(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
divsd  %xmm3,%xmm2
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm3
movapd %xmm1,%xmm0
ja     13c9 <main+0x259>
movapd %xmm2,%xmm0
cmpltsd %xmm3,%xmm4
andpd  %xmm4,%xmm2
andnpd %xmm1,%xmm4
orpd   %xmm2,%xmm4
movapd %xmm4,0x70(%rsp)
call   1040 <max2@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x70(%rsp),%xmm0
call   1060 <min2@plt>
movsd  0x10(%rsp),%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm0,0x70(%rsp)
jbe    1472 <main+0x302>
movapd %xmm0,%xmm6
movsd  0x68(%rsp),%xmm4
movsd  0x60(%rsp),%xmm2
subsd  %xmm4,%xmm2
movapd %xmm1,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm4,%xmm0
movsd  0x58(%rsp),%xmm5
movsd  0x50(%rsp),%xmm3
subsd  %xmm5,%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm6,%xmm2
addsd  %xmm4,%xmm2
mulsd  %xmm6,%xmm3
addsd  %xmm5,%xmm3
call   1050 <printPoints@plt>
jmp    1479 <main+0x309>
xor    %eax,%eax
call   1090 <printError@plt>
movsd  0x8(%rsp),%xmm2
movapd 0x30(%rsp),%xmm4
movapd 0x40(%rsp),%xmm3
jmp    148b <main+0x31b>
xor    %eax,%eax
call   1090 <printError@plt>
movapd 0x40(%rsp),%xmm3
movapd 0x30(%rsp),%xmm4
movsd  0x8(%rsp),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
jne    149b <main+0x32b>
jnp    169d <main+0x52d>
ucomisd %xmm0,%xmm4
jne    14a7 <main+0x337>
jnp    169d <main+0x52d>
divsd  0xa0(%rsp),%xmm2
movsd  0x20(%rsp),%xmm0
divsd  %xmm3,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x28(%rsp),%xmm0
divsd  0xb0(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  %xmm4,%xmm0
movsd  %xmm0,0x18(%rsp)
xorpd  %xmm0,%xmm0
ucomisd %xmm3,%xmm0
movsd  %xmm2,0x8(%rsp)
jbe    154b <main+0x3db>
ucomisd %xmm4,%xmm0
movsd  0x70(%rsp),%xmm6
jbe    1543 <main+0x3d3>
movsd  0x20(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
call   1070 <max1@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
call   1030 <min1@plt>
movsd  0x8(%rsp),%xmm2
movapd 0x30(%rsp),%xmm4
movapd 0x40(%rsp),%xmm3
movapd %xmm0,%xmm6
xorpd  %xmm0,%xmm0
ucomisd %xmm3,%xmm0
ja     1557 <main+0x3e7>
jmp    159f <main+0x42f>
movsd  0x70(%rsp),%xmm6
ucomisd %xmm3,%xmm0
jbe    159f <main+0x42f>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
jbe    159f <main+0x42f>
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
call   1070 <max1@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
call   1030 <min1@plt>
movsd  0x8(%rsp),%xmm2
movapd 0x30(%rsp),%xmm4
movapd 0x40(%rsp),%xmm3
movapd %xmm0,%xmm6
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
jbe    15ef <main+0x47f>
ucomisd %xmm4,%xmm0
jbe    15ef <main+0x47f>
movapd %xmm2,%xmm0
movsd  0x18(%rsp),%xmm1
call   1070 <max1@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
call   1030 <min1@plt>
movsd  0x8(%rsp),%xmm2
movapd 0x30(%rsp),%xmm4
movapd 0x40(%rsp),%xmm3
movapd %xmm0,%xmm6
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
jbe    168a <main+0x51a>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
movsd  0x10(%rsp),%xmm1
jbe    1639 <main+0x4c9>
movapd %xmm2,%xmm0
movsd  0x28(%rsp),%xmm1
call   1070 <max1@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x20(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
call   1030 <min1@plt>
movsd  0x10(%rsp),%xmm1
movapd %xmm0,%xmm6
ucomisd %xmm1,%xmm6
jbe    1696 <main+0x526>
movsd  0x68(%rsp),%xmm5
movsd  0x60(%rsp),%xmm2
subsd  %xmm5,%xmm2
movapd %xmm1,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm5,%xmm0
movsd  0x58(%rsp),%xmm4
movsd  0x50(%rsp),%xmm3
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm4,%xmm1
mulsd  %xmm6,%xmm2
addsd  %xmm5,%xmm2
mulsd  %xmm6,%xmm3
addsd  %xmm4,%xmm3
call   1050 <printPoints@plt>
jmp    169d <main+0x52d>
movsd  0x10(%rsp),%xmm1
ucomisd %xmm1,%xmm6
ja     163f <main+0x4cf>
xor    %eax,%eax
call   1090 <printError@plt>
xor    %eax,%eax
add    $0xc0,%rsp
pop    %rbx
ret

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

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