// File: /workspace/github_cpp_makefile_star2_O3/thierry7100[P]CutOptim/include/Geometry.h
// Function: Segment::isCrossingNoEnd(Segment const*, Point*, bool*) const
inline int isCrossingNoEnd(const Segment *s1, Point *ResIntersect, bool *IncludedSegment=nullptr) const
        {
            Point Ai;
            if ( IncludedSegment != nullptr ) *IncludedSegment = false;     //  Set default answer
            if ( !hasIntersect(s1, Ai) )
            {
                //  Check if same segment (same line...), that is A point of this is on s1
                if ( IncludedSegment != nullptr && fabs(s1->a*xA + s1->b*yA  + s1->c) < my_Default_Precision )
                    *IncludedSegment = true;
                return 0;     // No intersection,
            }
            if ( ResIntersect != NULL) *ResIntersect = Ai;
            return InSegmentNoEnd(Ai) && s1->InSegmentNoEnd(Ai);
        }

// Assembly:
testq %rcx, %rcx
je 0x295be
movb $0x0, (%rcx)
movsd (%rsi), %xmm1
movsd 0x8(%rsi), %xmm2
movsd (%rdi), %xmm5
movsd 0x8(%rdi), %xmm4
movapd %xmm2, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm1, %xmm3
mulsd %xmm4, %xmm3
subsd %xmm0, %xmm3
movapd 0x14a44(%rip), %xmm6    # 0x3e030
andpd %xmm3, %xmm6
movsd 0x14a68(%rip), %xmm0    # 0x3e060
ucomisd %xmm6, %xmm0
ja 0x2975b
movsd 0x10(%rsi), %xmm6
movsd 0x10(%rdi), %xmm0
unpcklpd %xmm0, %xmm4            # xmm4 = xmm4[0],xmm0[0]
unpcklpd %xmm6, %xmm0            # xmm0 = xmm0[0],xmm6[0]
unpcklpd %xmm1, %xmm6            # xmm6 = xmm6[0],xmm1[0]
mulpd %xmm6, %xmm4
unpcklpd %xmm5, %xmm2            # xmm2 = xmm2[0],xmm5[0]
mulpd %xmm2, %xmm0
subpd %xmm4, %xmm0
unpcklpd %xmm3, %xmm3            # xmm3 = xmm3[0,0]
divpd %xmm3, %xmm0
testq %rdx, %rdx
je 0x29639
movupd %xmm0, (%rdx)
movsd 0x38(%rdi), %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
ja 0x29786
ucomisd 0x40(%rdi), %xmm0
ja 0x29786
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
movsd 0x48(%rdi), %xmm1
ucomisd %xmm2, %xmm1
ja 0x29786
ucomisd 0x50(%rdi), %xmm2
ja 0x29786
movupd 0x18(%rdi), %xmm1
movhpd 0x28(%rdi), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd %xmm0, %xmm3
subpd %xmm1, %xmm3
andpd 0x1499f(%rip), %xmm3    # 0x3e030
pshufd $0xee, %xmm3, %xmm4     # xmm4 = xmm3[2,3,2,3]
addsd %xmm3, %xmm4
movsd 0x149f6(%rip), %xmm1    # 0x3e098
ucomisd %xmm4, %xmm1
ja 0x29786
movupd 0x20(%rdi), %xmm3
movhpd 0x30(%rdi), %xmm3       # xmm3 = xmm3[0],mem[0]
movapd %xmm0, %xmm4
subpd %xmm3, %xmm4
andpd 0x1496a(%rip), %xmm4    # 0x3e030
pshufd $0xee, %xmm4, %xmm3     # xmm3 = xmm4[2,3,2,3]
addsd %xmm4, %xmm3
ucomisd %xmm3, %xmm1
ja 0x29786
movsd 0x38(%rsi), %xmm3
ucomisd %xmm0, %xmm3
ja 0x29786
ucomisd 0x40(%rsi), %xmm0
ja 0x29786
movsd 0x48(%rsi), %xmm3
ucomisd %xmm2, %xmm3
ja 0x29786
ucomisd 0x50(%rsi), %xmm2
ja 0x29786
movsd 0x18(%rsi), %xmm2
movhpd 0x28(%rsi), %xmm2       # xmm2 = xmm2[0],mem[0]
movapd %xmm0, %xmm3
subpd %xmm2, %xmm3
andpd 0x1490d(%rip), %xmm3    # 0x3e030
pshufd $0xee, %xmm3, %xmm2     # xmm2 = xmm3[2,3,2,3]
addsd %xmm3, %xmm2
ucomisd %xmm2, %xmm1
ja 0x29786
movsd 0x20(%rsi), %xmm2
movhpd 0x30(%rsi), %xmm2       # xmm2 = xmm2[0],mem[0]
subpd %xmm2, %xmm0
andpd 0x148e8(%rip), %xmm0    # 0x3e030
pshufd $0xee, %xmm0, %xmm2     # xmm2 = xmm0[2,3,2,3]
addsd %xmm0, %xmm2
xorl %eax, %eax
ucomisd %xmm2, %xmm1
setbe %al
retq
xorl %eax, %eax
testq %rcx, %rcx
je 0x29786
mulsd 0x28(%rdi), %xmm2
mulsd 0x18(%rdi), %xmm1
addsd %xmm2, %xmm1
addsd 0x10(%rsi), %xmm1
andpd 0x148b3(%rip), %xmm1    # 0x3e030
ucomisd %xmm1, %xmm0
jbe 0x29786
movb $0x1, (%rcx)
retq
nop