// File: Proudc[P]CTSS/src/ContinuousQuery/Pruneline.cpp
// Function: (anonymous namespace)::eucLowerBound(Graph*, TraversingPath*, Record*, ReferencePath*)
double eucLowerBound(Graph* myGraph, TraversingPath* path, Record* record, ReferencePath* referencePath)
{
	printf("Start calculating LowerBound...\n");
	record->numDFDCal       = 0;
	record->numTemDiscrete  = 0;
	record->locationOfRefer = -1;

	if ((myGraph->vertexsVector[path->finalVertexID].locationFlag == false) || (path->maxPos < path->minPos))
	{
		return -1.0;
	}

	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);
	record->numTemDiscrete = temPointList.size();

	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);

	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++)
	{
		if (myInterval[i].seqFlag == false)
		{
			for (unsigned int k = 0; k < temPointList.size(); k++)
			{
				for (unsigned int j = 0; j <= myInterval[i].stopPos; j++)
				{
					double x1 = temPointList[k].x;
					double y1 = temPointList[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]);
					}
				}
			}
			if (dfdDistance[temPointList.size() - 1][myInterval[i].stopPos] < temDist)
			{
				record->eucConQueryPos = myInterval[i].stopPos;
			}

			if (dfdDistance[temPointList.size() - 1][myInterval[i].stopPos] < temDist)
			{
				temDist = dfdDistance[temPointList.size() - 1][myInterval[i].stopPos];
			}
			record->locationOfRefer = myInterval[i].stopPos;
			record->numDFDCal += 1;
			if (temDist <= (myGraph->delta))
			{
				return temDist;
			}
		}
		else
		{
			for (unsigned int k = 0; k <= temPointList.size(); k++)
			{
				for (unsigned int j = 0; j < myInterval[i].startPos; j++)
				{
					double x1 = temPointList[k].x;
					double y1 = temPointList[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]);
					}
				}
			}
			record->numDFDCal += 1;
			for (unsigned int j = myInterval[i].startPos; j <= myInterval[i].stopPos; j++)
			{
				for (unsigned int k = 0; k < temPointList.size(); k++)
				{
					double x1 = temPointList[k].x;
					double y1 = temPointList[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]);
					}
				}
				if (dfdDistance[temPointList.size() - 1][j] < temDist)
				{
					record->eucConQueryPos = j;
				}
				if (dfdDistance[temPointList.size() - 1][j] < temDist)
				{
					temDist = dfdDistance[temPointList.size() - 1][j];
				}
				record->locationOfRefer = j;
				if (temDist <= (myGraph->delta))
				{
					return temDist;
				}
				if (j != myInterval[i].stopPos)
				{
					double x1 = temPointList[temPointList.size() - 1].x;
					double y1 = temPointList[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;
					}
				}
			}
		}
	}
	return temDist;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x13cc0, %rsp          # imm = 0x13CC0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
leaq 0xa70e(%rip), %rdi      # 0x19a90
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 -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
movslq 0x8(%rcx), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movb 0x11(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0xf3dc
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl (%rcx), %eax
jge 0xf3ee
movsd 0xa5dc(%rip), %xmm0     # 0x199c0
movsd %xmm0, -0x8(%rbp)
jmp 0x10b85
leaq -0x40(%rbp), %rdi
callq 0x53a0
leaq -0x58(%rbp), %rdi
callq 0xb8c0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq %rax, -0x13aa0(%rbp)
movq -0x18(%rbp), %rdi
addq $0x28, %rdi
callq 0x90e0
movq %rax, %rcx
movq -0x13aa0(%rbp), %rax
cmpq %rcx, %rax
jae 0xf488
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x13aa8(%rbp)
movq -0x18(%rbp), %rdi
addq $0x28, %rdi
movl -0x5c(%rbp), %eax
movl %eax, %esi
callq 0x9100
movq -0x13aa8(%rbp), %rsi
movslq (%rax), %rax
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0x55f0
jmp 0xf46a
jmp 0xf46c
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xf407
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x10b71
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rax
movl (%rax), %ecx
leaq -0x88(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0xb430
jmp 0xf4a4
leaq -0x58(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0xb8e0
leaq -0x88(%rbp), %rdi
callq 0xb910
leaq -0x58(%rbp), %rdi
callq 0xb970
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x13914(%rbp)
movl -0x13914(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x4(%rcx), %eax
ja 0xf610
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, -0x13920(%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, -0x13928(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13914(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13930(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13914(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13938(%rbp)
movsd -0x13920(%rbp), %xmm0
movsd -0x13928(%rbp), %xmm1
movsd -0x13930(%rbp), %xmm2
movsd -0x13938(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13ab0(%rbp)
jmp 0xf5a3
movsd -0x13ab0(%rbp), %xmm0
movsd %xmm0, -0x13940(%rbp)
movsd -0x13940(%rbp), %xmm1
movq -0x10(%rbp), %rax
movsd 0x18(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0xf5e3
movsd -0x13940(%rbp), %xmm0
movl -0x13914(%rbp), %eax
movsd %xmm0, -0x13910(%rbp,%rax,8)
jmp 0xf5fa
movl -0x13914(%rbp), %eax
movsd 0xa3cf(%rip), %xmm0     # 0x199c0
movsd %xmm0, -0x13910(%rbp,%rax,8)
jmp 0xf5fc
movl -0x13914(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13914(%rbp)
jmp 0xf4de
movq -0x18(%rbp), %rdx
leaq -0x13958(%rbp), %rdi
leaq -0x13910(%rbp), %rsi
callq 0x13e00
jmp 0xf629
callq 0x90d0
movsd %xmm0, -0x13960(%rbp)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0x13998(%rbp)
leaq -0x13999(%rbp), %rdi
movq %rdi, -0x13ab8(%rbp)
callq 0xd410
movq -0x13ab8(%rbp), %rcx
leaq -0x13990(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x13998(%rbp), %rdx
callq 0xd430
jmp 0xf67b
leaq -0x1399a(%rbp), %rdi
movq %rdi, -0x13ac0(%rbp)
callq 0xd4b0
movq -0x13ac0(%rbp), %rcx
leaq -0x13978(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x13990(%rbp), %rdx
callq 0xd4d0
jmp 0xf6af
leaq -0x1399a(%rbp), %rdi
callq 0xd550
leaq -0x13990(%rbp), %rdi
callq 0xd570
leaq -0x13999(%rbp), %rdi
callq 0xd5d0
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0x139d8(%rbp)
leaq -0x139d9(%rbp), %rdi
movq %rdi, -0x13ac8(%rbp)
callq 0xd410
movq -0x13ac8(%rbp), %rcx
leaq -0x139d0(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x139d8(%rbp), %rdx
callq 0xd430
jmp 0xf718
leaq -0x139da(%rbp), %rdi
movq %rdi, -0x13ad0(%rbp)
callq 0xd4b0
movq -0x13ad0(%rbp), %rcx
leaq -0x139b8(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x139d0(%rbp), %rdx
callq 0xd4d0
jmp 0xf74c
leaq -0x139da(%rbp), %rdi
callq 0xd550
leaq -0x139d0(%rbp), %rdi
callq 0xd570
leaq -0x139d9(%rbp), %rdi
callq 0xd5d0
movl $0x0, -0x139e0(%rbp)
movl -0x139e0(%rbp), %eax
movq %rax, -0x13ad8(%rbp)
leaq -0x13958(%rbp), %rdi
callq 0x14490
movq %rax, %rcx
movq -0x13ad8(%rbp), %rax
cmpq %rcx, %rax
jae 0x10b0a
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movb 0x8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xfeda
movl $0x0, -0x139e4(%rbp)
movl -0x139e4(%rbp), %eax
movq %rax, -0x13ae0(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rcx
movq -0x13ae0(%rbp), %rax
cmpq %rcx, %rax
jae 0xfd56
movl $0x0, -0x139e8(%rbp)
movl -0x139e8(%rbp), %eax
movl %eax, -0x13ae4(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movq %rax, %rcx
movl -0x13ae4(%rbp), %eax
cmpl 0x4(%rcx), %eax
ja 0xfd40
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
movq %rdi, -0x13af8(%rbp)
callq 0xb990
movq -0x13af8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x139f0(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
callq 0xb990
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x139f8(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x139e8(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a00(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x139e8(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a08(%rbp)
movsd -0x139f0(%rbp), %xmm0
movsd -0x139f8(%rbp), %xmm1
movsd -0x13a00(%rbp), %xmm2
movsd -0x13a08(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13af0(%rbp)
jmp 0xf8ed
movsd -0x13af0(%rbp), %xmm0
movsd %xmm0, -0x13a10(%rbp)
movsd -0x13a10(%rbp), %xmm0
movsd %xmm0, -0x13b00(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b00(%rbp), %xmm0
movsd %xmm0, (%rax)
cmpl $0x0, -0x139e4(%rbp)
jne 0xfa5f
cmpl $0x0, -0x139e8(%rbp)
jne 0xfa5f
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm0
movsd %xmm0, -0x13b08(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b08(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0xfd2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf9ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1399a(%rbp), %rdi
callq 0xd550
leaq -0x13990(%rbp), %rdi
callq 0xd570
leaq -0x13999(%rbp), %rdi
callq 0xd5d0
jmp 0x10b65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xfa31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x139da(%rbp), %rdi
callq 0xd550
leaq -0x139d0(%rbp), %rdi
callq 0xd570
leaq -0x139d9(%rbp), %rdi
callq 0xd5d0
jmp 0x10b59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x139b8(%rbp), %rdi
callq 0xd5f0
jmp 0x10b59
cmpl $0x0, -0x139e4(%rbp)
jne 0xfb2a
cmpl $0x0, -0x139e8(%rbp)
je 0xfb2a
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13b18(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b18(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13b10(%rbp)
jmp 0xfae2
movq -0x13b10(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13b20(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b20(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0xfd28
cmpl $0x0, -0x139e4(%rbp)
je 0xfbf5
cmpl $0x0, -0x139e8(%rbp)
jne 0xfbf5
movl -0x139e4(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13b30(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b30(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13b28(%rbp)
jmp 0xfbad
movq -0x13b28(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13b38(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b38(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0xfd26
movl -0x139e4(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
movq %rdi, -0x13b50(%rbp)
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b50(%rbp), %rdi
movq %rax, -0x13b48(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b48(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq %rax, -0x13b40(%rbp)
jmp 0xfc67
movl -0x139e4(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b40(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq %rax, -0x13b58(%rbp)
jmp 0xfca7
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13b58(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13b60(%rbp)
jmp 0xfce3
movq -0x13b60(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13b68(%rbp)
movl -0x139e4(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x139e8(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13b68(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0xfd28
jmp 0xfd2a
jmp 0xfd2c
movl -0x139e8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x139e8(%rbp)
jmp 0xf808
jmp 0xfd42
movl -0x139e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x139e4(%rbp)
jmp 0xf7d5
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, -0x13b70(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movq -0x13b70(%rbp), %rdi
movslq 0x4(%rax), %rsi
callq 0xd8c0
movsd (%rax), %xmm1
movsd -0x13960(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xfdcd
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movl 0x4(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x1c(%rax)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, -0x13b78(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movq -0x13b78(%rbp), %rdi
movslq 0x4(%rax), %rsi
callq 0xd8c0
movsd (%rax), %xmm1
movsd -0x13960(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xfe79
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, -0x13b80(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movq -0x13b80(%rbp), %rdi
movslq 0x4(%rax), %rsi
callq 0xd8c0
movsd (%rax), %xmm0
movsd %xmm0, -0x13960(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movl 0x4(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x20(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movsd -0x13960(%rbp), %xmm1
movq -0x10(%rbp), %rax
movsd 0x18(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0xfed5
movsd -0x13960(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movl $0x1, -0x13a14(%rbp)
jmp 0x10b21
jmp 0x10af4
movl $0x0, -0x13a18(%rbp)
movl -0x13a18(%rbp), %eax
movq %rax, -0x13b88(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rcx
movq -0x13b88(%rbp), %rax
cmpq %rcx, %rax
ja 0x103b9
movl $0x0, -0x13a1c(%rbp)
movl -0x13a1c(%rbp), %eax
movl %eax, -0x13b8c(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movq %rax, %rcx
movl -0x13b8c(%rbp), %eax
cmpl (%rcx), %eax
jae 0x103a3
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
movq %rdi, -0x13ba0(%rbp)
callq 0xb990
movq -0x13ba0(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x13a28(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
callq 0xb990
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x13a30(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a1c(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a38(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a1c(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a40(%rbp)
movsd -0x13a28(%rbp), %xmm0
movsd -0x13a30(%rbp), %xmm1
movsd -0x13a38(%rbp), %xmm2
movsd -0x13a40(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13b98(%rbp)
jmp 0xfffb
movsd -0x13b98(%rbp), %xmm0
movsd %xmm0, -0x13a48(%rbp)
movsd -0x13a48(%rbp), %xmm0
movsd %xmm0, -0x13ba8(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13ba8(%rbp), %xmm0
movsd %xmm0, (%rax)
cmpl $0x0, -0x13a18(%rbp)
jne 0x100c2
cmpl $0x0, -0x13a1c(%rbp)
jne 0x100c2
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm0
movsd %xmm0, -0x13bb0(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13bb0(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x1038d
cmpl $0x0, -0x13a18(%rbp)
jne 0x1018d
cmpl $0x0, -0x13a1c(%rbp)
je 0x1018d
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13bc0(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13bc0(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13bb8(%rbp)
jmp 0x10145
movq -0x13bb8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13bc8(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13bc8(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x1038b
cmpl $0x0, -0x13a18(%rbp)
je 0x10258
cmpl $0x0, -0x13a1c(%rbp)
jne 0x10258
movl -0x13a18(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13bd8(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13bd8(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13bd0(%rbp)
jmp 0x10210
movq -0x13bd0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13be0(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13be0(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x10389
movl -0x13a18(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
movq %rdi, -0x13bf8(%rbp)
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13bf8(%rbp), %rdi
movq %rax, -0x13bf0(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13bf0(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq %rax, -0x13be8(%rbp)
jmp 0x102ca
movl -0x13a18(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13be8(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq %rax, -0x13c00(%rbp)
jmp 0x1030a
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13c00(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13c08(%rbp)
jmp 0x10346
movq -0x13c08(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13c10(%rbp)
movl -0x13a18(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a1c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13c10(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x1038b
jmp 0x1038d
jmp 0x1038f
movl -0x13a1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13a1c(%rbp)
jmp 0xff17
jmp 0x103a5
movl -0x13a18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13a18(%rbp)
jmp 0xfee4
movq -0x20(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movl (%rax), %eax
movl %eax, -0x13a4c(%rbp)
movl -0x13a4c(%rbp), %eax
movl %eax, -0x13c14(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movq %rax, %rcx
movl -0x13c14(%rbp), %eax
cmpl 0x4(%rcx), %eax
ja 0x10af2
movl $0x0, -0x13a50(%rbp)
movl -0x13a50(%rbp), %eax
movq %rax, -0x13c20(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rcx
movq -0x13c20(%rbp), %rax
cmpq %rcx, %rax
jae 0x108a0
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x58(%rbp), %rdi
movq %rdi, -0x13c30(%rbp)
callq 0xb990
movq -0x13c30(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x13a58(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
callq 0xb990
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x13a60(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a4c(%rbp), %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a68(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a4c(%rbp), %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a70(%rbp)
movsd -0x13a58(%rbp), %xmm0
movsd -0x13a60(%rbp), %xmm1
movsd -0x13a68(%rbp), %xmm2
movsd -0x13a70(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13c28(%rbp)
jmp 0x104f8
movsd -0x13c28(%rbp), %xmm0
movsd %xmm0, -0x13a78(%rbp)
movsd -0x13a78(%rbp), %xmm0
movsd %xmm0, -0x13c38(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13c38(%rbp), %xmm0
movsd %xmm0, (%rax)
cmpl $0x0, -0x13a50(%rbp)
jne 0x105bf
cmpl $0x0, -0x13a4c(%rbp)
jne 0x105bf
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm0
movsd %xmm0, -0x13c40(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13c40(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x1088a
cmpl $0x0, -0x13a50(%rbp)
jne 0x1068a
cmpl $0x0, -0x13a4c(%rbp)
je 0x1068a
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13c50(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13c50(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13c48(%rbp)
jmp 0x10642
movq -0x13c48(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13c58(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13c58(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x10888
cmpl $0x0, -0x13a50(%rbp)
je 0x10755
cmpl $0x0, -0x13a4c(%rbp)
jne 0x10755
movl -0x13a50(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq %rax, -0x13c68(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13c68(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13c60(%rbp)
jmp 0x1070d
movq -0x13c60(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13c70(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13c70(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x10886
movl -0x13a50(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
movq %rdi, -0x13c88(%rbp)
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13c88(%rbp), %rdi
movq %rax, -0x13c80(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13c80(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq %rax, -0x13c78(%rbp)
jmp 0x107c7
movl -0x13a50(%rbp), %eax
decl %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13c78(%rbp), %rdi
movq %rax, %rsi
callq 0x144e0
movq %rax, -0x13c90(%rbp)
jmp 0x10807
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x13978(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movq -0x13c90(%rbp), %rdi
movq %rax, %rsi
callq 0x9020
movq %rax, -0x13c98(%rbp)
jmp 0x10843
movq -0x13c98(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x13ca0(%rbp)
movl -0x13a50(%rbp), %eax
movl %eax, %esi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13ca0(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0x10888
jmp 0x1088a
jmp 0x1088c
movl -0x13a50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13a50(%rbp)
jmp 0x1041c
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm1
movsd -0x13960(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x108eb
movl -0x13a4c(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x1c(%rax)
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm1
movsd -0x13960(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x10961
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd (%rax), %xmm0
movsd %xmm0, -0x13960(%rbp)
movl -0x13a4c(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movsd -0x13960(%rbp), %xmm1
movq -0x10(%rbp), %rax
movsd 0x18(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x109a1
movsd -0x13960(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movl $0x1, -0x13a14(%rbp)
jmp 0x10b21
movl -0x13a4c(%rbp), %eax
movl %eax, -0x13ca4(%rbp)
movl -0x139e0(%rbp), %eax
movl %eax, %esi
leaq -0x13958(%rbp), %rdi
callq 0x144c0
movq %rax, %rcx
movl -0x13ca4(%rbp), %eax
cmpl 0x4(%rcx), %eax
je 0x10adc
leaq -0x58(%rbp), %rdi
movq %rdi, -0x13cb8(%rbp)
callq 0xb970
movq -0x13cb8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0xb990
movq -0x13cb8(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x13a80(%rbp)
callq 0xb970
movq -0x13cb8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0xb990
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x13a88(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a4c(%rbp), %ecx
incl %ecx
shlq $0x4, %rcx
movsd (%rax,%rcx), %xmm0
movsd %xmm0, -0x13a90(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x13a4c(%rbp), %ecx
incl %ecx
shlq $0x4, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movsd %xmm0, -0x13a98(%rbp)
movsd -0x13a80(%rbp), %xmm0
movsd -0x13a88(%rbp), %xmm1
movsd -0x13a90(%rbp), %xmm2
movsd -0x13a98(%rbp), %xmm3
callq 0x7780
movsd %xmm0, -0x13cb0(%rbp)
jmp 0x10a9e
leaq -0x58(%rbp), %rdi
callq 0xb970
movq %rax, %rsi
subq $0x1, %rsi
leaq -0x139b8(%rbp), %rdi
callq 0xd8a0
movq %rax, %rdi
movl -0x13a4c(%rbp), %eax
movl %eax, %esi
callq 0xd8c0
movsd -0x13cb0(%rbp), %xmm0
ucomisd (%rax), %xmm0
jb 0x10ada
jmp 0x10af2
jmp 0x10adc
jmp 0x10ade
movl -0x13a4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x13a4c(%rbp)
jmp 0x103e0
jmp 0x10af4
jmp 0x10af6
movl -0x139e0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x139e0(%rbp)
jmp 0xf77a
movsd -0x13960(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movl $0x1, -0x13a14(%rbp)
leaq -0x139b8(%rbp), %rdi
callq 0xd5f0
leaq -0x13978(%rbp), %rdi
callq 0xd5f0
leaq -0x13958(%rbp), %rdi
callq 0x14520
leaq -0x58(%rbp), %rdi
callq 0xb910
leaq -0x40(%rbp), %rdi
callq 0x54b0
jmp 0x10b85
leaq -0x13978(%rbp), %rdi
callq 0xd5f0
leaq -0x13958(%rbp), %rdi
callq 0x14520
leaq -0x58(%rbp), %rdi
callq 0xb910
leaq -0x40(%rbp), %rdi
callq 0x54b0
jmp 0x10b93
movsd -0x8(%rbp), %xmm0
addq $0x13cc0, %rsp          # imm = 0x13CC0
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x2240
nopl (%rax)