// File: /workspace/github_cpp_makefile_star2_O1/Proudc[P]CTSS/src/ContinuousQuery/Pruneline.cpp
// Function: (anonymous namespace)::setIncreDecreInterval(double*, TraversingPath*)
std::vector<Sequence> setIncreDecreInterval(double calHelpArray[], TraversingPath* path)
{
	int  startPos = path->minPos;
	int  stopPos;
	int  flag = 0;
	bool seqFlag;
	std::vector<Sequence> myInterval;
	if (calHelpArray[path->minPos] < calHelpArray[(path->minPos) + 1])
	{
		seqFlag = true;
	}
	else
	{
		seqFlag = false;
	}
	for (unsigned int i = (path->minPos) + 1; i < (path->maxPos);)
	{
		if (abs(calHelpArray[i] - (-1.0)) < 0.00000001)
		{
			Sequence* temSequence = new Sequence;
			temSequence->startPos = startPos;
			temSequence->stopPos  = i - 1;
			temSequence->seqFlag  = seqFlag;
			myInterval.push_back(*temSequence);
			delete temSequence;
			while ((i <= path->maxPos) && (abs(calHelpArray[i] - (-1.0)) < 0.0000001))
			{
				i++;
			}
			if (i > (path->maxPos))
			{
				flag = 1;
				break;
			}
			startPos = i;
			if (calHelpArray[i] < calHelpArray[i + 1])
			{
				seqFlag = true;
			}
			else
			{
				seqFlag = false;
			}
		}
		else
		{
			if (abs(calHelpArray[i + 1] - (-1.0)) < 0.000000001)
			{
				i++;
				continue;
			}
			bool temSeqFlag;
			if (calHelpArray[i] == calHelpArray[i + 1])
			{
				i++;
				continue;
			}
			else if (calHelpArray[i] < calHelpArray[i + 1])
			{
				temSeqFlag = true;
			}
			else
			{
				temSeqFlag = false;
			}
			if (seqFlag != temSeqFlag)
			{
				Sequence* temSequence = new Sequence;
				temSequence->startPos = startPos;
				temSequence->stopPos  = i;
				temSequence->seqFlag  = seqFlag;
				myInterval.push_back(*temSequence);
				delete temSequence;
				startPos = i + 1;
				seqFlag = temSeqFlag;
			}
			i++;
		}
	}
	if (flag == 0)
	{
		Sequence* temSequence = new Sequence;
		temSequence->startPos = startPos;
		temSequence->stopPos  = path->maxPos;
		temSequence->seqFlag  = seqFlag;
		myInterval.push_back(*temSequence);
		delete temSequence;
	}
	return myInterval;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rsi, %r15
movslq (%rdx), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rdi, -0x40(%rbp)
movq $0x0, 0x10(%rdi)
movsd 0x8(%rsi,%rax,8), %xmm0
ucomisd (%rsi,%rax,8), %xmm0
seta -0x29(%rbp)
movq %rax, -0x38(%rbp)
leal 0x1(%rax), %r13d
movq %rdx, -0x60(%rbp)
leaq 0x4(%rdx), %rax
movq %rax, -0x58(%rbp)
movl $0x0, -0x30(%rbp)
movl %r13d, %r14d
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
cmpl %eax, %r14d
cmoval %r14d, %eax
movl %r14d, %ebx
negl %r14d
movl %r14d, %r13d
cmpq %rbx, %rax
je 0xa4a1
movsd (%r15,%rbx,8), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd 0x2711(%rip), %xmm1     # 0xc9e0
addsd %xmm1, %xmm0
movapd 0x2725(%rip), %xmm2     # 0xca00
andpd %xmm2, %xmm0
movsd 0x2701(%rip), %xmm3     # 0xc9e8
ucomisd %xmm0, %xmm3
ja 0xa3c8
movsd 0x8(%r15,%rbx,8), %xmm3
incq %rbx
movapd %xmm3, %xmm0
addsd %xmm1, %xmm0
andpd %xmm2, %xmm0
decl %r13d
movsd 0x26de(%rip), %xmm1     # 0xc9f0
ucomisd %xmm0, %xmm1
ja 0xa2b3
movl %r13d, %r14d
negl %r14d
movsd -0x48(%rbp), %xmm0
ucomisd %xmm3, %xmm0
movsd %xmm3, -0x50(%rbp)
jne 0xa330
jnp 0xa3ae
ucomisd %xmm0, %xmm3
seta %al
movb -0x29(%rbp), %bl
andb $0x1, %bl
cmpb %bl, %al
je 0xa3ae
movl $0xc, %edi
callq 0x2150
movq %rax, %r12
movl %r13d, %eax
notl %eax
movq -0x38(%rbp), %rcx
movl %ecx, (%r12)
movl %eax, 0x4(%r12)
movb %bl, 0x8(%r12)
movq -0x40(%rbp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0xa389
movl 0x8(%r12), %eax
movl %eax, 0x8(%rsi)
movq (%r12), %rax
movq %rax, (%rsi)
addq $0xc, 0x8(%rdi)
jmp 0xa391
movq %r12, %rdx
callq 0xa6e4
movsd -0x50(%rbp), %xmm0
ucomisd -0x48(%rbp), %xmm0
seta -0x29(%rbp)
movq %r12, %rdi
callq 0x2130
movl %r14d, %eax
movq %rax, -0x38(%rbp)
movsd -0x48(%rbp), %xmm0
ucomisd -0x50(%rbp), %xmm0
jne 0xa3c0
jnp 0xa29c
negl %r13d
jmp 0xa299
movl $0xc, %edi
callq 0x2150
movq %rax, %r12
movq -0x38(%rbp), %rax
movl %eax, (%r12)
movl %r13d, %eax
notl %eax
movl %eax, 0x4(%r12)
movb -0x29(%rbp), %al
andb $0x1, %al
movb %al, 0x8(%r12)
movq -0x40(%rbp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0xa415
movl 0x8(%r12), %eax
movl %eax, 0x8(%rsi)
movq (%r12), %rax
movq %rax, (%rsi)
addq $0xc, 0x8(%rdi)
jmp 0xa41d
movq %r12, %rdx
callq 0xa6e4
negl %r13d
movq %r12, %rdi
callq 0x2130
movq -0x58(%rbp), %rax
movl (%rax), %ecx
cmpl %r13d, %ecx
setb %al
jb 0xa470
movl %ebx, %edx
movsd (%r15,%rdx,8), %xmm0
addsd 0x259a(%rip), %xmm0     # 0xc9e0
andpd 0x25b2(%rip), %xmm0     # 0xca00
movsd 0x25a2(%rip), %xmm1     # 0xc9f8
ucomisd %xmm0, %xmm1
jbe 0xa46c
incl %r13d
cmpl %ecx, %r13d
seta %al
ja 0xa470
movl %r13d, %edx
jmp 0xa438
testb %al, %al
je 0xa481
movl $0x1, -0x30(%rbp)
testb %al, %al
je 0xa299
jmp 0xa4a1
movl %r13d, %ecx
leal 0x1(%r13), %edx
movsd (%r15,%rdx,8), %xmm0
ucomisd (%r15,%rcx,8), %xmm0
seta -0x29(%rbp)
movl %r13d, %ecx
movq %rcx, -0x38(%rbp)
jmp 0xa477
cmpl $0x0, -0x30(%rbp)
movq -0x40(%rbp), %rbx
jne 0xa503
movl $0xc, %edi
callq 0x2150
movq %rax, %r14
movq -0x38(%rbp), %rax
movl %eax, (%r14)
movq -0x58(%rbp), %rax
movl (%rax), %eax
movl %eax, 0x4(%r14)
movb -0x29(%rbp), %al
andb $0x1, %al
movb %al, 0x8(%r14)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xa4f0
movl 0x8(%r14), %eax
movl %eax, 0x8(%rsi)
movq (%r14), %rax
movq %rax, (%rsi)
addq $0xc, 0x8(%rbx)
jmp 0xa4fb
movq %rbx, %rdi
movq %r14, %rdx
callq 0xa6e4
movq %r14, %rdi
callq 0x2130
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa519
jmp 0xa519
movq %rax, %r14
movq -0x40(%rbp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0xa52d
callq 0x2130
movq %r14, %rdi
callq 0x2220
nop