// File: jamesliu516[P]amrdg2d/wall4amrdg2013.cpp
// Function: getRadius(pointxy const*, pointxy const*, pointxy const*)
double getRadius(const PXYZ *pt1, const PXYZ *pt2,const PXYZ *pt3)
{
    double rd,dls1,dls2,dls3,dls4;
    double a1,b1,a2,b2;
    dls1=(pt1->x-pt2->x)*(pt1->x-pt2->x)+(pt1->y-pt2->y)*(pt1->y-pt2->y);
    dls2=(pt1->x-pt3->x)*(pt1->x-pt3->x)+(pt1->y-pt3->y)*(pt1->y-pt3->y);
    dls3=(pt2->x-pt3->x)*(pt2->x-pt3->x)+(pt2->y-pt3->y)*(pt2->y-pt3->y);
    dls4=2.0*(pt3->x * (pt2->y - pt1->y) + pt2->x * (pt1->y - pt3->y) 
        + pt1->x * (pt3->y-pt2->y));
    a1=pt2->x-pt1->x;
    b1=pt2->y-pt1->y;

    a2=pt3->x-pt1->x;
    b2=pt3->y-pt1->y;
    rd = sqrt(dls1*dls2*dls3)/(fabs(dls4)+1.0e-18);
    if(fabs(a1*b2-b1*a2)<1.0e-12) rd=1.0e15;
    return rd;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movq 0x60(%rsp), %rax
movsd (%rax), %xmm0
movq 0x58(%rsp), %rax
subsd (%rax), %xmm0
movq 0x60(%rsp), %rax
movsd (%rax), %xmm2
movq 0x58(%rsp), %rax
subsd (%rax), %xmm2
movq 0x60(%rsp), %rax
movsd 0x8(%rax), %xmm1
movq 0x58(%rsp), %rax
subsd 0x8(%rax), %xmm1
movq 0x60(%rsp), %rax
movsd 0x8(%rax), %xmm3
movq 0x58(%rsp), %rax
subsd 0x8(%rax), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x60(%rsp), %rax
movsd (%rax), %xmm0
movq 0x50(%rsp), %rax
subsd (%rax), %xmm0
movq 0x60(%rsp), %rax
movsd (%rax), %xmm2
movq 0x50(%rsp), %rax
subsd (%rax), %xmm2
movq 0x60(%rsp), %rax
movsd 0x8(%rax), %xmm1
movq 0x50(%rsp), %rax
subsd 0x8(%rax), %xmm1
movq 0x60(%rsp), %rax
movsd 0x8(%rax), %xmm3
movq 0x50(%rsp), %rax
subsd 0x8(%rax), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x58(%rsp), %rax
movsd (%rax), %xmm0
movq 0x50(%rsp), %rax
subsd (%rax), %xmm0
movq 0x58(%rsp), %rax
movsd (%rax), %xmm2
movq 0x50(%rsp), %rax
subsd (%rax), %xmm2
movq 0x58(%rsp), %rax
movsd 0x8(%rax), %xmm1
movq 0x50(%rsp), %rax
subsd 0x8(%rax), %xmm1
movq 0x58(%rsp), %rax
movsd 0x8(%rax), %xmm3
movq 0x50(%rsp), %rax
subsd 0x8(%rax), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x50(%rsp), %rax
movsd (%rax), %xmm0
movq 0x58(%rsp), %rax
movsd 0x8(%rax), %xmm2
movq 0x60(%rsp), %rax
subsd 0x8(%rax), %xmm2
movq 0x58(%rsp), %rax
movsd (%rax), %xmm1
movq 0x60(%rsp), %rax
movsd 0x8(%rax), %xmm3
movq 0x50(%rsp), %rax
subsd 0x8(%rax), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x60(%rsp), %rax
movsd (%rax), %xmm1
movq 0x50(%rsp), %rax
movsd 0x8(%rax), %xmm2
movq 0x58(%rsp), %rax
subsd 0x8(%rax), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x16930(%rip), %xmm0    # 0x3f0a0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x58(%rsp), %rax
movsd (%rax), %xmm0
movq 0x60(%rsp), %rax
subsd (%rax), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x58(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0x60(%rsp), %rax
subsd 0x8(%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x50(%rsp), %rax
movsd (%rax), %xmm0
movq 0x60(%rsp), %rax
subsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x50(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0x60(%rsp), %rax
subsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x40(%rsp), %xmm0
mulsd 0x38(%rsp), %xmm0
mulsd 0x30(%rsp), %xmm0
callq 0x31c0
movsd 0x28(%rsp), %xmm1
movaps 0x169fe(%rip), %xmm2    # 0x3f200
pand %xmm2, %xmm1
movsd 0x16ff2(%rip), %xmm2    # 0x3f800
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x20(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x18(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movaps 0x169a6(%rip), %xmm0    # 0x3f200
pand %xmm0, %xmm1
movsd 0x16f92(%rip), %xmm0    # 0x3f7f8
ucomisd %xmm1, %xmm0
jbe 0x2887a
movsd 0x16f94(%rip), %xmm0    # 0x3f808
movsd %xmm0, 0x48(%rsp)
movsd 0x48(%rsp), %xmm0
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)