#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 pow(int, int);
int /*<<< orphan*/ printf(char *, double, double);
int /*<<< orphan*/ scanf(char *, int *);
int sqrt(double);
int main() {
  typedef struct Point {
    int x;
    int y;
    int x_a;
    int y_a;
    int x_b;
    int y_b;
  } point;
  point a;
  point b;
  point c;
  int l;
  scanf("%i", &a.x);
  scanf("%i", &a.y);
  scanf("%i", &b.x);
  scanf("%i", &b.y);
  scanf("%i", &c.x);
  scanf("%i", &c.y);
  scanf("%i", &l);
  double rast, max;
  if ((a.x == b.x) && (a.y == b.y)) {
    rast = sqrt(pow(a.x - c.x, 2) + pow(a.y - c.y, 2));
    max = sqrt(pow(a.x - c.x, 2) + pow(a.y - c.y, 2));
  } else {
    a.x_a = a.x - a.x;
    a.y_a = a.y - a.y;
    b.x_a = b.x - a.x;
    b.y_a = b.y - a.y;
    c.x_a = c.x - a.x;
    c.y_a = c.y - a.y;
    double cos_a = (b.x_a * c.x_a + b.y_a * c.y_a) /
                   (sqrt((pow(b.x_a, 2) + pow(b.y_a, 2)) *
                         (pow(c.x_a, 2) + pow(c.y_a, 2))));
    a.x_b = a.x - b.x;
    a.y_b = a.y - b.y;
    b.x_b = b.x - b.x;
    b.y_b = b.y - b.y;
    c.x_b = c.x - b.x;
    c.y_b = c.y - b.y;
    double cos_b = (a.x_b * c.x_b + a.y_b * c.y_b) /
                   (sqrt((pow(a.x_b, 2) + pow(a.y_b, 2)) *
                         (pow(c.x_b, 2) + pow(c.y_b, 2))));
    if (cos_a <= 0) {
      rast = sqrt(pow(a.x - c.x, 2) + pow(a.y - c.y, 2));
      max = sqrt(pow(b.x - c.x, 2) + pow(b.y - c.y, 2));
    } else if (cos_b <= 0) {
      max = sqrt(pow(a.x - c.x, 2) + pow(a.y - c.y, 2));
      rast = sqrt(pow(b.x - c.x, 2) + pow(b.y - c.y, 2));
    } else {
      double ac = sqrt(pow(a.x - c.x, 2) + pow(a.y - c.y, 2));
      double ab = sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
      double bc = sqrt(pow(b.x - c.x, 2) + pow(b.y - c.y, 2));
      double p = 0.5 * (ac + ab + bc);
      rast = 2 * sqrt(p * (p - ac) * (p - ab) * (p - bc)) / (ab);
      double max1 = sqrt(pow(a.x - c.x, 2) + pow(a.y - c.y, 2));
      double max2 = sqrt(pow(b.x - c.x, 2) + pow(b.y - c.y, 2));
      if (max1 > max2) {
        max = max1;
      } else {
        max = max2;
      }
    }
  }
  double ans1, ans2;
  if ((rast - l) < 0) {
    ans1 = 0;
  } else {
    ans1 = rast - l;
  };
  if ((max - l) < 0) {
    ans2 = 0;
  } else {
    ans2 = max - l;
  };
  printf("%0.2f %0.2f", ans1, ans2);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x150,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x20(%rbp),%rsi
lea    0xeab(%rip),%rdi
call   1040 <scanf@plt>
lea    -0x20(%rbp),%rsi
add    $0x4,%rsi
lea    0xe97(%rip),%rdi
call   1040 <scanf@plt>
lea    -0x38(%rbp),%rsi
lea    0xe87(%rip),%rdi
call   1040 <scanf@plt>
lea    -0x38(%rbp),%rsi
add    $0x4,%rsi
lea    0xe73(%rip),%rdi
call   1040 <scanf@plt>
lea    -0x50(%rbp),%rsi
lea    0xe63(%rip),%rdi
call   1040 <scanf@plt>
lea    -0x50(%rbp),%rsi
add    $0x4,%rsi
lea    0xe4f(%rip),%rdi
call   1040 <scanf@plt>
lea    0xe43(%rip),%rdi
lea    -0x54(%rbp),%rsi
call   1040 <scanf@plt>
mov    -0x20(%rbp),%eax
cmp    -0x38(%rbp),%eax
jne    1275 <main+0x135>
mov    -0x1c(%rbp),%eax
cmp    -0x34(%rbp),%eax
jne    1275 <main+0x135>
mov    -0x20(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x1c(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x1c(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1791 <main+0x651>
mov    -0x20(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x50(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x4c(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x30(%rbp),%eax
imul   -0x48(%rbp),%eax
mov    -0x2c(%rbp),%ecx
imul   -0x44(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xec(%rbp)
mov    -0x30(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x2c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x48(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x44(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  -0x100(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xf8(%rbp),%xmm0
ff
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
mov    %eax,%ecx
mov    -0xec(%rbp),%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x50(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x4c(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%eax
imul   -0x40(%rbp),%eax
mov    -0xc(%rbp),%ecx
imul   -0x3c(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0xcc(%rbp)
mov    -0x10(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0xc(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x40(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x3c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  -0xe0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xd8(%rbp),%xmm0
ff
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
mov    %eax,%ecx
mov    -0xcc(%rbp),%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x70(%rbp),%xmm0
jb     14c8 <main+0x388>
mov    -0x20(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x1c(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x38(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x34(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x110(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    178c <main+0x64c>
xorps  %xmm0,%xmm0
ucomisd -0x78(%rbp),%xmm0
jb     1565 <main+0x425>
mov    -0x20(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x1c(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x128(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x38(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x34(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1787 <main+0x647>
mov    -0x20(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x1c(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x150(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x20(%rbp),%edi
sub    -0x38(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x1c(%rbp),%edi
sub    -0x34(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x38(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x34(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x80(%rbp),%xmm1
addsd  -0x88(%rbp),%xmm1
ff
addsd  -0x90(%rbp),%xmm1
ff
movsd  0x9a9(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
subsd  -0x80(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x98(%rbp),%xmm1
ff
subsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  -0x98(%rbp),%xmm1
ff
subsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x1c(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x38(%rbp),%edi
sub    -0x50(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x34(%rbp),%edi
sub    -0x4c(%rbp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd -0xa8(%rbp),%xmm0
ff
jbe    1775 <main+0x635>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
jmp    1782 <main+0x642>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
jmp    1787 <main+0x647>
jmp    178c <main+0x64c>
jmp    1791 <main+0x651>
movsd  -0x60(%rbp),%xmm1
cvtsi2sdl -0x54(%rbp),%xmm0
subsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    17bc <main+0x67c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    17d2 <main+0x692>
movsd  -0x60(%rbp),%xmm0
cvtsi2sdl -0x54(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x68(%rbp),%xmm1
cvtsi2sdl -0x54(%rbp),%xmm0
subsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    17fd <main+0x6bd>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1813 <main+0x6d3>
movsd  -0x68(%rbp),%xmm0
cvtsi2sdl -0x54(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
lea    0x7e1(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x150,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x70,%rsp
lea    0xeb5(%rip),%rbx
lea    0x30(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
lea    0x34(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
lea    0x48(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
lea    0x4c(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
lea    0x18(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
lea    0x1c(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
lea    0x6c(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    0x30(%rsp),%eax
mov    0x48(%rsp),%edi
sub    %eax,%edi
jne    1227 <main+0xe7>
mov    0x34(%rsp),%edx
mov    0x4c(%rsp),%ecx
cmp    %ecx,%edx
jne    122f <main+0xef>
sub    0x18(%rsp),%eax
mov    %eax,%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x34(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x8(%rsp),%xmm0
call   1060 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    0x30(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x10(%rsp)
mov    0x34(%rsp),%edi
jmp    1590 <main+0x450>
mov    0x4c(%rsp),%ecx
mov    0x34(%rsp),%edx
movq   $0x0,0x38(%rsp)
mov    %edi,0x50(%rsp)
sub    %edx,%ecx
mov    %ecx,0x54(%rsp)
mov    0x18(%rsp),%esi
mov    0x1c(%rsp),%ebx
sub    %eax,%esi
mov    %esi,0x20(%rsp)
sub    %edx,%ebx
mov    %ebx,0x24(%rsp)
imul   %edi,%esi
imul   %ecx,%ebx
add    %esi,%ebx
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x54(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    0x20(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x10(%rsp)
mov    0x24(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x10(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1060 <sqrt@plt>
mov    %eax,%ecx
mov    %ebx,%eax
cltd
idiv   %ecx
mov    %eax,%r14d
mov    0x30(%rsp),%r12d
mov    0x34(%rsp),%r15d
mov    0x48(%rsp),%eax
mov    0x4c(%rsp),%ecx
sub    %eax,%r12d
mov    %r12d,0x40(%rsp)
sub    %ecx,%r15d
mov    %r15d,0x44(%rsp)
movq   $0x0,0x58(%rsp)
mov    0x18(%rsp),%ebx
mov    0x1c(%rsp),%ebp
sub    %eax,%ebx
mov    %ebx,0x28(%rsp)
sub    %ecx,%ebp
mov    %ebp,0x2c(%rsp)
mov    %r12d,%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x44(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    0x28(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x10(%rsp)
mov    0x2c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x10(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1060 <sqrt@plt>
test   %r14d,%r14d
jle    1532 <main+0x3f2>
mov    %eax,%ecx
imul   %r12d,%ebx
imul   %r15d,%ebp
add    %ebx,%ebp
mov    %ebp,%eax
cltd
idiv   %ecx
mov    %eax,%ebx
mov    0x30(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x34(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x8(%rsp),%xmm0
call   1060 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x10(%rsp)
test   %ebx,%ebx
jle    15b5 <main+0x475>
mov    0x30(%rsp),%edi
sub    0x48(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x34(%rsp),%edi
sub    0x4c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x8(%rsp),%xmm0
call   1060 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    0x48(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x60(%rsp)
mov    0x4c(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x60(%rsp),%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm1
movsd  0x10(%rsp),%xmm3
movapd %xmm3,%xmm0
movsd  0x8(%rsp),%xmm4
addsd  %xmm4,%xmm0
addsd  %xmm1,%xmm0
mulsd  0xb9b(%rip),%xmm0
movapd %xmm0,%xmm2
subsd  %xmm3,%xmm2
mulsd  %xmm0,%xmm2
movapd %xmm0,%xmm3
subsd  %xmm4,%xmm3
mulsd  %xmm2,%xmm3
subsd  %xmm1,%xmm0
mulsd  %xmm3,%xmm0
call   1060 <sqrt@plt>
add    %eax,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    0x30(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x10(%rsp)
mov    0x34(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x10(%rsp),%xmm0
call   1060 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x10(%rsp)
mov    0x48(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x60(%rsp)
mov    0x4c(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x60(%rsp),%xmm0
call   1060 <sqrt@plt>
movsd  0x8(%rsp),%xmm4
movsd  0x10(%rsp),%xmm3
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
maxsd  %xmm0,%xmm3
jmp    15f4 <main+0x4b4>
mov    0x30(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x34(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x8(%rsp),%xmm0
call   1060 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    0x48(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x10(%rsp)
mov    0x4c(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x10(%rsp),%xmm0
call   1060 <sqrt@plt>
movsd  0x8(%rsp),%xmm4
cvtsi2sd %eax,%xmm3
jmp    15f4 <main+0x4b4>
mov    0x48(%rsp),%edi
sub    0x18(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
movsd  %xmm0,0x8(%rsp)
mov    0x4c(%rsp),%edi
sub    0x1c(%rsp),%edi
mov    $0x2,%esi
call   1050 <pow@plt>
addsd  0x8(%rsp),%xmm0
call   1060 <sqrt@plt>
cvtsi2sd %eax,%xmm4
movsd  0x10(%rsp),%xmm3
xorps  %xmm2,%xmm2
cvtsi2sdl 0x6c(%rsp),%xmm2
subsd  %xmm2,%xmm4
xorpd  %xmm1,%xmm1
xorpd  %xmm0,%xmm0
maxsd  %xmm4,%xmm0
subsd  %xmm2,%xmm3
maxsd  %xmm3,%xmm1
lea    0x9ef(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x70,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.Point = type { i32, i32, i32, i32, i32, i32 }
@.str = [3 x i8] c"%i\00"
@.str.1 = [12 x i8] c"%0.2f %0.2f\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca %struct.Point
%3 = alloca %struct.Point
%4 = alloca %struct.Point
%5 = alloca i32
%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
store i32 0, i32* %1
%18 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%19 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %18)
%20 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%21 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %20)
%22 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%23 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %22)
%24 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%25 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %24)
%26 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%27 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %26)
%28 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%29 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %28)
%30 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %5)
%31 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%32 = load i32, i32* %31
%33 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%34 = load i32, i32* %33
%35 = icmp eq i32 %32, %34
br i1 %35, label %36, label %73
36: ; preds = %0
%37 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%38 = load i32, i32* %37
%39 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%40 = load i32, i32* %39
%41 = icmp eq i32 %38, %40
br i1 %41, label %42, label %73
42: ; preds = %36
%43 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%44 = load i32, i32* %43
%45 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%46 = load i32, i32* %45
%47 = sub nsw i32 %44, %46
%48 = call double @pow(i32 %47, i32 2)
%49 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%50 = load i32, i32* %49
%51 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%52 = load i32, i32* %51
%53 = sub nsw i32 %50, %52
%54 = call double @pow(i32 %53, i32 2)
%55 = fadd double %48, %54
%56 = call i32 @sqrt(double %55)
%57 = sitofp i32 %56 to double
store double %57, double* %6
%58 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%59 = load i32, i32* %58
%60 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%61 = load i32, i32* %60
%62 = sub nsw i32 %59, %61
%63 = call double @pow(i32 %62, i32 2)
%64 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%65 = load i32, i32* %64
%66 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%67 = load i32, i32* %66
%68 = sub nsw i32 %65, %67
%69 = call double @pow(i32 %68, i32 2)
%70 = fadd double %63, %69
%71 = call i32 @sqrt(double %70)
%72 = sitofp i32 %71 to double
store double %72, double* %7
br label %381
73: ; preds = %36, %0
%74 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%75 = load i32, i32* %74
%76 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%77 = load i32, i32* %76
%78 = sub nsw i32 %75, %77
%79 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 2
store i32 %78, i32* %79
%80 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%81 = load i32, i32* %80
%82 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%83 = load i32, i32* %82
%84 = sub nsw i32 %81, %83
%85 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 3
store i32 %84, i32* %85
%86 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%87 = load i32, i32* %86
%88 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%89 = load i32, i32* %88
%90 = sub nsw i32 %87, %89
%91 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 2
store i32 %90, i32* %91
%92 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%93 = load i32, i32* %92
%94 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%95 = load i32, i32* %94
%96 = sub nsw i32 %93, %95
%97 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 3
store i32 %96, i32* %97
%98 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%99 = load i32, i32* %98
%100 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%101 = load i32, i32* %100
%102 = sub nsw i32 %99, %101
%103 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 2
store i32 %102, i32* %103
%104 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%105 = load i32, i32* %104
%106 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%107 = load i32, i32* %106
%108 = sub nsw i32 %105, %107
%109 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 3
store i32 %108, i32* %109
%110 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 2
%111 = load i32, i32* %110
%112 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 2
%113 = load i32, i32* %112
%114 = mul nsw i32 %111, %113
%115 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 3
%116 = load i32, i32* %115
%117 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 3
%118 = load i32, i32* %117
%119 = mul nsw i32 %116, %118
%120 = add nsw i32 %114, %119
%121 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 2
%122 = load i32, i32* %121
%123 = call double @pow(i32 %122, i32 2)
%124 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 3
%125 = load i32, i32* %124
%126 = call double @pow(i32 %125, i32 2)
%127 = fadd double %123, %126
%128 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 2
%129 = load i32, i32* %128
%130 = call double @pow(i32 %129, i32 2)
%131 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 3
%132 = load i32, i32* %131
%133 = call double @pow(i32 %132, i32 2)
%134 = fadd double %130, %133
%135 = fmul double %127, %134
%136 = call i32 @sqrt(double %135)
%137 = sdiv i32 %120, %136
%138 = sitofp i32 %137 to double
store double %138, double* %8
%139 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%140 = load i32, i32* %139
%141 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%142 = load i32, i32* %141
%143 = sub nsw i32 %140, %142
%144 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 4
store i32 %143, i32* %144
%145 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%146 = load i32, i32* %145
%147 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%148 = load i32, i32* %147
%149 = sub nsw i32 %146, %148
%150 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 5
store i32 %149, i32* %150
%151 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%152 = load i32, i32* %151
%153 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%154 = load i32, i32* %153
%155 = sub nsw i32 %152, %154
%156 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 4
store i32 %155, i32* %156
%157 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%158 = load i32, i32* %157
%159 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%160 = load i32, i32* %159
%161 = sub nsw i32 %158, %160
%162 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 5
store i32 %161, i32* %162
%163 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%164 = load i32, i32* %163
%165 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%166 = load i32, i32* %165
%167 = sub nsw i32 %164, %166
%168 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 4
store i32 %167, i32* %168
%169 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%170 = load i32, i32* %169
%171 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%172 = load i32, i32* %171
%173 = sub nsw i32 %170, %172
%174 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 5
store i32 %173, i32* %174
%175 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 4
%176 = load i32, i32* %175
%177 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 4
%178 = load i32, i32* %177
%179 = mul nsw i32 %176, %178
%180 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 5
%181 = load i32, i32* %180
%182 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 5
%183 = load i32, i32* %182
%184 = mul nsw i32 %181, %183
%185 = add nsw i32 %179, %184
%186 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 4
%187 = load i32, i32* %186
%188 = call double @pow(i32 %187, i32 2)
%189 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 5
%190 = load i32, i32* %189
%191 = call double @pow(i32 %190, i32 2)
%192 = fadd double %188, %191
%193 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 4
%194 = load i32, i32* %193
%195 = call double @pow(i32 %194, i32 2)
%196 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 5
%197 = load i32, i32* %196
%198 = call double @pow(i32 %197, i32 2)
%199 = fadd double %195, %198
%200 = fmul double %192, %199
%201 = call i32 @sqrt(double %200)
%202 = sdiv i32 %185, %201
%203 = sitofp i32 %202 to double
store double %203, double* %9
%204 = load double, double* %8
%205 = fcmp ole double %204, 0.000000e+00
br i1 %205, label %206, label %237
206: ; preds = %73
%207 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%208 = load i32, i32* %207
%209 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%210 = load i32, i32* %209
%211 = sub nsw i32 %208, %210
%212 = call double @pow(i32 %211, i32 2)
%213 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%214 = load i32, i32* %213
%215 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%216 = load i32, i32* %215
%217 = sub nsw i32 %214, %216
%218 = call double @pow(i32 %217, i32 2)
%219 = fadd double %212, %218
%220 = call i32 @sqrt(double %219)
%221 = sitofp i32 %220 to double
store double %221, double* %6
%222 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%223 = load i32, i32* %222
%224 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%225 = load i32, i32* %224
%226 = sub nsw i32 %223, %225
%227 = call double @pow(i32 %226, i32 2)
%228 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%229 = load i32, i32* %228
%230 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%231 = load i32, i32* %230
%232 = sub nsw i32 %229, %231
%233 = call double @pow(i32 %232, i32 2)
%234 = fadd double %227, %233
%235 = call i32 @sqrt(double %234)
%236 = sitofp i32 %235 to double
store double %236, double* %7
br label %380
237: ; preds = %73
%238 = load double, double* %9
%239 = fcmp ole double %238, 0.000000e+00
br i1 %239, label %240, label %271
240: ; preds = %237
%241 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%242 = load i32, i32* %241
%243 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%244 = load i32, i32* %243
%245 = sub nsw i32 %242, %244
%246 = call double @pow(i32 %245, i32 2)
%247 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%248 = load i32, i32* %247
%249 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%250 = load i32, i32* %249
%251 = sub nsw i32 %248, %250
%252 = call double @pow(i32 %251, i32 2)
%253 = fadd double %246, %252
%254 = call i32 @sqrt(double %253)
%255 = sitofp i32 %254 to double
store double %255, double* %7
%256 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%257 = load i32, i32* %256
%258 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%259 = load i32, i32* %258
%260 = sub nsw i32 %257, %259
%261 = call double @pow(i32 %260, i32 2)
%262 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%263 = load i32, i32* %262
%264 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%265 = load i32, i32* %264
%266 = sub nsw i32 %263, %265
%267 = call double @pow(i32 %266, i32 2)
%268 = fadd double %261, %267
%269 = call i32 @sqrt(double %268)
%270 = sitofp i32 %269 to double
store double %270, double* %6
br label %379
271: ; preds = %237
%272 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%273 = load i32, i32* %272
%274 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%275 = load i32, i32* %274
%276 = sub nsw i32 %273, %275
%277 = call double @pow(i32 %276, i32 2)
%278 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%279 = load i32, i32* %278
%280 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%281 = load i32, i32* %280
%282 = sub nsw i32 %279, %281
%283 = call double @pow(i32 %282, i32 2)
%284 = fadd double %277, %283
%285 = call i32 @sqrt(double %284)
%286 = sitofp i32 %285 to double
store double %286, double* %10
%287 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%288 = load i32, i32* %287
%289 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%290 = load i32, i32* %289
%291 = sub nsw i32 %288, %290
%292 = call double @pow(i32 %291, i32 2)
%293 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%294 = load i32, i32* %293
%295 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%296 = load i32, i32* %295
%297 = sub nsw i32 %294, %296
%298 = call double @pow(i32 %297, i32 2)
%299 = fadd double %292, %298
%300 = call i32 @sqrt(double %299)
%301 = sitofp i32 %300 to double
store double %301, double* %11
%302 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%303 = load i32, i32* %302
%304 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%305 = load i32, i32* %304
%306 = sub nsw i32 %303, %305
%307 = call double @pow(i32 %306, i32 2)
%308 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%309 = load i32, i32* %308
%310 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%311 = load i32, i32* %310
%312 = sub nsw i32 %309, %311
%313 = call double @pow(i32 %312, i32 2)
%314 = fadd double %307, %313
%315 = call i32 @sqrt(double %314)
%316 = sitofp i32 %315 to double
store double %316, double* %12
%317 = load double, double* %10
%318 = load double, double* %11
%319 = fadd double %317, %318
%320 = load double, double* %12
%321 = fadd double %319, %320
%322 = fmul double 5.000000e-01, %321
store double %322, double* %13
%323 = load double, double* %13
%324 = load double, double* %13
%325 = load double, double* %10
%326 = fsub double %324, %325
%327 = fmul double %323, %326
%328 = load double, double* %13
%329 = load double, double* %11
%330 = fsub double %328, %329
%331 = fmul double %327, %330
%332 = load double, double* %13
%333 = load double, double* %12
%334 = fsub double %332, %333
%335 = fmul double %331, %334
%336 = call i32 @sqrt(double %335)
%337 = mul nsw i32 2, %336
%338 = sitofp i32 %337 to double
%339 = load double, double* %11
%340 = fdiv double %338, %339
store double %340, double* %6
%341 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 0
%342 = load i32, i32* %341
%343 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%344 = load i32, i32* %343
%345 = sub nsw i32 %342, %344
%346 = call double @pow(i32 %345, i32 2)
%347 = getelementptr inbounds %struct.Point, %struct.Point* %2, i32 0, i32 1
%348 = load i32, i32* %347
%349 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%350 = load i32, i32* %349
%351 = sub nsw i32 %348, %350
%352 = call double @pow(i32 %351, i32 2)
%353 = fadd double %346, %352
%354 = call i32 @sqrt(double %353)
%355 = sitofp i32 %354 to double
store double %355, double* %14
%356 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 0
%357 = load i32, i32* %356
%358 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 0
%359 = load i32, i32* %358
%360 = sub nsw i32 %357, %359
%361 = call double @pow(i32 %360, i32 2)
%362 = getelementptr inbounds %struct.Point, %struct.Point* %3, i32 0, i32 1
%363 = load i32, i32* %362
%364 = getelementptr inbounds %struct.Point, %struct.Point* %4, i32 0, i32 1
%365 = load i32, i32* %364
%366 = sub nsw i32 %363, %365
%367 = call double @pow(i32 %366, i32 2)
%368 = fadd double %361, %367
%369 = call i32 @sqrt(double %368)
%370 = sitofp i32 %369 to double
store double %370, double* %15
%371 = load double, double* %14
%372 = load double, double* %15
%373 = fcmp ogt double %371, %372
br i1 %373, label %374, label %376
374: ; preds = %271
%375 = load double, double* %14
store double %375, double* %7
br label %378
376: ; preds = %271
%377 = load double, double* %15
store double %377, double* %7
br label %378
378: ; preds = %376, %374
br label %379
379: ; preds = %378, %240
br label %380
380: ; preds = %379, %206
br label %381
381: ; preds = %380, %42
%382 = load double, double* %6
%383 = load i32, i32* %5
%384 = sitofp i32 %383 to double
%385 = fsub double %382, %384
%386 = fcmp olt double %385, 0.000000e+00
br i1 %386, label %387, label %388
387: ; preds = %381
store double 0.000000e+00, double* %16
br label %393
388: ; preds = %381
%389 = load double, double* %6
%390 = load i32, i32* %5
%391 = sitofp i32 %390 to double
%392 = fsub double %389, %391
store double %392, double* %16
br label %393
393: ; preds = %388, %387
%394 = load double, double* %7
%395 = load i32, i32* %5
%396 = sitofp i32 %395 to double
%397 = fsub double %394, %396
%398 = fcmp olt double %397, 0.000000e+00
br i1 %398, label %399, label %400
399: ; preds = %393
store double 0.000000e+00, double* %17
br label %405
400: ; preds = %393
%401 = load double, double* %7
%402 = load i32, i32* %5
%403 = sitofp i32 %402 to double
%404 = fsub double %401, %403
store double %404, double* %17
br label %405
405: ; preds = %400, %399
%406 = load double, double* %16
%407 = load double, double* %17
%408 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), double %406, double %407)
ret i32 0
}

LLVM IR (-O2):
%struct.Point = type { i32, i32, i32, i32, i32, i32 }
@.str = [3 x i8] c"%i\00"
@.str.1 = [12 x i8] c"%0.2f %0.2f\00"
define i32 @main() {
%1 = alloca %struct.Point
%2 = alloca %struct.Point
%3 = alloca %struct.Point
%4 = alloca i32
%5 = bitcast %struct.Point* %1 to i8*
%6 = bitcast %struct.Point* %2 to i8*
%7 = bitcast %struct.Point* %3 to i8*
%8 = bitcast i32* %4 to i8*
%9 = getelementptr inbounds %struct.Point, %struct.Point* %1, i64 0, i32 0
%10 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %9)
%11 = getelementptr inbounds %struct.Point, %struct.Point* %1, i64 0, i32 1
%12 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %11)
%13 = getelementptr inbounds %struct.Point, %struct.Point* %2, i64 0, i32 0
%14 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %13)
%15 = getelementptr inbounds %struct.Point, %struct.Point* %2, i64 0, i32 1
%16 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %15)
%17 = getelementptr inbounds %struct.Point, %struct.Point* %3, i64 0, i32 0
%18 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %17)
%19 = getelementptr inbounds %struct.Point, %struct.Point* %3, i64 0, i32 1
%20 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %19)
%21 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %4)
%22 = load i32, i32* %9
%23 = load i32, i32* %13
%24 = icmp eq i32 %23, %22
br i1 %24, label %28, label %25
25: ; preds = %0
%26 = load i32, i32* %15
%27 = load i32, i32* %11
br label %54
28: ; preds = %0
%29 = load i32, i32* %11
%30 = load i32, i32* %15
%31 = icmp eq i32 %29, %30
br i1 %31, label %32, label %54
32: ; preds = %28
%33 = load i32, i32* %17
%34 = sub nsw i32 %22, %33
%35 = call double @pow(i32 %34, i32 2)
%36 = load i32, i32* %11
%37 = load i32, i32* %19
%38 = sub nsw i32 %36, %37
%39 = call double @pow(i32 %38, i32 2)
%40 = fadd double %35, %39
%41 = call i32 @sqrt(double %40)
%42 = sitofp i32 %41 to double
%43 = load i32, i32* %9
%44 = load i32, i32* %17
%45 = sub nsw i32 %43, %44
%46 = call double @pow(i32 %45, i32 2)
%47 = load i32, i32* %11
%48 = load i32, i32* %19
%49 = sub nsw i32 %47, %48
%50 = call double @pow(i32 %49, i32 2)
%51 = fadd double %46, %50
%52 = call i32 @sqrt(double %51)
%53 = sitofp i32 %52 to double
br label %224
54: ; preds = %25, %28
%55 = phi i32 [ %27, %25 ], [ %29, %28 ]
%56 = phi i32 [ %26, %25 ], [ %30, %28 ]
%57 = getelementptr inbounds %struct.Point, %struct.Point* %1, i64 0, i32 2
store i32 0, i32* %57
%58 = getelementptr inbounds %struct.Point, %struct.Point* %1, i64 0, i32 3
store i32 0, i32* %58
%59 = sub nsw i32 %23, %22
%60 = getelementptr inbounds %struct.Point, %struct.Point* %2, i64 0, i32 2
store i32 %59, i32* %60
%61 = sub nsw i32 %56, %55
%62 = getelementptr inbounds %struct.Point, %struct.Point* %2, i64 0, i32 3
store i32 %61, i32* %62
%63 = load i32, i32* %17
%64 = sub nsw i32 %63, %22
%65 = getelementptr inbounds %struct.Point, %struct.Point* %3, i64 0, i32 2
store i32 %64, i32* %65
%66 = load i32, i32* %19
%67 = sub nsw i32 %66, %55
%68 = getelementptr inbounds %struct.Point, %struct.Point* %3, i64 0, i32 3
store i32 %67, i32* %68
%69 = mul nsw i32 %64, %59
%70 = mul nsw i32 %67, %61
%71 = add nsw i32 %70, %69
%72 = call double @pow(i32 %59, i32 2)
%73 = load i32, i32* %62
%74 = call double @pow(i32 %73, i32 2)
%75 = fadd double %72, %74
%76 = load i32, i32* %65
%77 = call double @pow(i32 %76, i32 2)
%78 = load i32, i32* %68
%79 = call double @pow(i32 %78, i32 2)
%80 = fadd double %77, %79
%81 = fmul double %75, %80
%82 = call i32 @sqrt(double %81)
%83 = sdiv i32 %71, %82
%84 = load i32, i32* %9
%85 = load i32, i32* %13
%86 = sub nsw i32 %84, %85
%87 = getelementptr inbounds %struct.Point, %struct.Point* %1, i64 0, i32 4
store i32 %86, i32* %87
%88 = load i32, i32* %11
%89 = load i32, i32* %15
%90 = sub nsw i32 %88, %89
%91 = getelementptr inbounds %struct.Point, %struct.Point* %1, i64 0, i32 5
store i32 %90, i32* %91
%92 = getelementptr inbounds %struct.Point, %struct.Point* %2, i64 0, i32 4
store i32 0, i32* %92
%93 = getelementptr inbounds %struct.Point, %struct.Point* %2, i64 0, i32 5
store i32 0, i32* %93
%94 = load i32, i32* %17
%95 = sub nsw i32 %94, %85
%96 = getelementptr inbounds %struct.Point, %struct.Point* %3, i64 0, i32 4
store i32 %95, i32* %96
%97 = load i32, i32* %19
%98 = sub nsw i32 %97, %89
%99 = getelementptr inbounds %struct.Point, %struct.Point* %3, i64 0, i32 5
store i32 %98, i32* %99
%100 = call double @pow(i32 %86, i32 2)
%101 = load i32, i32* %91
%102 = call double @pow(i32 %101, i32 2)
%103 = fadd double %100, %102
%104 = load i32, i32* %96
%105 = call double @pow(i32 %104, i32 2)
%106 = load i32, i32* %99
%107 = call double @pow(i32 %106, i32 2)
%108 = fadd double %105, %107
%109 = fmul double %103, %108
%110 = call i32 @sqrt(double %109)
%111 = icmp slt i32 %83, 1
br i1 %111, label %112, label %135
112: ; preds = %54
%113 = load i32, i32* %9
%114 = load i32, i32* %17
%115 = sub nsw i32 %113, %114
%116 = call double @pow(i32 %115, i32 2)
%117 = load i32, i32* %11
%118 = load i32, i32* %19
%119 = sub nsw i32 %117, %118
%120 = call double @pow(i32 %119, i32 2)
%121 = fadd double %116, %120
%122 = call i32 @sqrt(double %121)
%123 = sitofp i32 %122 to double
%124 = load i32, i32* %13
%125 = load i32, i32* %17
%126 = sub nsw i32 %124, %125
%127 = call double @pow(i32 %126, i32 2)
%128 = load i32, i32* %15
%129 = load i32, i32* %19
%130 = sub nsw i32 %128, %129
%131 = call double @pow(i32 %130, i32 2)
%132 = fadd double %127, %131
%133 = call i32 @sqrt(double %132)
%134 = sitofp i32 %133 to double
br label %224
135: ; preds = %54
%136 = mul nsw i32 %95, %86
%137 = mul nsw i32 %98, %90
%138 = add nsw i32 %137, %136
%139 = sdiv i32 %138, %110
%140 = icmp slt i32 %139, 1
%141 = load i32, i32* %9
%142 = load i32, i32* %17
%143 = sub nsw i32 %141, %142
%144 = call double @pow(i32 %143, i32 2)
%145 = load i32, i32* %11
%146 = load i32, i32* %19
%147 = sub nsw i32 %145, %146
%148 = call double @pow(i32 %147, i32 2)
%149 = fadd double %144, %148
%150 = call i32 @sqrt(double %149)
%151 = sitofp i32 %150 to double
br i1 %140, label %152, label %164
152: ; preds = %135
%153 = load i32, i32* %13
%154 = load i32, i32* %17
%155 = sub nsw i32 %153, %154
%156 = call double @pow(i32 %155, i32 2)
%157 = load i32, i32* %15
%158 = load i32, i32* %19
%159 = sub nsw i32 %157, %158
%160 = call double @pow(i32 %159, i32 2)
%161 = fadd double %156, %160
%162 = call i32 @sqrt(double %161)
%163 = sitofp i32 %162 to double
br label %224
164: ; preds = %135
%165 = load i32, i32* %9
%166 = load i32, i32* %13
%167 = sub nsw i32 %165, %166
%168 = call double @pow(i32 %167, i32 2)
%169 = load i32, i32* %11
%170 = load i32, i32* %15
%171 = sub nsw i32 %169, %170
%172 = call double @pow(i32 %171, i32 2)
%173 = fadd double %168, %172
%174 = call i32 @sqrt(double %173)
%175 = sitofp i32 %174 to double
%176 = load i32, i32* %13
%177 = load i32, i32* %17
%178 = sub nsw i32 %176, %177
%179 = call double @pow(i32 %178, i32 2)
%180 = load i32, i32* %15
%181 = load i32, i32* %19
%182 = sub nsw i32 %180, %181
%183 = call double @pow(i32 %182, i32 2)
%184 = fadd double %179, %183
%185 = call i32 @sqrt(double %184)
%186 = sitofp i32 %185 to double
%187 = fadd double %151, %175
%188 = fadd double %187, %186
%189 = fmul double %188, 5.000000e-01
%190 = fsub double %189, %151
%191 = fmul double %189, %190
%192 = fsub double %189, %175
%193 = fmul double %192, %191
%194 = fsub double %189, %186
%195 = fmul double %194, %193
%196 = call i32 @sqrt(double %195)
%197 = shl nsw i32 %196, 1
%198 = sitofp i32 %197 to double
%199 = fdiv double %198, %175
%200 = load i32, i32* %9
%201 = load i32, i32* %17
%202 = sub nsw i32 %200, %201
%203 = call double @pow(i32 %202, i32 2)
%204 = load i32, i32* %11
%205 = load i32, i32* %19
%206 = sub nsw i32 %204, %205
%207 = call double @pow(i32 %206, i32 2)
%208 = fadd double %203, %207
%209 = call i32 @sqrt(double %208)
%210 = sitofp i32 %209 to double
%211 = load i32, i32* %13
%212 = load i32, i32* %17
%213 = sub nsw i32 %211, %212
%214 = call double @pow(i32 %213, i32 2)
%215 = load i32, i32* %15
%216 = load i32, i32* %19
%217 = sub nsw i32 %215, %216
%218 = call double @pow(i32 %217, i32 2)
%219 = fadd double %214, %218
%220 = call i32 @sqrt(double %219)
%221 = sitofp i32 %220 to double
%222 = fcmp ogt double %210, %221
%223 = select i1 %222, double %210, double %221
br label %224
224: ; preds = %112, %164, %152, %32
%225 = phi double [ %53, %32 ], [ %134, %112 ], [ %151, %152 ], [ %223, %164 ]
%226 = phi double [ %42, %32 ], [ %123, %112 ], [ %163, %152 ], [ %199, %164 ]
%227 = load i32, i32* %4
%228 = sitofp i32 %227 to double
%229 = fsub double %226, %228
%230 = fcmp olt double %229, 0.000000e+00
%231 = select i1 %230, double 0.000000e+00, double %229
%232 = fsub double %225, %228
%233 = fcmp olt double %232, 0.000000e+00
%234 = select i1 %233, double 0.000000e+00, double %232
%235 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), double %231, double %234)
ret i32 0
}