// File: /workspace/github_cpp_makefile_star2_O1/realuptime[P]PolyDetector/PolyDetector.cpp
// Function: doIntersect(vec const&, vec const&, vec const&, vec const&)
static bool doIntersect(const PointType &p1, const PointType &q1, const PointType &p2, const PointType &q2)
{
    // Find the four orientations needed for general and
    // special cases
    int o1 = orientation(p1, q1, p2);
    int o2 = orientation(p1, q1, q2);
    int o3 = orientation(p2, q2, p1);
    int o4 = orientation(p2, q2, q1);
  
    // General case
    if (o1 != o2 && o3 != o4)
        return true;
  
    // Special Cases
    // p1, q1 and p2 are colinear and p2 lies on segment p1q1
    if (o1 == 0 && onSegment(p1, p2, q1)) return true;
  
    // p1, q1 and q2 are colinear and q2 lies on segment p1q1
    if (o2 == 0 && onSegment(p1, q2, q1)) return true;
  
    // p2, q2 and p1 are colinear and p1 lies on segment p2q2
    if (o3 == 0 && onSegment(p2, p1, q2)) return true;
  
     // p2, q2 and q1 are colinear and q1 lies on segment p2q2
    if (o4 == 0 && onSegment(p2, q1, q2)) return true;
  
    return false; // Doesn't fall in any of the above cases
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r8
movq %rsi, %r14
movq %rdi, %r12
movss (%rdi), %xmm1
movss 0x4(%rdi), %xmm0
movss (%rdx), %xmm2
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movss 0x4(%rdx), %xmm6
movaps %xmm6, %xmm5
unpcklps %xmm0, %xmm5            # xmm5 = xmm5[0],xmm0[0],xmm5[1],xmm0[1]
movlhps %xmm5, %xmm5            # xmm5 = xmm5[0,0]
movss (%rsi), %xmm3
movss 0x4(%rsi), %xmm2
movss (%rcx), %xmm4
movss 0x4(%rcx), %xmm7
movaps %xmm7, %xmm8
unpcklps %xmm2, %xmm8            # xmm8 = xmm8[0],xmm2[0],xmm8[1],xmm2[1]
movlhps %xmm8, %xmm8            # xmm8 = xmm8[0,0]
unpcklps %xmm6, %xmm0            # xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]
unpcklps %xmm7, %xmm2            # xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]
movlhps %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subps %xmm8, %xmm2
subps %xmm5, %xmm8
movaps %xmm3, %xmm0
unpcklps %xmm4, %xmm0            # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
movaps %xmm0, %xmm5
subps %xmm1, %xmm5
shufps $0x11, %xmm5, %xmm5     # xmm5 = xmm5[1,0,1,0]
movlhps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0]
unpcklps %xmm3, %xmm4            # xmm4 = xmm4[0],xmm3[0],xmm4[1],xmm3[1]
movlhps %xmm4, %xmm4            # xmm4 = xmm4[0,0]
subps %xmm4, %xmm0
mulps %xmm8, %xmm0
mulps %xmm5, %xmm2
subps %xmm2, %xmm0
xorps %xmm1, %xmm1
cmpeqps %xmm0, %xmm1
movmskps %xmm1, %r13d
movl %r13d, %ebx
andb $0x4, %bl
shrb $0x2, %bl
movl %r13d, %eax
shrb $0x3, %al
movl %r13d, %edx
andb $0x2, %dl
movl %edx, %r15d
shrb %r15b
testb %dl, %dl
sete %sil
movaps %xmm0, %xmm1
shufps $0x55, %xmm0, %xmm1     # xmm1 = xmm1[1,1],xmm0[1,1]
xorps %xmm2, %xmm2
cmpnltps %xmm1, %xmm2
movaps %xmm0, %xmm1
shufps $0xff, %xmm0, %xmm1     # xmm1 = xmm1[3,3],xmm0[3,3]
xorps %xmm3, %xmm3
cmpltps %xmm1, %xmm3
xorps %xmm2, %xmm3
movd %xmm3, %edx
andb %sil, %dl
movzbl %dl, %esi
movzbl %r15b, %edx
testb %al, %al
cmovel %esi, %edx
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
cmpnltps %xmm0, %xmm2
movhlps %xmm0, %xmm0            # xmm0 = xmm0[1,1]
cmpltps %xmm0, %xmm1
xorps %xmm2, %xmm1
movd %xmm1, %edi
movl %r13d, %esi
xorb $0x1, %sil
andb %dil, %sil
movzbl %sil, %esi
testb %bl, %bl
cmovnel %r13d, %esi
movb $0x1, %bpl
testb %dl, %dl
jne 0x2626
testb $0x1, %sil
je 0x26bf
testb %al, %al
je 0x2656
movq %r12, %rdi
movq %r8, %rsi
movq %r14, %rdx
movq %r14, 0x8(%rsp)
movq %rcx, 0x10(%rsp)
movq %r8, %r14
callq 0x933c
movq %r14, %r8
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r14
testb %al, %al
jne 0x26bf
testb %r15b, %r15b
je 0x2683
movq %r12, %rdi
movq %rcx, %rsi
movq %r14, %rdx
movq %r14, 0x8(%rsp)
movq %rcx, %r14
movq %r8, %r15
callq 0x933c
movq %r15, %r8
movq %r14, %rcx
movq 0x8(%rsp), %r14
testb %al, %al
jne 0x26bf
testb %bl, %bl
je 0x26a5
movq %r8, %rdi
movq %r12, %rsi
movq %rcx, %rdx
movq %rcx, %rbx
movq %r8, %r15
callq 0x933c
movq %r15, %r8
movq %rbx, %rcx
testb %al, %al
jne 0x26bf
testb $0x1, %r13b
je 0x26bd
movq %r8, %rdi
movq %r14, %rsi
movq %rcx, %rdx
callq 0x933c
testb %al, %al
jne 0x26bf
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq