// File: Proudc[P]CTSS/src/ContinuousQuery/Pruneline.cpp
// Function: (anonymous namespace)::calculateLowerBound(Graph*, TraversingPath*, Record*, ReferencePath*)
bool calculateLowerBound(Graph* myGraph, TraversingPath* path, Record* record, ReferencePath* referencePath)
{
	printf("Start calculating lower bound...\n");
	record->numDFDCal = 0;
	record->numTemDiscrete = 0;
	record->locationOfRefer = -1;
	if (path->maxPos < path->minPos)
	{
		return -1.0;
	}
	else
	{
		std::vector<Edge>  finalPath;
		std::vector<Point> temPointList;
		for (unsigned int i = 0; i < path->edges.size(); i++)
		{
			finalPath.push_back(myGraph->edgesVector[path->edges[i]]);
		}
		temPointList = creatTrajPoint(myGraph, finalPath, referencePath->initialVertex);
		Point p[(temPointList.size())];
		for (unsigned int i = 0; i < temPointList.size(); i++)
		{
			p[i].x = temPointList[i].x;
			p[i].y = temPointList[i].y;
		}
		printf("123456789\n");
		double calHelpArray[10000];
		for (unsigned int i = path->minPos; i <= path->maxPos; i++)
		{
			double x1 = myGraph->vertexsVector[path->finalVertexID].longitude;
			double y1 = myGraph->vertexsVector[path->finalVertexID].latitude;
			double x2 = referencePath->pointOfRefer[i].x;
			double y2 = referencePath->pointOfRefer[i].y;
			double eucDist = euc(x1, y1, x2, y2);
			if (eucDist <= (myGraph->delta))
			{
				calHelpArray[i] = eucDist;
			}
			else
			{
				calHelpArray[i] = -1.0;
			}
		}
		std::vector<Sequence> myInterval = setIncreDecreInterval(calHelpArray, path);
		printf("987654321\n");
		double   temDist = std::numeric_limits<double>::max();
		std::vector<std::vector<double>> eucDistance(1000, std::vector<double>(1000, -1));
		std::vector<std::vector<double>> dfdDistance(1000, std::vector<double>(1000, -1));
		for (unsigned int i = 0; i < myInterval.size(); i++)
		{
			printf("555\n");
			if (myInterval[i].seqFlag == false)
			{
				printf("111\n");
				double xDist = dfdDist(temPointList.size(), myInterval[i].stopPos + 1, p, referencePath->pointOfRefer);
				temDist = xDist < temDist ? xDist : temDist;
				printf("temDist is: %lf\n", temDist);
				printf("222\n");
			}
			else
			{
				printf("666\n");
				for (unsigned int k = 0; k < temPointList.size(); k++)
				{
					for (unsigned int j = 0; j < myInterval[i].startPos; j++)
					{
						double x1 = p[k].x;
						double y1 = p[k].y;
						double x2 = referencePath->pointOfRefer[j].x;
						double y2 = referencePath->pointOfRefer[j].y;
						double eucDist = euc(x1, y1, x2, y2);
						eucDistance[k][j] = eucDist;
						if ((k == 0) && (j == 0))
						{
							dfdDistance[k][j] = eucDistance[k][j];
						}
						else if ((k == 0) && (j != 0))
						{
							dfdDistance[k][j] = (std::max)(dfdDistance[k][j - 1], eucDistance[k][j]);
						}
						else if ((k != 0) && (j == 0))
						{
							dfdDistance[k][j] = (std::max)(dfdDistance[k - 1][j], eucDistance[k][j]);
						}
						else
						{
							dfdDistance[k][j] = (std::max)(
								(std::min)((std::min)(dfdDistance[k - 1][j], dfdDistance[k][j - 1]), dfdDistance[k - 1][j - 1]), eucDistance[k][j]);
						}
					}
				}
				printf("1365\n");
				for (unsigned int j = myInterval[i].startPos; j <= myInterval[i].stopPos; j++)
				{
					for (unsigned int k = 0; k < temPointList.size(); k++)
					{
						double x1 = p[k].x;
						double y1 = p[k].y;
						double x2 = referencePath->pointOfRefer[j].x;
						double y2 = referencePath->pointOfRefer[j].y;
						double eucDist = euc(x1, y1, x2, y2);
						eucDistance[k][j] = eucDist;
					}
					if (dfdDistance[temPointList.size() - 1][j] < temDist)
					{
						temDist = dfdDistance[temPointList.size() - 1][j];
					}
					if (j != myInterval[i].stopPos)
					{
						double x1 = p[temPointList.size() - 1].x;
						double y1 = p[temPointList.size() - 1].y;
						double x2 = referencePath->pointOfRefer[j + 1].x;
						double y2 = referencePath->pointOfRefer[j + 1].y;
						if (euc(x1, y1, x2, y2) >= dfdDistance[temPointList.size() - 1][j])
						{
							break;
						}
					}
				}
				printf("78978\n");
			}

		}
		printf("7894564\n");
		printf("654\n");
		printf("final temDist is:%lf\n", temDist);
		return temDist;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x13bb0, %rsp          # imm = 0x13BB0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
leaq 0x7de4(%rip), %rdi      # 0x19ac6
movb $0x0, %al
callq 0x2040
movq -0x20(%rbp), %rax
movl $0x0, (%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x20(%rbp), %rax
movl $0xffffffff, 0xc(%rax)  # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x11d21
movb $0x1, -0x1(%rbp)
jmp 0x12cb6
leaq -0x40(%rbp), %rdi
callq 0x53a0
leaq -0x58(%rbp), %rdi
callq 0xb8c0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq %rax, -0x13a80(%rbp)
movq -0x18(%rbp), %rdi
addq $0x28, %rdi
callq 0x90e0
movq %rax, %rcx
movq -0x13a80(%rbp), %rax
cmpq %rcx, %rax
jae 0x11dbb
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x13a88(%rbp)
movq -0x18(%rbp), %rdi
addq $0x28, %rdi
movl -0x5c(%rbp), %eax
movl %eax, %esi
callq 0x9100
movq -0x13a88(%rbp), %rsi
movslq (%rax), %rax
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0x55f0
jmp 0x11d9d
jmp 0x11d9f
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x11d3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x12ca2
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rax
movl (%rax), %ecx
leaq -0x88(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0xb430
jmp 0x11dd7
leaq -0x58(%rbp), %rdi
movq %rdi, -0x13a98(%rbp)
leaq -0x88(%rbp), %rsi
movq %rsi, -0x13aa0(%rbp)
callq 0xb8e0
movq -0x13aa0(%rbp), %rdi
callq 0xb910
movq -0x13a98(%rbp), %rdi
callq 0xb970
movq %rax, %rdx
movq %rdx, %rax
movq %rsp, %rcx
movq %rcx, -0x90(%rbp)
shlq $0x4, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x13a90(%rbp)
movq %rcx, %rsp
movq %rax, -0x98(%rbp)
movl $0x0, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
movq %rax, -0x13aa8(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rcx
movq -0x13aa8(%rbp), %rax
cmpq %rcx, %rax
jae 0x11edd
movl -0x9c(%rbp), %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
callq 0xb990
movq %rax, %rcx
movq -0x13a90(%rbp), %rax
movsd (%rcx), %xmm0
movl -0x9c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, (%rax)
movl -0x9c(%rbp), %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
callq 0xb990
movq %rax, %rcx
movq -0x13a90(%rbp), %rax
movsd 0x8(%rcx), %xmm0
movl -0x9c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, 0x8(%rax)
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0x11e42
leaq 0x7c04(%rip), %rdi      # 0x19ae8
xorl %eax, %eax
callq 0x2040
jmp 0x11eed
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x13924(%rbp)
movl -0x13924(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x4(%rcx), %eax
ja 0x1202b
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
movslq 0x8(%rcx), %rcx
imulq $0x70, %rcx, %rcx
movsd 0x18(%rax,%rcx), %xmm0
movsd %xmm0, -0x13930(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
movslq 0x8(%rcx), %rcx
imulq $0x70, %rcx, %rcx
movsd 0x20(%rax,%rcx), %xmm0
movsd %xmm0, -0x13938(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13924(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13940(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13924(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13948(%rbp)
movsd -0x13930(%rbp), %xmm0
movsd -0x13938(%rbp), %xmm1
movsd -0x13940(%rbp), %xmm2
movsd -0x13948(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13ab0(%rbp)
jmp 0x11fbe
movsd -0x13ab0(%rbp), %xmm0
movsd %xmm0, -0x13950(%rbp)
movsd -0x13950(%rbp), %xmm1
movq -0x10(%rbp), %rax
movsd 0x18(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x11ffe
movsd -0x13950(%rbp), %xmm0
movl -0x13924(%rbp), %eax
movsd %xmm0, -0x13920(%rbp,%rax,8)
jmp 0x12015
movl -0x13924(%rbp), %eax
movsd 0x79b4(%rip), %xmm0     # 0x199c0
movsd %xmm0, -0x13920(%rbp,%rax,8)
jmp 0x12017
movl -0x13924(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13924(%rbp)
jmp 0x11ef9
movq -0x18(%rbp), %rdx
leaq -0x13968(%rbp), %rdi
leaq -0x13920(%rbp), %rsi
callq 0x13e00
jmp 0x12044
leaq 0x7aa8(%rip), %rdi      # 0x19af3
xorl %eax, %eax
callq 0x2040
jmp 0x12054
callq 0x90d0
movsd %xmm0, -0x13970(%rbp)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0x139a8(%rbp)
leaq -0x139a9(%rbp), %rdi
movq %rdi, -0x13ab8(%rbp)
callq 0xd410
movq -0x13ab8(%rbp), %rcx
leaq -0x139a0(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x139a8(%rbp), %rdx
callq 0xd430
jmp 0x120a6
leaq -0x139aa(%rbp), %rdi
movq %rdi, -0x13ac0(%rbp)
callq 0xd4b0
movq -0x13ac0(%rbp), %rcx
leaq -0x13988(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x139a0(%rbp), %rdx
callq 0xd4d0
jmp 0x120da
leaq -0x139aa(%rbp), %rdi
callq 0xd550
leaq -0x139a0(%rbp), %rdi
callq 0xd570
leaq -0x139a9(%rbp), %rdi
callq 0xd5d0
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0x139e8(%rbp)
leaq -0x139e9(%rbp), %rdi
movq %rdi, -0x13ac8(%rbp)
callq 0xd410
movq -0x13ac8(%rbp), %rcx
leaq -0x139e0(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x139e8(%rbp), %rdx
callq 0xd430
jmp 0x12143
leaq -0x139ea(%rbp), %rdi
movq %rdi, -0x13ad0(%rbp)
callq 0xd4b0
movq -0x13ad0(%rbp), %rcx
leaq -0x139c8(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x139e0(%rbp), %rdx
callq 0xd4d0
jmp 0x12177
leaq -0x139ea(%rbp), %rdi
callq 0xd550
leaq -0x139e0(%rbp), %rdi
callq 0xd570
leaq -0x139e9(%rbp), %rdi
callq 0xd5d0
movl $0x0, -0x139f0(%rbp)
movl -0x139f0(%rbp), %eax
movq %rax, -0x13ad8(%rbp)
leaq -0x13968(%rbp), %rdi
callq 0x14490
movq %rax, %rcx
movq -0x13ad8(%rbp), %rax
cmpq %rcx, %rax
jae 0x12bf4
leaq 0x7926(%rip), %rdi      # 0x19afe
xorl %eax, %eax
callq 0x2040
jmp 0x121e1
movl -0x139f0(%rbp), %eax
movl %eax, %esi
leaq -0x13968(%rbp), %rdi
callq 0x144c0
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1239b
leaq 0x78f6(%rip), %rdi      # 0x19b03
xorl %eax, %eax
callq 0x2040
jmp 0x12216
leaq -0x58(%rbp), %rdi
callq 0xb970
movl %eax, -0x13ae4(%rbp)
movl -0x139f0(%rbp), %eax
movl %eax, %esi
leaq -0x13968(%rbp), %rdi
callq 0x144c0
movl -0x13ae4(%rbp), %edi
movq -0x13a90(%rbp), %rdx
movl 0x4(%rax), %esi
incl %esi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rcx
callq 0xc5b0
movsd %xmm0, -0x13ae0(%rbp)
jmp 0x12262
movsd -0x13ae0(%rbp), %xmm0
movsd %xmm0, -0x139f8(%rbp)
movsd -0x139f8(%rbp), %xmm1
movsd -0x13970(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1229a
movsd -0x139f8(%rbp), %xmm0
movsd %xmm0, -0x13af0(%rbp)
jmp 0x122aa
movsd -0x13970(%rbp), %xmm0
movsd %xmm0, -0x13af0(%rbp)
movsd -0x13af0(%rbp), %xmm0
movsd %xmm0, -0x13970(%rbp)
movsd -0x13970(%rbp), %xmm0
leaq 0x783f(%rip), %rdi      # 0x19b08
movb $0x1, %al
callq 0x2040
jmp 0x122d2
leaq 0x7840(%rip), %rdi      # 0x19b19
xorl %eax, %eax
callq 0x2040
jmp 0x122e2
jmp 0x12bde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x12c96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1232a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x139aa(%rbp), %rdi
callq 0xd550
leaq -0x139a0(%rbp), %rdi
callq 0xd570
leaq -0x139a9(%rbp), %rdi
callq 0xd5d0
jmp 0x12c96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1236d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x139ea(%rbp), %rdi
callq 0xd550
leaq -0x139e0(%rbp), %rdi
callq 0xd570
leaq -0x139e9(%rbp), %rdi
callq 0xd5d0
jmp 0x12c8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x139c8(%rbp), %rdi
callq 0xd5f0
jmp 0x12c8a
leaq 0x777c(%rip), %rdi      # 0x19b1e
xorl %eax, %eax
callq 0x2040
jmp 0x123ab
movl $0x0, -0x139fc(%rbp)
movl -0x139fc(%rbp), %eax
movq %rax, -0x13af8(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rcx
movq -0x13af8(%rbp), %rax
cmpq %rcx, %rax
jae 0x12877
movl $0x0, -0x13a00(%rbp)
movl -0x13a00(%rbp), %eax
movl %eax, -0x13afc(%rbp)
movl -0x139f0(%rbp), %eax
movl %eax, %esi
leaq -0x13968(%rbp), %rdi
callq 0x144c0
movq %rax, %rcx
movl -0x13afc(%rbp), %eax
cmpl (%rcx), %eax
jae 0x12861
movq -0x13a90(%rbp), %rax
movl -0x139fc(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a08(%rbp)
movl -0x139fc(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a10(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a00(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a18(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a00(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a20(%rbp)
movsd -0x13a08(%rbp), %xmm0
movsd -0x13a10(%rbp), %xmm1
movsd -0x13a18(%rbp), %xmm2
movsd -0x13a20(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13b08(%rbp)
jmp 0x124bd
movsd -0x13b08(%rbp), %xmm0
movsd %xmm0, -0x13a28(%rbp)
movsd -0x13a28(%rbp), %xmm0
movsd %xmm0, -0x13b10(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x13988(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b10(%rbp), %xmm0
movsd %xmm0, (%rax)
cmpl $0x0, -0x139fc(%rbp)
jne 0x12584
cmpl $0x0, -0x13a00(%rbp)
jne 0x12584
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x13988(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm0
movsd %xmm0, -0x13b18(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b18(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x1284b
cmpl $0x0, -0x139fc(%rbp)
jne 0x1264f
cmpl $0x0, -0x13a00(%rbp)
je 0x1264f
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13b28(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x13988(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b28(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13b20(%rbp)
jmp 0x12607
movq -0x13b20(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13b30(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b30(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x12849
cmpl $0x0, -0x139fc(%rbp)
je 0x1271a
cmpl $0x0, -0x13a00(%rbp)
jne 0x1271a
movl -0x139fc(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13b40(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x13988(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b40(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13b38(%rbp)
jmp 0x126d2
movq -0x13b38(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13b48(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b48(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x12847
movl -0x139fc(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139c8(%rbp), %rdi
movq %rdi, -0x13b68(%rbp)
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b68(%rbp), %rdi
movq %rax, -0x13b70(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b70(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq -0x13b68(%rbp), %rdi
movq %rax, -0x13b60(%rbp)
movl -0x139fc(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b60(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq %rax, -0x13b58(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x13988(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b58(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13b50(%rbp)
jmp 0x12804
movq -0x13b50(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13b78(%rbp)
movl -0x139fc(%rbp), %eax
movl %eax, %esi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a00(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b78(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x12849
jmp 0x1284b
jmp 0x1284d
movl -0x13a00(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13a00(%rbp)
jmp 0x123e8
jmp 0x12863
movl -0x139fc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x139fc(%rbp)
jmp 0x123b5
leaq 0x72a5(%rip), %rdi      # 0x19b23
xorl %eax, %eax
callq 0x2040
jmp 0x12887
movl -0x139f0(%rbp), %eax
movl %eax, %esi
leaq -0x13968(%rbp), %rdi
callq 0x144c0
movl (%rax), %eax
movl %eax, -0x13a2c(%rbp)
movl -0x13a2c(%rbp), %eax
movl %eax, -0x13b7c(%rbp)
movl -0x139f0(%rbp), %eax
movl %eax, %esi
leaq -0x13968(%rbp), %rdi
callq 0x144c0
movq %rax, %rcx
movl -0x13b7c(%rbp), %eax
cmpl 0x4(%rcx), %eax
ja 0x12bcc
movl $0x0, -0x13a30(%rbp)
movl -0x13a30(%rbp), %eax
movq %rax, -0x13b88(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rcx
movq -0x13b88(%rbp), %rax
cmpq %rcx, %rax
jae 0x12a10
movq -0x13a90(%rbp), %rax
movl -0x13a30(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a38(%rbp)
movl -0x13a30(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a40(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a2c(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a48(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a2c(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a50(%rbp)
movsd -0x13a38(%rbp), %xmm0
movsd -0x13a40(%rbp), %xmm1
movsd -0x13a48(%rbp), %xmm2
movsd -0x13a50(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13b90(%rbp)
jmp 0x129ac
movsd -0x13b90(%rbp), %xmm0
movsd %xmm0, -0x13a58(%rbp)
movsd -0x13a58(%rbp), %xmm0
movsd %xmm0, -0x13b98(%rbp)
movl -0x13a30(%rbp), %eax
movl %eax, %esi
leaq -0x13988(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a2c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b98(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x13a30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13a30(%rbp)
jmp 0x128df
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a2c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm1
movsd -0x13970(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x12a86
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a2c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm0
movsd %xmm0, -0x13970(%rbp)
movl -0x13a2c(%rbp), %eax
movl %eax, -0x13b9c(%rbp)
movl -0x139f0(%rbp), %eax
movl %eax, %esi
leaq -0x13968(%rbp), %rdi
callq 0x144c0
movq %rax, %rcx
movl -0x13b9c(%rbp), %eax
cmpl 0x4(%rcx), %eax
je 0x12bb6
leaq -0x58(%rbp), %rdi
movq %rdi, -0x13bb0(%rbp)
callq 0xb970
movq -0x13bb0(%rbp), %rdi
movq -0x13a90(%rbp), %rcx
shlq $0x4, %rax
movsd -0x10(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a60(%rbp)
callq 0xb970
movq -0x13a90(%rbp), %rcx
shlq $0x4, %rax
movsd -0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a68(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a2c(%rbp), %ecx
incl %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a70(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a2c(%rbp), %ecx
incl %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a78(%rbp)
movsd -0x13a60(%rbp), %xmm0
movsd -0x13a68(%rbp), %xmm1
movsd -0x13a70(%rbp), %xmm2
movsd -0x13a78(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13ba8(%rbp)
jmp 0x12b78
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139c8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a2c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13ba8(%rbp), %xmm0
ucomisd (%rax), %xmm0
jb 0x12bb4
jmp 0x12bcc
jmp 0x12bb6
jmp 0x12bb8
movl -0x13a2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13a2c(%rbp)
jmp 0x128a3
leaq 0x6f56(%rip), %rdi      # 0x19b29
xorl %eax, %eax
callq 0x2040
jmp 0x12bdc
jmp 0x12bde
jmp 0x12be0
movl -0x139f0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x139f0(%rbp)
jmp 0x121a5
leaq 0x6f35(%rip), %rdi      # 0x19b30
xorl %eax, %eax
callq 0x2040
jmp 0x12c04
leaq 0x6f2e(%rip), %rdi      # 0x19b39
xorl %eax, %eax
callq 0x2040
jmp 0x12c14
movsd -0x13970(%rbp), %xmm0
leaq 0x6f1b(%rip), %rdi      # 0x19b3e
movb $0x1, %al
callq 0x2040
jmp 0x12c2c
movsd -0x13970(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
setne %al
setp %cl
orb %cl, %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x139c8(%rbp), %rdi
callq 0xd5f0
leaq -0x13988(%rbp), %rdi
callq 0xd5f0
leaq -0x13968(%rbp), %rdi
callq 0x14520
movq -0x90(%rbp), %rax
movq %rax, %rsp
leaq -0x58(%rbp), %rdi
callq 0xb910
leaq -0x40(%rbp), %rdi
callq 0x54b0
jmp 0x12cb6
leaq -0x13988(%rbp), %rdi
callq 0xd5f0
leaq -0x13968(%rbp), %rdi
callq 0x14520
leaq -0x58(%rbp), %rdi
callq 0xb910
leaq -0x40(%rbp), %rdi
callq 0x54b0
jmp 0x12cc0
movb -0x1(%rbp), %al
andb $0x1, %al
movq %rbp, %rsp
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x2240
nopl (%rax)