#include <iostream>
#include <vector>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include "Graph.cuh"
#include "Solver.cuh"

using namespace std;

namespace atspSolver
{
	void fullCycle::display()
	{
		std::stringstream stream;
		int pathSize = path.size();

		for (int i = 0; i < pathSize; i++)
		{
			stream << path[i];
			if (i != pathSize - 1) stream << " -> ";
		}
		stream << "  |  cost: " << totalCost;
		std::cout << stream.str() << std::endl;
	}

	double calculateCost(const std::vector<int> &v, const Graph &graph)
	{
		double result = 0;
		int vectorSize = v.size();
		int numberOfNodes = graph.getNumberOfNodes();

		for (int i = 0; (i + 1) < vectorSize; i++)
		{
			// v[i] = row, v[i + 1] = column
			int graphIndex = v[i + 1] + v[i] * numberOfNodes;
			result += graph[graphIndex];
		}

		return result;
	}

	std::vector<fullCycle> fullCycles;
	void permute(vector<int> a, int l, int r, const Graph& graph)
	{
		if (l == r) {
			a.push_back(a[0]);
			double cost = calculateCost(a, graph);
			fullCycles.push_back(fullCycle(a, cost));
		}
		else
		{
			for (int i = l; i <= r; i++)
			{
				swap(a[l], a[i]);

				// Recursion 
				permute(a, l + 1, r, graph);

				// Backtrack  
				swap(a[l], a[i]);
			}
		}
	}

	fullCycle findOptimalPath(const Graph &graph)
	{
		std::vector<int> v;
		for (int i = 0; i < graph.getNumberOfNodes(); i++)
		{
			v.push_back(i);
		}

		permute(v, 0, v.size() - 1, graph);

		fullCycle result = fullCycles[0];
		for (int i = 0; i < fullCycles.size(); i++)
		{
			if (fullCycles[i].totalCost < result.totalCost)
			{
				result = fullCycles[i];
			}
		}

		return result;
	}
}
	.file	"tmpxft_003b3f33_00000000-6_Solver.cudafe1.cpp"
	.text
#APP
	.globl _ZSt21ios_base_library_initv

#NO_APP
	.type	_ZL26__cudaUnregisterBinaryUtilv, @function
_ZL26__cudaUnregisterBinaryUtilv:
.LFB4695:
	.cfi_startproc
	endbr64
	movq	_ZL20__cudaFatCubinHandle(%rip), %rdi
	jmp	__cudaUnregisterFatBinary@PLT
	.cfi_endproc
.LFE4695:
	.size	_ZL26__cudaUnregisterBinaryUtilv, .-_ZL26__cudaUnregisterBinaryUtilv
	.align 2
	.type	_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.isra.0, @function
_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.isra.0:
.LFB5679:
	.cfi_startproc
	testq	%rdi, %rdi
	je	.L3
	movabsq	$2305843009213693951, %rax
	cmpq	%rdi, %rax
	jnb	.L4
	pushq	%rax
	.cfi_def_cfa_offset 16
	movabsq	$4611686018427387903, %rax
	cmpq	%rdi, %rax
	jnb	.L5
	call	_ZSt28__throw_bad_array_new_lengthv@PLT
.L5:
	call	_ZSt17__throw_bad_allocv@PLT
.L4:
	.cfi_def_cfa_offset 8
	salq	$2, %rdi
	jmp	_Znwm@PLT
.L3:
	xorl	%eax, %eax
	ret
	.cfi_endproc
.LFE5679:
	.size	_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.isra.0, .-_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.isra.0
	.globl	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE
	.type	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE, @function
_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE:
.LFB4663:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	movq	%rsi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	subq	$16, %rsp
	.cfi_def_cfa_offset 64
	movq	8(%rdi), %rbx
	subq	(%rdi), %rbx
	movq	%rsi, %rdi
	call	_ZNK10atspSolver5Graph16getNumberOfNodesEv@PLT
	sarq	$2, %rbx
	xorps	%xmm1, %xmm1
	movl	%eax, %r14d
.L11:
	incq	%rbp
	cmpl	%ebp, %ebx
	jle	.L14
	movq	(%r12), %rax
	movq	%r13, %rdi
	movsd	%xmm1, 8(%rsp)
	movl	-4(%rax,%rbp,4), %esi
	imull	%r14d, %esi
	addl	(%rax,%rbp,4), %esi
	call	_ZNK10atspSolver5GraphixEi@PLT
	movsd	8(%rsp), %xmm1
	addsd	%xmm0, %xmm1
	jmp	.L11
.L14:
	addq	$16, %rsp
	.cfi_def_cfa_offset 48
	movaps	%xmm1, %xmm0
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4663:
	.size	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE, .-_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE
	.section	.text._ZN10atspSolver9fullCycleC2EOS0_,"axG",@progbits,_ZN10atspSolver9fullCycleC5EOS0_,comdat
	.align 2
	.weak	_ZN10atspSolver9fullCycleC2EOS0_
	.type	_ZN10atspSolver9fullCycleC2EOS0_, @function
_ZN10atspSolver9fullCycleC2EOS0_:
.LFB4691:
	.cfi_startproc
	endbr64
	movq	(%rsi), %rax
	movsd	24(%rsi), %xmm0
	movq	%rax, (%rdi)
	movq	8(%rsi), %rax
	movq	%rax, 8(%rdi)
	movq	16(%rsi), %rax
	movq	%rax, 16(%rdi)
	xorl	%eax, %eax
	movq	%rax, 16(%rsi)
	movq	%rax, 8(%rsi)
	movq	%rax, (%rsi)
	movsd	%xmm0, 24(%rdi)
	ret
	.cfi_endproc
.LFE4691:
	.size	_ZN10atspSolver9fullCycleC2EOS0_, .-_ZN10atspSolver9fullCycleC2EOS0_
	.weak	_ZN10atspSolver9fullCycleC1EOS0_
	.set	_ZN10atspSolver9fullCycleC1EOS0_,_ZN10atspSolver9fullCycleC2EOS0_
	.section	.text.startup,"ax",@progbits
	.type	_ZL24__sti____cudaRegisterAllv, @function
_ZL24__sti____cudaRegisterAllv:
.LFB4718:
	.cfi_startproc
	endbr64
	pushq	%rax
	.cfi_def_cfa_offset 16
	leaq	_ZL15__fatDeviceText(%rip), %rdi
	call	__cudaRegisterFatBinary@PLT
	movq	%rax, %rdi
	movq	%rax, _ZL20__cudaFatCubinHandle(%rip)
	call	__cudaRegisterFatBinaryEnd@PLT
	leaq	_ZL26__cudaUnregisterBinaryUtilv(%rip), %rdi
	popq	%rdx
	.cfi_def_cfa_offset 8
	jmp	atexit@PLT
	.cfi_endproc
.LFE4718:
	.size	_ZL24__sti____cudaRegisterAllv, .-_ZL24__sti____cudaRegisterAllv
	.section	.init_array,"aw"
	.align 8
	.quad	_ZL24__sti____cudaRegisterAllv
	.section	.text._ZNSt6vectorIiSaIiEED2Ev,"axG",@progbits,_ZNSt6vectorIiSaIiEED5Ev,comdat
	.align 2
	.weak	_ZNSt6vectorIiSaIiEED2Ev
	.type	_ZNSt6vectorIiSaIiEED2Ev, @function
_ZNSt6vectorIiSaIiEED2Ev:
.LFB5033:
	.cfi_startproc
	endbr64
	movq	(%rdi), %rax
	testq	%rax, %rax
	je	.L18
	movq	16(%rdi), %rsi
	movq	%rax, %rdi
	subq	%rax, %rsi
	jmp	_ZdlPvm@PLT
.L18:
	ret
	.cfi_endproc
.LFE5033:
	.size	_ZNSt6vectorIiSaIiEED2Ev, .-_ZNSt6vectorIiSaIiEED2Ev
	.weak	_ZNSt6vectorIiSaIiEED1Ev
	.set	_ZNSt6vectorIiSaIiEED1Ev,_ZNSt6vectorIiSaIiEED2Ev
	.section	.text._ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev,"axG",@progbits,_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED5Ev,comdat
	.align 2
	.weak	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev
	.type	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev, @function
_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev:
.LFB5669:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	8(%rdi), %r12
	movq	%rdi, %rbx
	movq	(%rdi), %rbp
.L21:
	cmpq	%rbp, %r12
	je	.L25
	movq	%rbp, %rdi
	addq	$32, %rbp
	call	_ZNSt6vectorIiSaIiEED1Ev
	jmp	.L21
.L25:
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.L20
	movq	16(%rbx), %rsi
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	subq	%rdi, %rsi
	jmp	_ZdlPvm@PLT
.L20:
	.cfi_restore_state
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5669:
	.size	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev, .-_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev
	.weak	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED1Ev
	.set	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED1Ev,_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	" -> "
.LC2:
	.string	"  |  cost: "
	.text
	.align 2
	.globl	_ZN10atspSolver9fullCycle7displayEv
	.type	_ZN10atspSolver9fullCycle7displayEv, @function
_ZN10atspSolver9fullCycle7displayEv:
.LFB4662:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4662
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC1(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	xorl	%r12d, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$456, %rsp
	.cfi_def_cfa_offset 512
	movq	%fs:40, %rax
	movq	%rax, 440(%rsp)
	xorl	%eax, %eax
	leaq	48(%rsp), %rax
	movq	%rax, %rdi
	movq	%rax, 8(%rsp)
.LEHB0:
	call	_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@PLT
.LEHE0:
	movq	8(%rbp), %rbx
	subq	0(%rbp), %rbx
	sarq	$2, %rbx
.L27:
	cmpl	%r12d, %ebx
	movl	%r12d, %r14d
	leaq	64(%rsp), %r13
	jle	.L39
	movq	0(%rbp), %rax
	movq	%r13, %rdi
	movl	(%rax,%r12,4), %esi
.LEHB1:
	call	_ZNSolsEi@PLT
	leal	-1(%rbx), %eax
	cmpl	%r14d, %eax
	jne	.L28
.L29:
	incq	%r12
	jmp	.L27
.L28:
	movq	%r15, %rsi
	movq	%r13, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	jmp	.L29
.L39:
	leaq	.LC2(%rip), %rsi
	movq	%r13, %rdi
	call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
	movsd	24(%rbp), %xmm0
	movq	%rax, %rdi
	call	_ZNSo9_M_insertIdEERSoT_@PLT
	leaq	16(%rsp), %rbp
	leaq	72(%rsp), %rsi
	movq	%rbp, %rdi
	call	_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@PLT
.LEHE1:
	movq	%rbp, %rsi
	leaq	_ZSt4cout(%rip), %rdi
.LEHB2:
	call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@PLT
	movq	%rax, %rdi
	call	_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@PLT
.LEHE2:
	movq	%rbp, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	movq	8(%rsp), %rdi
	call	_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@PLT
	movq	440(%rsp), %rax
	subq	%fs:40, %rax
	je	.L34
	jmp	.L37
.L36:
	endbr64
	movq	%rax, %rbx
.L31:
	movq	%rbp, %rdi
	call	_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@PLT
	jmp	.L32
.L35:
	endbr64
	movq	%rax, %rbx
.L32:
	movq	8(%rsp), %rdi
	call	_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@PLT
	movq	440(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L37
	movq	%rbx, %rdi
.LEHB3:
	call	_Unwind_Resume@PLT
.LEHE3:
.L37:
	call	__stack_chk_fail@PLT
.L34:
	addq	$456, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4662:
	.globl	__gxx_personality_v0
	.section	.gcc_except_table,"a",@progbits
.LLSDA4662:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4662-.LLSDACSB4662
.LLSDACSB4662:
	.uleb128 .LEHB0-.LFB4662
	.uleb128 .LEHE0-.LEHB0
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB1-.LFB4662
	.uleb128 .LEHE1-.LEHB1
	.uleb128 .L35-.LFB4662
	.uleb128 0
	.uleb128 .LEHB2-.LFB4662
	.uleb128 .LEHE2-.LEHB2
	.uleb128 .L36-.LFB4662
	.uleb128 0
	.uleb128 .LEHB3-.LFB4662
	.uleb128 .LEHE3-.LEHB3
	.uleb128 0
	.uleb128 0
.LLSDACSE4662:
	.text
	.size	_ZN10atspSolver9fullCycle7displayEv, .-_ZN10atspSolver9fullCycle7displayEv
	.section	.rodata._ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.str1.1,"aMS",@progbits,1
.LC3:
	.string	"vector::_M_realloc_insert"
	.section	.text._ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_,"axG",@progbits,_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_,comdat
	.align 2
	.weak	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
	.type	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_, @function
_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_:
.LFB5286:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movabsq	$2305843009213693951, %rbx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movq	8(%rdi), %rax
	movq	(%rdi), %r14
	movq	%rax, (%rsp)
	subq	%r14, %rax
	sarq	$2, %rax
	cmpq	%rbx, %rax
	jne	.L41
	leaq	.LC3(%rip), %rdi
	call	_ZSt20__throw_length_errorPKc@PLT
.L41:
	movq	%rdx, %rcx
	cmpq	%r14, (%rsp)
	movl	$1, %edx
	movq	%rdi, %r13
	cmovne	%rax, %rdx
	movq	%rsi, %rbp
	addq	%rdx, %rax
	jc	.L45
	movabsq	$2305843009213693951, %rbx
	cmpq	%rbx, %rax
	cmovbe	%rax, %rbx
.L45:
	movq	%rbx, %rdi
	movq	%rcx, 8(%rsp)
	movq	%rbp, %r15
	call	_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.isra.0
	movq	8(%rsp), %rcx
	subq	%r14, %r15
	movq	%rax, %r12
	movl	(%rcx), %eax
	movl	%eax, (%r12,%r15)
	testq	%r15, %r15
	jle	.L46
	movq	%r15, %rdx
	movq	%r14, %rsi
	movq	%r12, %rdi
	call	memmove@PLT
.L46:
	movq	(%rsp), %rax
	leaq	4(%r12,%r15), %rdx
	subq	%rbp, %rax
	testq	%rax, %rax
	jle	.L47
	movq	%rdx, %rdi
	movq	%rbp, %rsi
	movq	%rax, %rcx
	rep movsb
.L47:
	leaq	(%rdx,%rax), %rbp
	testq	%r14, %r14
	je	.L48
	movq	16(%r13), %rsi
	movq	%r14, %rdi
	subq	%r14, %rsi
	call	_ZdlPvm@PLT
.L48:
	leaq	(%r12,%rbx,4), %rax
	movq	%r12, 0(%r13)
	movq	%rbp, 8(%r13)
	movq	%rax, 16(%r13)
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5286:
	.size	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_, .-_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
	.section	.text._ZNSt6vectorIiSaIiEE9push_backERKi,"axG",@progbits,_ZNSt6vectorIiSaIiEE9push_backERKi,comdat
	.align 2
	.weak	_ZNSt6vectorIiSaIiEE9push_backERKi
	.type	_ZNSt6vectorIiSaIiEE9push_backERKi, @function
_ZNSt6vectorIiSaIiEE9push_backERKi:
.LFB5067:
	.cfi_startproc
	endbr64
	movq	%rsi, %rdx
	movq	8(%rdi), %rsi
	cmpq	16(%rdi), %rsi
	je	.L56
	movl	(%rdx), %eax
	addq	$4, %rsi
	movl	%eax, -4(%rsi)
	movq	%rsi, 8(%rdi)
	ret
.L56:
	jmp	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
	.cfi_endproc
.LFE5067:
	.size	_ZNSt6vectorIiSaIiEE9push_backERKi, .-_ZNSt6vectorIiSaIiEE9push_backERKi
	.section	.text._ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_,"axG",@progbits,_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_,comdat
	.align 2
	.weak	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_
	.type	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_, @function
_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_:
.LFB5467:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rdx, %r15
	movabsq	$288230376151711743, %rdx
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	movq	8(%rdi), %rax
	movq	(%rdi), %r14
	movq	%rsi, 8(%rsp)
	movq	%rax, %rbx
	movq	%rax, (%rsp)
	subq	%r14, %rbx
	sarq	$5, %rbx
	cmpq	%rdx, %rbx
	jne	.L60
	leaq	.LC3(%rip), %rdi
	call	_ZSt20__throw_length_errorPKc@PLT
.L60:
	cmpq	%r14, (%rsp)
	movl	$1, %eax
	movq	8(%rsp), %rbp
	movq	%rdi, %r13
	cmovne	%rbx, %rax
	addq	%rax, %rbx
	setc	%al
	subq	%r14, %rbp
	movzbl	%al, %eax
	testq	%rax, %rax
	jne	.L72
	xorl	%r12d, %r12d
	testq	%rbx, %rbx
	je	.L65
	movabsq	$288230376151711743, %rax
	cmpq	%rax, %rbx
	cmova	%rax, %rbx
	jmp	.L64
.L72:
	movq	%rdx, %rbx
.L64:
	movq	%rbx, %rdi
	salq	$5, %rdi
	call	_Znwm@PLT
	movq	%rax, %r12
.L65:
	leaq	(%r12,%rbp), %rdi
	movq	%r15, %rsi
	movq	%r14, %rbp
	call	_ZN10atspSolver9fullCycleC1EOS0_
	movq	%r12, %rdi
.L66:
	leaq	32(%rdi), %r15
	cmpq	%rbp, 8(%rsp)
	je	.L68
	movq	%rbp, %rsi
	call	_ZN10atspSolver9fullCycleC1EOS0_
	movq	%rbp, %rdi
	addq	$32, %rbp
	call	_ZNSt6vectorIiSaIiEED1Ev
	movq	%r15, %rdi
	jmp	.L66
.L68:
	movq	(%rsp), %rax
	cmpq	%rax, %rbp
	je	.L79
	movq	%rbp, %rsi
	movq	%r15, %rdi
	addq	$32, %r15
	call	_ZN10atspSolver9fullCycleC1EOS0_
	movq	%rbp, %rdi
	addq	$32, %rbp
	call	_ZNSt6vectorIiSaIiEED1Ev
	jmp	.L68
.L79:
	testq	%r14, %r14
	je	.L70
	movq	16(%r13), %rsi
	movq	%r14, %rdi
	subq	%r14, %rsi
	call	_ZdlPvm@PLT
.L70:
	salq	$5, %rbx
	movq	%r12, 0(%r13)
	addq	%rbx, %r12
	movq	%r15, 8(%r13)
	movq	%r12, 16(%r13)
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5467:
	.size	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_, .-_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_
	.section	.text._ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_,"axG",@progbits,_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_,comdat
	.weak	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_
	.type	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_, @function
_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_:
.LFB5649:
	.cfi_startproc
	endbr64
	subq	%rdi, %rsi
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdx, %rcx
	movq	%rsi, %rbx
	cmpq	$4, %rsi
	jle	.L81
	movq	%rsi, %rdx
	movq	%rdi, %rsi
	movq	%rcx, %rdi
	call	memmove@PLT
	movq	%rax, %rcx
	jmp	.L82
.L81:
	jne	.L82
	movl	(%rdi), %eax
	movl	%eax, (%rdx)
.L82:
	leaq	(%rcx,%rbx), %rax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5649:
	.size	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_, .-_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_
	.section	.text._ZNSt6vectorIiSaIiEEC2ERKS1_,"axG",@progbits,_ZNSt6vectorIiSaIiEEC5ERKS1_,comdat
	.align 2
	.weak	_ZNSt6vectorIiSaIiEEC2ERKS1_
	.type	_ZNSt6vectorIiSaIiEEC2ERKS1_, @function
_ZNSt6vectorIiSaIiEEC2ERKS1_:
.LFB5036:
	.cfi_startproc
	endbr64
	xorl	%eax, %eax
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	8(%rsi), %r12
	movq	%rdi, %rbx
	subq	(%rsi), %r12
	movq	%rax, (%rdi)
	movq	%rax, 8(%rdi)
	movq	%rax, 16(%rdi)
	movq	%r12, %rdi
	sarq	$2, %rdi
	call	_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.isra.0
	addq	%rax, %r12
	movq	%rax, (%rbx)
	movq	%rax, %rdx
	movq	%r12, 16(%rbx)
	movq	%rax, 8(%rbx)
	movq	8(%rbp), %rsi
	movq	0(%rbp), %rdi
	call	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_
	movq	%rax, 8(%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE5036:
	.size	_ZNSt6vectorIiSaIiEEC2ERKS1_, .-_ZNSt6vectorIiSaIiEEC2ERKS1_
	.weak	_ZNSt6vectorIiSaIiEEC1ERKS1_
	.set	_ZNSt6vectorIiSaIiEEC1ERKS1_,_ZNSt6vectorIiSaIiEEC2ERKS1_
	.text
	.globl	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
	.type	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE, @function
_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE:
.LFB4674:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4674
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rdi, %rbx
	subq	$88, %rsp
	.cfi_def_cfa_offset 144
	movq	%rcx, 8(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 72(%rsp)
	xorl	%eax, %eax
	cmpl	%edx, %esi
	je	.L87
	movslq	%esi, %r13
	leaq	40(%rsp), %rax
	movl	%esi, %ebp
	movl	%edx, %r12d
	salq	$2, %r13
	movq	%rax, (%rsp)
	movl	%esi, %r15d
	movq	%r13, %r14
	jmp	.L88
.L87:
	movq	(%rdi), %rsi
	leaq	16(%rsp), %rbp
	leaq	40(%rsp), %r12
.LEHB4:
	call	_ZNSt6vectorIiSaIiEE9push_backERKi
	movq	8(%rsp), %rsi
	movq	%rbx, %rdi
	call	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE
	movq	%rbx, %rsi
	movq	%rbp, %rdi
	movq	%xmm0, %r13
	call	_ZNSt6vectorIiSaIiEEC1ERKS1_
.LEHE4:
	movq	%rbp, %rsi
	movq	%r12, %rdi
.LEHB5:
	call	_ZNSt6vectorIiSaIiEEC1ERKS1_
.LEHE5:
	movq	8+_ZN10atspSolver10fullCyclesE(%rip), %rbx
	cmpq	16+_ZN10atspSolver10fullCyclesE(%rip), %rbx
	movq	%r13, 64(%rsp)
	je	.L89
	movq	%rbx, %rdi
	movq	%r12, %rsi
	addq	$32, %rbx
	call	_ZN10atspSolver9fullCycleC1EOS0_
	movq	%rbx, 8+_ZN10atspSolver10fullCyclesE(%rip)
	jmp	.L90
.L89:
	movq	%r12, %rdx
	movq	%rbx, %rsi
	leaq	_ZN10atspSolver10fullCyclesE(%rip), %rdi
.LEHB6:
	call	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_
.LEHE6:
.L90:
	movq	%r12, %rdi
	call	_ZNSt6vectorIiSaIiEED1Ev
	movq	%rbp, %rdi
	call	_ZNSt6vectorIiSaIiEED1Ev
	jmp	.L86
.L92:
	movq	(%rbx), %rax
	movq	(%rsp), %rdi
	leaq	(%rax,%r14), %rdx
	addq	%r13, %rax
	movl	(%rdx), %esi
	movl	(%rax), %ecx
	movl	%esi, (%rax)
	movq	%rbx, %rsi
	movl	%ecx, (%rdx)
.LEHB7:
	call	_ZNSt6vectorIiSaIiEEC1ERKS1_
.LEHE7:
	movq	8(%rsp), %rcx
	leal	1(%rbp), %esi
	movl	%r12d, %edx
	movq	(%rsp), %rdi
.LEHB8:
	call	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
.LEHE8:
	movq	(%rsp), %rdi
	incl	%r15d
	call	_ZNSt6vectorIiSaIiEED1Ev
	movq	(%rbx), %rax
	leaq	(%rax,%r14), %rdx
	addq	%r13, %rax
	addq	$4, %r14
	movl	(%rax), %ecx
	movl	(%rdx), %esi
	movl	%esi, (%rax)
	movl	%ecx, (%rdx)
.L88:
	cmpl	%r12d, %r15d
	jle	.L92
	jmp	.L86
.L100:
	endbr64
	movq	%rax, %rbx
.L93:
	movq	%r12, %rdi
	call	_ZNSt6vectorIiSaIiEED1Ev
	jmp	.L94
.L99:
	endbr64
	movq	%rax, %rbx
.L94:
	movq	%rbp, %rdi
	jmp	.L105
.L101:
	endbr64
	movq	%rax, %rbx
.L96:
	movq	(%rsp), %rdi
.L105:
	call	_ZNSt6vectorIiSaIiEED1Ev
	movq	72(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L104
	movq	%rbx, %rdi
.LEHB9:
	call	_Unwind_Resume@PLT
.LEHE9:
.L86:
	movq	72(%rsp), %rax
	subq	%fs:40, %rax
	je	.L98
.L104:
	call	__stack_chk_fail@PLT
.L98:
	addq	$88, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4674:
	.section	.gcc_except_table
.LLSDA4674:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4674-.LLSDACSB4674
.LLSDACSB4674:
	.uleb128 .LEHB4-.LFB4674
	.uleb128 .LEHE4-.LEHB4
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB5-.LFB4674
	.uleb128 .LEHE5-.LEHB5
	.uleb128 .L99-.LFB4674
	.uleb128 0
	.uleb128 .LEHB6-.LFB4674
	.uleb128 .LEHE6-.LEHB6
	.uleb128 .L100-.LFB4674
	.uleb128 0
	.uleb128 .LEHB7-.LFB4674
	.uleb128 .LEHE7-.LEHB7
	.uleb128 0
	.uleb128 0
	.uleb128 .LEHB8-.LFB4674
	.uleb128 .LEHE8-.LEHB8
	.uleb128 .L101-.LFB4674
	.uleb128 0
	.uleb128 .LEHB9-.LFB4674
	.uleb128 .LEHE9-.LEHB9
	.uleb128 0
	.uleb128 0
.LLSDACSE4674:
	.text
	.size	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE, .-_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
	.globl	_ZN10atspSolver15findOptimalPathERKNS_5GraphE
	.type	_ZN10atspSolver15findOptimalPathERKNS_5GraphE, @function
_ZN10atspSolver15findOptimalPathERKNS_5GraphE:
.LFB4679:
	.cfi_startproc
	.cfi_personality 0x9b,DW.ref.__gxx_personality_v0
	.cfi_lsda 0x1b,.LLSDA4679
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movq	%rsi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movq	%rdi, %rbx
	subq	$88, %rsp
	.cfi_def_cfa_offset 144
	movq	%fs:40, %rax
	movq	%rax, 72(%rsp)
	xorl	%eax, %eax
	xorl	%eax, %eax
	movq	%rax, 24(%rsp)
	movq	%rax, 32(%rsp)
	movq	%rax, 40(%rsp)
	leaq	24(%rsp), %rax
	movq	%rax, (%rsp)
.L107:
	movq	%r13, %rdi
	movl	%ebp, 48(%rsp)
.LEHB10:
	call	_ZNK10atspSolver5Graph16getNumberOfNodesEv@PLT
	cmpl	%ebp, %eax
	leaq	48(%rsp), %r12
	jle	.L135
	movq	(%rsp), %rdi
	movq	%r12, %rsi
	call	_ZNSt6vectorIiSaIiEE9push_backERKi
	incl	%ebp
	jmp	.L107
.L135:
	movq	32(%rsp), %rbp
	movq	(%rsp), %rsi
	movq	%r12, %rdi
	subq	24(%rsp), %rbp
	sarq	$2, %rbp
	decl	%ebp
	call	_ZNSt6vectorIiSaIiEEC1ERKS1_
.LEHE10:
	movq	%r13, %rcx
	movl	%ebp, %edx
	xorl	%esi, %esi
	movq	%r12, %rdi
.LEHB11:
	call	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
.LEHE11:
	movq	%r12, %rdi
	call	_ZNSt6vectorIiSaIiEED1Ev
	movq	_ZN10atspSolver10fullCyclesE(%rip), %rbp
	movq	%rbx, %rdi
	movq	%rbp, %rsi
.LEHB12:
	call	_ZNSt6vectorIiSaIiEEC1ERKS1_
.LEHE12:
	movsd	24(%rbp), %xmm0
	xorl	%r15d, %r15d
	movsd	%xmm0, 24(%rbx)
.L109:
	movq	_ZN10atspSolver10fullCyclesE(%rip), %rbp
	movq	8+_ZN10atspSolver10fullCyclesE(%rip), %rax
	subq	%rbp, %rax
	sarq	$5, %rax
	cmpq	%rax, %r15
	jnb	.L136
	movq	%r15, %rax
	movsd	24(%rbx), %xmm0
	salq	$5, %rax
	addq	%rax, %rbp
	comisd	24(%rbp), %xmm0
	jbe	.L110
	cmpq	%rbp, %rbx
	je	.L112
	movq	8(%rbp), %rax
	movq	0(%rbp), %r14
	movq	(%rbx), %rdi
	movq	%rax, %r12
	movq	%rax, 8(%rsp)
	movq	16(%rbx), %rax
	subq	%r14, %r12
	subq	%rdi, %rax
	cmpq	%r12, %rax
	jnb	.L113
	movq	%r12, %rdi
	sarq	$2, %rdi
.LEHB13:
	call	_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.isra.0
.LEHE13:
	movq	8(%rsp), %rsi
	movq	%r14, %rdi
	movq	%rax, %rdx
	movq	%rax, %r13
	call	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.L114
	movq	16(%rbx), %rsi
	subq	%rdi, %rsi
	call	_ZdlPvm@PLT
.L114:
	movq	%r13, (%rbx)
	addq	%r12, %r13
	movq	%r13, 16(%rbx)
	jmp	.L115
.L113:
	movq	8(%rbx), %rdx
	subq	%rdi, %rdx
	cmpq	%r12, %rdx
	jb	.L116
	movq	8(%rsp), %rsi
	movq	%rdi, %rdx
	movq	%r14, %rdi
	call	_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mIKiiEEPT0_PT_S7_S5_
	jmp	.L115
.L116:
	cmpq	$4, %rdx
	jle	.L117
	movq	%r14, %rsi
	call	memmove@PLT
	jmp	.L118
.L117:
	jne	.L118
	movl	(%r14), %eax
	movl	%eax, (%rdi)
.L118:
	movq	8(%rbx), %rdi
	movq	8(%rbp), %rdx
	movq	%rdi, %rsi
	subq	(%rbx), %rsi
	addq	0(%rbp), %rsi
	subq	%rsi, %rdx
	cmpq	$4, %rdx
	jle	.L119
	call	memmove@PLT
	jmp	.L115
.L119:
	jne	.L115
	movl	(%rsi), %eax
	movl	%eax, (%rdi)
.L115:
	addq	(%rbx), %r12
	movq	%r12, 8(%rbx)
.L112:
	movsd	24(%rbp), %xmm0
	movsd	%xmm0, 24(%rbx)
.L110:
	incq	%r15
	jmp	.L109
.L136:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIiSaIiEED1Ev
	movq	72(%rsp), %rax
	subq	%fs:40, %rax
	je	.L125
	jmp	.L133
.L127:
	endbr64
	movq	%rax, %rbx
.L121:
	movq	%r12, %rdi
	call	_ZNSt6vectorIiSaIiEED1Ev
	jmp	.L122
.L128:
	endbr64
	movq	%rax, %rbp
.L123:
	movq	%rbx, %rdi
	movq	%rbp, %rbx
	call	_ZNSt6vectorIiSaIiEED1Ev
	jmp	.L122
.L126:
	endbr64
	movq	%rax, %rbx
.L122:
	movq	(%rsp), %rdi
	call	_ZNSt6vectorIiSaIiEED1Ev
	movq	72(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L133
	movq	%rbx, %rdi
.LEHB14:
	call	_Unwind_Resume@PLT
.LEHE14:
.L133:
	call	__stack_chk_fail@PLT
.L125:
	addq	$88, %rsp
	.cfi_def_cfa_offset 56
	movq	%rbx, %rax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE4679:
	.section	.gcc_except_table
.LLSDA4679:
	.byte	0xff
	.byte	0xff
	.byte	0x1
	.uleb128 .LLSDACSE4679-.LLSDACSB4679
.LLSDACSB4679:
	.uleb128 .LEHB10-.LFB4679
	.uleb128 .LEHE10-.LEHB10
	.uleb128 .L126-.LFB4679
	.uleb128 0
	.uleb128 .LEHB11-.LFB4679
	.uleb128 .LEHE11-.LEHB11
	.uleb128 .L127-.LFB4679
	.uleb128 0
	.uleb128 .LEHB12-.LFB4679
	.uleb128 .LEHE12-.LEHB12
	.uleb128 .L126-.LFB4679
	.uleb128 0
	.uleb128 .LEHB13-.LFB4679
	.uleb128 .LEHE13-.LEHB13
	.uleb128 .L128-.LFB4679
	.uleb128 0
	.uleb128 .LEHB14-.LFB4679
	.uleb128 .LEHE14-.LEHB14
	.uleb128 0
	.uleb128 0
.LLSDACSE4679:
	.text
	.size	_ZN10atspSolver15findOptimalPathERKNS_5GraphE, .-_ZN10atspSolver15findOptimalPathERKNS_5GraphE
	.section	.text.startup
	.type	_GLOBAL__sub_I__ZN10atspSolver9fullCycle7displayEv, @function
_GLOBAL__sub_I__ZN10atspSolver9fullCycle7displayEv:
.LFB5671:
	.cfi_startproc
	endbr64
	xorl	%eax, %eax
	leaq	__dso_handle(%rip), %rdx
	leaq	_ZN10atspSolver10fullCyclesE(%rip), %rsi
	leaq	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED1Ev(%rip), %rdi
	movq	%rax, _ZN10atspSolver10fullCyclesE(%rip)
	movq	%rax, 8+_ZN10atspSolver10fullCyclesE(%rip)
	movq	%rax, 16+_ZN10atspSolver10fullCyclesE(%rip)
	jmp	__cxa_atexit@PLT
	.cfi_endproc
.LFE5671:
	.size	_GLOBAL__sub_I__ZN10atspSolver9fullCycle7displayEv, .-_GLOBAL__sub_I__ZN10atspSolver9fullCycle7displayEv
	.section	.init_array
	.align 8
	.quad	_GLOBAL__sub_I__ZN10atspSolver9fullCycle7displayEv
	.section	.nvFatBinSegment,"aw"
	.align 8
	.type	_ZL15__fatDeviceText, @object
	.size	_ZL15__fatDeviceText, 24
_ZL15__fatDeviceText:
	.long	1180844977
	.long	1
	.quad	fatbinData
	.quad	0
	.local	_ZL20__cudaFatCubinHandle
	.comm	_ZL20__cudaFatCubinHandle,8,8
	.globl	_ZN10atspSolver10fullCyclesE
	.bss
	.align 16
	.type	_ZN10atspSolver10fullCyclesE, @object
	.size	_ZN10atspSolver10fullCyclesE, 24
_ZN10atspSolver10fullCyclesE:
	.zero	24
	.hidden	DW.ref.__gxx_personality_v0
	.weak	DW.ref.__gxx_personality_v0
	.section	.data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat
	.align 8
	.type	DW.ref.__gxx_personality_v0, @object
	.size	DW.ref.__gxx_personality_v0, 8
DW.ref.__gxx_personality_v0:
	.quad	__gxx_personality_v0
	.hidden	__dso_handle
	.ident	"GCC: (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

#include <iostream>
#include <vector>
#include "hip/hip_runtime.h"

#include "Graph.cuh"
#include "Solver.cuh"

using namespace std;

namespace atspSolver
{
	void fullCycle::display()
	{
		std::stringstream stream;
		int pathSize = path.size();

		for (int i = 0; i < pathSize; i++)
		{
			stream << path[i];
			if (i != pathSize - 1) stream << " -> ";
		}
		stream << "  |  cost: " << totalCost;
		std::cout << stream.str() << std::endl;
	}

	double calculateCost(const std::vector<int> &v, const Graph &graph)
	{
		double result = 0;
		int vectorSize = v.size();
		int numberOfNodes = graph.getNumberOfNodes();

		for (int i = 0; (i + 1) < vectorSize; i++)
		{
			// v[i] = row, v[i + 1] = column
			int graphIndex = v[i + 1] + v[i] * numberOfNodes;
			result += graph[graphIndex];
		}

		return result;
	}

	std::vector<fullCycle> fullCycles;
	void permute(vector<int> a, int l, int r, const Graph& graph)
	{
		if (l == r) {
			a.push_back(a[0]);
			double cost = calculateCost(a, graph);
			fullCycles.push_back(fullCycle(a, cost));
		}
		else
		{
			for (int i = l; i <= r; i++)
			{
				swap(a[l], a[i]);

				// Recursion 
				permute(a, l + 1, r, graph);

				// Backtrack  
				swap(a[l], a[i]);
			}
		}
	}

	fullCycle findOptimalPath(const Graph &graph)
	{
		std::vector<int> v;
		for (int i = 0; i < graph.getNumberOfNodes(); i++)
		{
			v.push_back(i);
		}

		permute(v, 0, v.size() - 1, graph);

		fullCycle result = fullCycles[0];
		for (int i = 0; i < fullCycles.size(); i++)
		{
			if (fullCycles[i].totalCost < result.totalCost)
			{
				result = fullCycles[i];
			}
		}

		return result;
	}
}
	.text
	.file	"Solver.hip"
                                        # Start of file scope inline assembly
	.globl	_ZSt21ios_base_library_initv

                                        # End of file scope inline assembly
	.globl	_ZN10atspSolver9fullCycle7displayEv # -- Begin function _ZN10atspSolver9fullCycle7displayEv
	.p2align	1, 0x90
	.type	_ZN10atspSolver9fullCycle7displayEv,@function
_ZN10atspSolver9fullCycle7displayEv:    # @_ZN10atspSolver9fullCycle7displayEv
.Lfunc_begin0:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception0
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r13
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$432, %rsp                      # imm = 0x1B0
	.cfi_def_cfa_offset 480
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r13, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdi, %rbx
	leaq	40(%rsp), %rdi
	callq	_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev
	movq	8(%rbx), %rax
	subq	(%rbx), %rax
	shrq	$2, %rax
	testl	%eax, %eax
	jle	.LBB0_6
# %bb.1:                                # %.lr.ph
	leaq	56(%rsp), %r14
	leal	-1(%rax), %r15d
	movl	%eax, %r12d
	xorl	%r13d, %r13d
.LBB0_2:                                # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rax
	movl	(%rax,%r13,4), %esi
.Ltmp0:
	movq	%r14, %rdi
	callq	_ZNSolsEi
.Ltmp1:
# %bb.3:                                #   in Loop: Header=BB0_2 Depth=1
	cmpq	%r13, %r15
	je	.LBB0_5
# %bb.4:                                #   in Loop: Header=BB0_2 Depth=1
.Ltmp2:
	movl	$.L.str, %esi
	movl	$4, %edx
	movq	%r14, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp3:
.LBB0_5:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit15
                                        #   in Loop: Header=BB0_2 Depth=1
	incq	%r13
	cmpq	%r13, %r12
	jne	.LBB0_2
.LBB0_6:                                # %._crit_edge
	leaq	56(%rsp), %r14
.Ltmp5:
	movl	$.L.str.1, %esi
	movl	$11, %edx
	movq	%r14, %rdi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp6:
# %bb.7:                                # %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
	movsd	24(%rbx), %xmm0                 # xmm0 = mem[0],zero
.Ltmp7:
	movq	%r14, %rdi
	callq	_ZNSo9_M_insertIdEERSoT_
.Ltmp8:
# %bb.8:                                # %_ZNSolsEd.exit
	leaq	64(%rsp), %rsi
.Ltmp10:
	leaq	8(%rsp), %rdi
	callq	_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv
.Ltmp11:
# %bb.9:                                # %_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv.exit
	movq	8(%rsp), %rsi
	movq	16(%rsp), %rdx
.Ltmp13:
	movl	$_ZSt4cout, %edi
	callq	_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
.Ltmp14:
# %bb.10:                               # %_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE.exit
	movq	%rax, %rbx
	movq	(%rax), %rax
	movq	-24(%rax), %rdi
	addq	%rbx, %rdi
.Ltmp15:
	movl	$10, %esi
	callq	_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc
.Ltmp16:
# %bb.11:                               # %.noexc
.Ltmp17:
	movsbl	%al, %esi
	movq	%rbx, %rdi
	callq	_ZNSo3putEc
.Ltmp18:
# %bb.12:                               # %.noexc19
.Ltmp19:
	movq	%rax, %rdi
	callq	_ZNSo5flushEv
.Ltmp20:
# %bb.13:                               # %_ZNSolsEPFRSoS_E.exit
	leaq	24(%rsp), %rax
	movq	-16(%rax), %rdi
	cmpq	%rax, %rdi
	je	.LBB0_15
# %bb.14:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i
	callq	_ZdlPv
.LBB0_15:                               # %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit
	leaq	40(%rsp), %rdi
	movl	$_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, %esi
	callq	_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev
	leaq	168(%rsp), %rdi
	callq	_ZNSt8ios_baseD2Ev
	addq	$432, %rsp                      # imm = 0x1B0
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB0_16:
	.cfi_def_cfa_offset 480
.Ltmp12:
	jmp	.LBB0_21
.LBB0_17:
.Ltmp9:
	jmp	.LBB0_21
.LBB0_18:
.Ltmp21:
	movq	%rax, %rbx
	leaq	24(%rsp), %rax
	movq	-16(%rax), %rdi
	cmpq	%rax, %rdi
	je	.LBB0_22
# %bb.19:                               # %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i16
	callq	_ZdlPv
	jmp	.LBB0_22
.LBB0_20:
.Ltmp4:
.LBB0_21:
	movq	%rax, %rbx
.LBB0_22:
	leaq	40(%rsp), %rdi
	movl	$_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, %esi
	callq	_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev
	leaq	168(%rsp), %rdi
	callq	_ZNSt8ios_baseD2Ev
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end0:
	.size	_ZN10atspSolver9fullCycle7displayEv, .Lfunc_end0-_ZN10atspSolver9fullCycle7displayEv
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table0:
.Lexception0:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end0-.Lcst_begin0
.Lcst_begin0:
	.uleb128 .Lfunc_begin0-.Lfunc_begin0    # >> Call Site 1 <<
	.uleb128 .Ltmp0-.Lfunc_begin0           #   Call between .Lfunc_begin0 and .Ltmp0
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp0-.Lfunc_begin0           # >> Call Site 2 <<
	.uleb128 .Ltmp3-.Ltmp0                  #   Call between .Ltmp0 and .Ltmp3
	.uleb128 .Ltmp4-.Lfunc_begin0           #     jumps to .Ltmp4
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp5-.Lfunc_begin0           # >> Call Site 3 <<
	.uleb128 .Ltmp8-.Ltmp5                  #   Call between .Ltmp5 and .Ltmp8
	.uleb128 .Ltmp9-.Lfunc_begin0           #     jumps to .Ltmp9
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp10-.Lfunc_begin0          # >> Call Site 4 <<
	.uleb128 .Ltmp11-.Ltmp10                #   Call between .Ltmp10 and .Ltmp11
	.uleb128 .Ltmp12-.Lfunc_begin0          #     jumps to .Ltmp12
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp13-.Lfunc_begin0          # >> Call Site 5 <<
	.uleb128 .Ltmp20-.Ltmp13                #   Call between .Ltmp13 and .Ltmp20
	.uleb128 .Ltmp21-.Lfunc_begin0          #     jumps to .Ltmp21
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp20-.Lfunc_begin0          # >> Call Site 6 <<
	.uleb128 .Lfunc_end0-.Ltmp20            #   Call between .Ltmp20 and .Lfunc_end0
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end0:
	.p2align	2, 0x0
                                        # -- End function
	.text
	.globl	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE # -- Begin function _ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE
	.type	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE,@function
_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE: # @_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$16, %rsp
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rsi, %rbx
	movq	%rdi, %r14
	movq	8(%rdi), %r15
	subq	(%rdi), %r15
	shrq	$2, %r15
	movq	%rsi, %rdi
	callq	_ZNK10atspSolver5Graph16getNumberOfNodesEv
	xorpd	%xmm0, %xmm0
	cmpl	$2, %r15d
	jl	.LBB1_3
# %bb.1:                                # %.lr.ph.preheader
	movl	%eax, %ebp
	decl	%r15d
	xorl	%r12d, %r12d
.LBB1_2:                                # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	movq	(%r14), %rax
	movl	(%rax,%r12,4), %esi
	imull	%ebp, %esi
	addl	4(%rax,%r12,4), %esi
	movq	%rbx, %rdi
	callq	_ZNK10atspSolver5GraphixEi
	movsd	8(%rsp), %xmm1                  # 8-byte Reload
                                        # xmm1 = mem[0],zero
	addsd	%xmm0, %xmm1
	movsd	%xmm1, 8(%rsp)                  # 8-byte Spill
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	incq	%r12
	cmpq	%r12, %r15
	jne	.LBB1_2
.LBB1_3:                                # %._crit_edge
	addq	$16, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end1:
	.size	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE, .Lfunc_end1-_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev,"axG",@progbits,_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev,comdat
	.weak	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev # -- Begin function _ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev
	.p2align	1, 0x90
	.type	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev,@function
_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev: # @_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset %rbx, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	(%rdi), %rbx
	movq	8(%rdi), %r15
	cmpq	%r15, %rbx
	je	.LBB2_6
# %bb.1:                                # %.lr.ph.i.i.i.preheader
	movq	%rdi, %r14
.LBB2_2:                                # %.lr.ph.i.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB2_4
# %bb.3:                                #   in Loop: Header=BB2_2 Depth=1
	callq	_ZdlPv
.LBB2_4:                                # %_ZSt8_DestroyIN10atspSolver9fullCycleEEvPT_.exit.i.i.i
                                        #   in Loop: Header=BB2_2 Depth=1
	addq	$32, %rbx
	cmpq	%r15, %rbx
	jne	.LBB2_2
# %bb.5:                                # %_ZSt8_DestroyIPN10atspSolver9fullCycleES1_EvT_S3_RSaIT0_E.exitthread-pre-split
	movq	(%r14), %rbx
.LBB2_6:                                # %_ZSt8_DestroyIPN10atspSolver9fullCycleES1_EvT_S3_RSaIT0_E.exit
	testq	%rbx, %rbx
	je	.LBB2_7
# %bb.8:
	movq	%rbx, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	jmp	_ZdlPv                          # TAILCALL
.LBB2_7:                                # %_ZNSt12_Vector_baseIN10atspSolver9fullCycleESaIS1_EED2Ev.exit
	.cfi_def_cfa_offset 32
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end2:
	.size	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev, .Lfunc_end2-_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev
	.cfi_endproc
                                        # -- End function
	.text
	.globl	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE # -- Begin function _ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
	.type	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE,@function
_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE: # @_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
.Lfunc_begin1:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception1
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$104, %rsp
	.cfi_def_cfa_offset 160
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rcx, 8(%rsp)                   # 8-byte Spill
	movq	%rdi, %rbx
	cmpl	%edx, %esi
	jne	.LBB3_1
# %bb.8:
	movq	(%rbx), %rdx
	movq	8(%rbx), %rsi
	cmpq	16(%rbx), %rsi
	je	.LBB3_10
# %bb.9:
	movl	(%rdx), %eax
	movl	%eax, (%rsi)
	addq	$4, %rsi
	movq	%rsi, 8(%rbx)
	jmp	.LBB3_11
.LBB3_1:                                # %.preheader
	jg	.LBB3_7
# %bb.2:                                # %.lr.ph
	movl	%edx, %ebp
	movl	%esi, %r15d
	movslq	%esi, %r12
	leal	1(%r15), %eax
	movl	%eax, 20(%rsp)                  # 4-byte Spill
	movq	(%rbx), %rax
	decl	%r15d
	leaq	24(%rsp), %r13
	movq	%r12, %r14
.LBB3_3:                                # =>This Inner Loop Header: Depth=1
	movl	(%rax,%r12,4), %ecx
	movl	(%rax,%r14,4), %edx
	movl	%edx, (%rax,%r12,4)
	movl	%ecx, (%rax,%r14,4)
	movq	%r13, %rdi
	movq	%rbx, %rsi
	callq	_ZNSt6vectorIiSaIiEEC2ERKS1_
.Ltmp22:
	movq	%r13, %rdi
	movl	20(%rsp), %esi                  # 4-byte Reload
	movl	%ebp, %edx
	movq	8(%rsp), %rcx                   # 8-byte Reload
	callq	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
.Ltmp23:
# %bb.4:                                #   in Loop: Header=BB3_3 Depth=1
	movq	24(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB3_6
# %bb.5:                                #   in Loop: Header=BB3_3 Depth=1
	callq	_ZdlPv
.LBB3_6:                                # %_ZNSt6vectorIiSaIiEED2Ev.exit28
                                        #   in Loop: Header=BB3_3 Depth=1
	movq	(%rbx), %rax
	movl	(%rax,%r12,4), %ecx
	movl	(%rax,%r14,4), %edx
	movl	%edx, (%rax,%r12,4)
	movl	%ecx, (%rax,%r14,4)
	incq	%r14
	incl	%r15d
	cmpl	%r15d, %ebp
	jne	.LBB3_3
	jmp	.LBB3_7
.LBB3_10:
	movq	%rbx, %rdi
	callq	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
.LBB3_11:                               # %_ZNSt6vectorIiSaIiEE9push_backERKi.exit
	movq	%rbx, %rdi
	movq	8(%rsp), %rsi                   # 8-byte Reload
	callq	_ZN10atspSolver13calculateCostERKSt6vectorIiSaIiEERKNS_5GraphE
	movsd	%xmm0, 8(%rsp)                  # 8-byte Spill
	leaq	48(%rsp), %r14
	movq	%r14, %rdi
	movq	%rbx, %rsi
	callq	_ZNSt6vectorIiSaIiEEC2ERKS1_
.Ltmp25:
	leaq	72(%rsp), %rdi
	movq	%r14, %rsi
	callq	_ZNSt6vectorIiSaIiEEC2ERKS1_
.Ltmp26:
# %bb.12:
	leaq	72(%rsp), %rsi
	movsd	8(%rsp), %xmm0                  # 8-byte Reload
                                        # xmm0 = mem[0],zero
	movsd	%xmm0, 24(%rsi)
.Ltmp28:
	movl	$_ZN10atspSolver10fullCyclesE, %edi
	callq	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_
.Ltmp29:
# %bb.13:                               # %_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE9push_backEOS1_.exit
	movq	72(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB3_15
# %bb.14:
	callq	_ZdlPv
.LBB3_15:                               # %_ZN10atspSolver9fullCycleD2Ev.exit
	movq	48(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB3_7
# %bb.16:
	callq	_ZdlPv
.LBB3_7:                                # %.loopexit
	addq	$104, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB3_18:
	.cfi_def_cfa_offset 160
.Ltmp30:
	movq	%rax, %rbx
	movq	72(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB3_20
# %bb.19:
	callq	_ZdlPv
	jmp	.LBB3_20
.LBB3_17:
.Ltmp27:
	movq	%rax, %rbx
.LBB3_20:                               # %_ZN10atspSolver9fullCycleD2Ev.exit24
	movq	48(%rsp), %rdi
	jmp	.LBB3_22
.LBB3_21:
.Ltmp24:
	movq	%rax, %rbx
	movq	24(%rsp), %rdi
.LBB3_22:
	testq	%rdi, %rdi
	je	.LBB3_24
# %bb.23:
	callq	_ZdlPv
.LBB3_24:                               # %_ZNSt6vectorIiSaIiEED2Ev.exit30
	movq	%rbx, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end3:
	.size	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE, .Lfunc_end3-_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table3:
.Lexception1:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end1-.Lcst_begin1
.Lcst_begin1:
	.uleb128 .Lfunc_begin1-.Lfunc_begin1    # >> Call Site 1 <<
	.uleb128 .Ltmp22-.Lfunc_begin1          #   Call between .Lfunc_begin1 and .Ltmp22
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp22-.Lfunc_begin1          # >> Call Site 2 <<
	.uleb128 .Ltmp23-.Ltmp22                #   Call between .Ltmp22 and .Ltmp23
	.uleb128 .Ltmp24-.Lfunc_begin1          #     jumps to .Ltmp24
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp23-.Lfunc_begin1          # >> Call Site 3 <<
	.uleb128 .Ltmp25-.Ltmp23                #   Call between .Ltmp23 and .Ltmp25
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp25-.Lfunc_begin1          # >> Call Site 4 <<
	.uleb128 .Ltmp26-.Ltmp25                #   Call between .Ltmp25 and .Ltmp26
	.uleb128 .Ltmp27-.Lfunc_begin1          #     jumps to .Ltmp27
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp28-.Lfunc_begin1          # >> Call Site 5 <<
	.uleb128 .Ltmp29-.Ltmp28                #   Call between .Ltmp28 and .Ltmp29
	.uleb128 .Ltmp30-.Lfunc_begin1          #     jumps to .Ltmp30
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp29-.Lfunc_begin1          # >> Call Site 6 <<
	.uleb128 .Lfunc_end3-.Ltmp29            #   Call between .Ltmp29 and .Lfunc_end3
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end1:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt6vectorIiSaIiEEC2ERKS1_,"axG",@progbits,_ZNSt6vectorIiSaIiEEC2ERKS1_,comdat
	.weak	_ZNSt6vectorIiSaIiEEC2ERKS1_    # -- Begin function _ZNSt6vectorIiSaIiEEC2ERKS1_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIiSaIiEEC2ERKS1_,@function
_ZNSt6vectorIiSaIiEEC2ERKS1_:           # @_ZNSt6vectorIiSaIiEEC2ERKS1_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rsi, %r14
	movq	%rdi, %rbx
	movq	8(%rsi), %rax
	movq	(%rsi), %rcx
	movq	%rax, %r12
	subq	%rcx, %r12
	sarq	$2, %r12
	xorps	%xmm0, %xmm0
	movups	%xmm0, (%rdi)
	movq	$0, 16(%rdi)
	cmpq	%rcx, %rax
	je	.LBB4_1
# %bb.2:
	movq	%rbx, %rdi
	movq	%r12, %rsi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIiE8allocateEmPKv
	movq	%rax, %r15
	jmp	.LBB4_3
.LBB4_1:
	xorl	%r15d, %r15d
.LBB4_3:
	movq	%r15, (%rbx)
	movq	%r15, 8(%rbx)
	leaq	(%r15,%r12,4), %rax
	movq	%rax, 16(%rbx)
	movq	(%r14), %rsi
	movq	8(%r14), %r14
	subq	%rsi, %r14
	cmpq	$5, %r14
	jl	.LBB4_5
# %bb.4:
	movq	%r15, %rdi
	movq	%r14, %rdx
	callq	memmove@PLT
.LBB4_7:
	addq	%r14, %r15
	movq	%r15, 8(%rbx)
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB4_5:
	.cfi_def_cfa_offset 48
	cmpq	$4, %r14
	jne	.LBB4_7
# %bb.6:
	movl	(%rsi), %eax
	movl	%eax, (%r15)
	jmp	.LBB4_7
.Lfunc_end4:
	.size	_ZNSt6vectorIiSaIiEEC2ERKS1_, .Lfunc_end4-_ZNSt6vectorIiSaIiEEC2ERKS1_
	.cfi_endproc
                                        # -- End function
	.text
	.globl	_ZN10atspSolver15findOptimalPathERKNS_5GraphE # -- Begin function _ZN10atspSolver15findOptimalPathERKNS_5GraphE
	.type	_ZN10atspSolver15findOptimalPathERKNS_5GraphE,@function
_ZN10atspSolver15findOptimalPathERKNS_5GraphE: # @_ZN10atspSolver15findOptimalPathERKNS_5GraphE
.Lfunc_begin2:
	.cfi_startproc
	.cfi_personality 3, __gxx_personality_v0
	.cfi_lsda 3, .Lexception2
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r12
	.cfi_def_cfa_offset 40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	subq	$64, %rsp
	.cfi_def_cfa_offset 112
	.cfi_offset %rbx, -48
	.cfi_offset %r12, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rsi, %r14
	movq	%rdi, %rbx
	xorpd	%xmm0, %xmm0
	leaq	16(%rsp), %r15
	movapd	%xmm0, (%r15)
	movq	$0, 16(%r15)
	xorl	%ebp, %ebp
	leaq	12(%rsp), %r12
.LBB5_1:                                # =>This Inner Loop Header: Depth=1
	movl	%ebp, 12(%rsp)
.Ltmp31:
	movq	%r14, %rdi
	callq	_ZNK10atspSolver5Graph16getNumberOfNodesEv
.Ltmp32:
# %bb.2:                                #   in Loop: Header=BB5_1 Depth=1
	cmpl	%eax, %ebp
	jge	.LBB5_3
# %bb.17:                               #   in Loop: Header=BB5_1 Depth=1
	movq	24(%rsp), %rsi
	cmpq	32(%rsp), %rsi
	je	.LBB5_19
# %bb.18:                               #   in Loop: Header=BB5_1 Depth=1
	movl	12(%rsp), %ebp
	movl	%ebp, (%rsi)
	addq	$4, %rsi
	movq	%rsi, 24(%rsp)
	jmp	.LBB5_21
.LBB5_19:                               #   in Loop: Header=BB5_1 Depth=1
.Ltmp44:
	movq	%r15, %rdi
	movq	%r12, %rdx
	callq	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
.Ltmp45:
# %bb.20:                               # %._ZNSt6vectorIiSaIiEE9push_backERKi.exit_crit_edge
                                        #   in Loop: Header=BB5_1 Depth=1
	movl	12(%rsp), %ebp
.LBB5_21:                               # %_ZNSt6vectorIiSaIiEE9push_backERKi.exit
                                        #   in Loop: Header=BB5_1 Depth=1
	incl	%ebp
	jmp	.LBB5_1
.LBB5_3:
.Ltmp33:
	leaq	40(%rsp), %rdi
	leaq	16(%rsp), %rsi
	callq	_ZNSt6vectorIiSaIiEEC2ERKS1_
.Ltmp34:
# %bb.4:
	movq	24(%rsp), %rdx
	subq	16(%rsp), %rdx
	shrq	$2, %rdx
	decl	%edx
.Ltmp35:
	leaq	40(%rsp), %rdi
	xorl	%esi, %esi
                                        # kill: def $edx killed $edx killed $rdx
	movq	%r14, %rcx
	callq	_ZN10atspSolver7permuteESt6vectorIiSaIiEEiiRKNS_5GraphE
.Ltmp36:
# %bb.5:
	movq	40(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB5_7
# %bb.6:
	callq	_ZdlPv
.LBB5_7:                                # %_ZNSt6vectorIiSaIiEED2Ev.exit
	movq	_ZN10atspSolver10fullCyclesE(%rip), %r14
.Ltmp38:
	movq	%rbx, %rdi
	movq	%r14, %rsi
	callq	_ZNSt6vectorIiSaIiEEC2ERKS1_
.Ltmp39:
# %bb.8:                                # %_ZN10atspSolver9fullCycleC2ERKS0_.exit
	movsd	24(%r14), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 24(%rbx)
	movq	_ZN10atspSolver10fullCyclesE+8(%rip), %rax
	movq	_ZN10atspSolver10fullCyclesE(%rip), %r14
	cmpq	%r14, %rax
	je	.LBB5_14
# %bb.9:                                # %.lr.ph.preheader
	xorl	%r15d, %r15d
	xorl	%r12d, %r12d
.LBB5_10:                               # %.lr.ph
                                        # =>This Inner Loop Header: Depth=1
	ucomisd	24(%r14,%r15), %xmm0
	jbe	.LBB5_13
# %bb.11:                               #   in Loop: Header=BB5_10 Depth=1
	leaq	(%r14,%r15), %rsi
.Ltmp41:
	movq	%rbx, %rdi
	callq	_ZNSt6vectorIiSaIiEEaSERKS1_
.Ltmp42:
# %bb.12:                               # %_ZN10atspSolver9fullCycleaSERKS0_.exit
                                        #   in Loop: Header=BB5_10 Depth=1
	movsd	24(%r14,%r15), %xmm0            # xmm0 = mem[0],zero
	movsd	%xmm0, 24(%rbx)
	movq	_ZN10atspSolver10fullCyclesE+8(%rip), %rax
	movq	_ZN10atspSolver10fullCyclesE(%rip), %r14
.LBB5_13:                               #   in Loop: Header=BB5_10 Depth=1
	incq	%r12
	movq	%rax, %rcx
	subq	%r14, %rcx
	sarq	$5, %rcx
	addq	$32, %r15
	cmpq	%r12, %rcx
	ja	.LBB5_10
.LBB5_14:                               # %._crit_edge
	movq	16(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB5_16
# %bb.15:
	callq	_ZdlPv
.LBB5_16:                               # %_ZNSt6vectorIiSaIiEED2Ev.exit17
	movq	%rbx, %rax
	addq	$64, %rsp
	.cfi_def_cfa_offset 48
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.LBB5_23:
	.cfi_def_cfa_offset 112
.Ltmp37:
	movq	%rax, %r14
	movq	40(%rsp), %rdi
	jmp	.LBB5_24
.LBB5_22:
.Ltmp40:
	jmp	.LBB5_28
.LBB5_26:
.Ltmp43:
	movq	%rax, %r14
	movq	(%rbx), %rdi
.LBB5_24:
	testq	%rdi, %rdi
	je	.LBB5_29
# %bb.25:
	callq	_ZdlPv
	jmp	.LBB5_29
.LBB5_27:
.Ltmp46:
.LBB5_28:                               # %_ZNSt6vectorIiSaIiEED2Ev.exit14
	movq	%rax, %r14
.LBB5_29:                               # %_ZNSt6vectorIiSaIiEED2Ev.exit14
	movq	16(%rsp), %rdi
	testq	%rdi, %rdi
	je	.LBB5_31
# %bb.30:
	callq	_ZdlPv
.LBB5_31:                               # %_ZNSt6vectorIiSaIiEED2Ev.exit19
	movq	%r14, %rdi
	callq	_Unwind_Resume@PLT
.Lfunc_end5:
	.size	_ZN10atspSolver15findOptimalPathERKNS_5GraphE, .Lfunc_end5-_ZN10atspSolver15findOptimalPathERKNS_5GraphE
	.cfi_endproc
	.section	.gcc_except_table,"a",@progbits
	.p2align	2, 0x0
GCC_except_table5:
.Lexception2:
	.byte	255                             # @LPStart Encoding = omit
	.byte	255                             # @TType Encoding = omit
	.byte	1                               # Call site Encoding = uleb128
	.uleb128 .Lcst_end2-.Lcst_begin2
.Lcst_begin2:
	.uleb128 .Ltmp31-.Lfunc_begin2          # >> Call Site 1 <<
	.uleb128 .Ltmp45-.Ltmp31                #   Call between .Ltmp31 and .Ltmp45
	.uleb128 .Ltmp46-.Lfunc_begin2          #     jumps to .Ltmp46
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp33-.Lfunc_begin2          # >> Call Site 2 <<
	.uleb128 .Ltmp34-.Ltmp33                #   Call between .Ltmp33 and .Ltmp34
	.uleb128 .Ltmp40-.Lfunc_begin2          #     jumps to .Ltmp40
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp35-.Lfunc_begin2          # >> Call Site 3 <<
	.uleb128 .Ltmp36-.Ltmp35                #   Call between .Ltmp35 and .Ltmp36
	.uleb128 .Ltmp37-.Lfunc_begin2          #     jumps to .Ltmp37
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp38-.Lfunc_begin2          # >> Call Site 4 <<
	.uleb128 .Ltmp39-.Ltmp38                #   Call between .Ltmp38 and .Ltmp39
	.uleb128 .Ltmp40-.Lfunc_begin2          #     jumps to .Ltmp40
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp41-.Lfunc_begin2          # >> Call Site 5 <<
	.uleb128 .Ltmp42-.Ltmp41                #   Call between .Ltmp41 and .Ltmp42
	.uleb128 .Ltmp43-.Lfunc_begin2          #     jumps to .Ltmp43
	.byte	0                               #   On action: cleanup
	.uleb128 .Ltmp42-.Lfunc_begin2          # >> Call Site 6 <<
	.uleb128 .Lfunc_end5-.Ltmp42            #   Call between .Ltmp42 and .Lfunc_end5
	.byte	0                               #     has no landing pad
	.byte	0                               #   On action: cleanup
.Lcst_end2:
	.p2align	2, 0x0
                                        # -- End function
	.section	.text._ZNSt6vectorIiSaIiEEaSERKS1_,"axG",@progbits,_ZNSt6vectorIiSaIiEEaSERKS1_,comdat
	.weak	_ZNSt6vectorIiSaIiEEaSERKS1_    # -- Begin function _ZNSt6vectorIiSaIiEEaSERKS1_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIiSaIiEEaSERKS1_,@function
_ZNSt6vectorIiSaIiEEaSERKS1_:           # @_ZNSt6vectorIiSaIiEEaSERKS1_
	.cfi_startproc
# %bb.0:
	pushq	%r15
	.cfi_def_cfa_offset 16
	pushq	%r14
	.cfi_def_cfa_offset 24
	pushq	%r12
	.cfi_def_cfa_offset 32
	pushq	%rbx
	.cfi_def_cfa_offset 40
	pushq	%rax
	.cfi_def_cfa_offset 48
	.cfi_offset %rbx, -40
	.cfi_offset %r12, -32
	.cfi_offset %r14, -24
	.cfi_offset %r15, -16
	movq	%rdi, %rbx
	cmpq	%rdi, %rsi
	je	.LBB6_23
# %bb.1:
	movq	%rsi, %r12
	movq	(%rsi), %r15
	movq	8(%rsi), %r14
	subq	%r15, %r14
	movq	(%rbx), %rax
	movq	16(%rbx), %rcx
	subq	%rax, %rcx
	cmpq	%rcx, %r14
	jbe	.LBB6_9
# %bb.2:                                # %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i
	movq	%r14, %rsi
	sarq	$2, %rsi
	movq	%rbx, %rdi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIiE8allocateEmPKv
	movq	%rax, %r12
	cmpq	$5, %r14
	jl	.LBB6_4
# %bb.3:
	movq	%r12, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
	callq	memmove@PLT
.LBB6_6:                                # %_ZNSt6vectorIiSaIiEE20_M_allocate_and_copyIN9__gnu_cxx17__normal_iteratorIPKiS1_EEEEPimT_S9_.exit
	movq	(%rbx), %rdi
	testq	%rdi, %rdi
	je	.LBB6_8
# %bb.7:
	callq	_ZdlPv
.LBB6_8:                                # %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit
	movq	%r12, (%rbx)
	addq	%r14, %r12
	movq	%r12, 16(%rbx)
	jmp	.LBB6_22
.LBB6_9:
	movq	8(%rbx), %rdi
	movq	%rdi, %rdx
	subq	%rax, %rdx
	cmpq	%r14, %rdx
	jae	.LBB6_10
# %bb.14:
	cmpq	$5, %rdx
	jl	.LBB6_16
# %bb.15:
	movq	%rax, %rdi
	movq	%r15, %rsi
	callq	memmove@PLT
	movq	8(%rbx), %rdi
.LBB6_18:                               # %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit
	movq	%rdi, %rsi
	subq	(%rbx), %rsi
	addq	(%r12), %rsi
	movq	8(%r12), %rdx
	subq	%rsi, %rdx
	cmpq	$5, %rdx
	jge	.LBB6_19
# %bb.20:
	cmpq	$4, %rdx
	jne	.LBB6_22
# %bb.21:
	movl	(%rsi), %eax
	movl	%eax, (%rdi)
	jmp	.LBB6_22
.LBB6_10:
	cmpq	$5, %r14
	jl	.LBB6_12
# %bb.11:
	movq	%rax, %rdi
	movq	%r15, %rsi
	movq	%r14, %rdx
.LBB6_19:
	callq	memmove@PLT
.LBB6_22:                               # %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEENS1_IPiS6_EEET0_T_SB_SA_.exit
	addq	(%rbx), %r14
	movq	%r14, 8(%rbx)
.LBB6_23:
	movq	%rbx, %rax
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	retq
.LBB6_4:
	.cfi_def_cfa_offset 48
	cmpq	$4, %r14
	jne	.LBB6_6
# %bb.5:
	movl	(%r15), %eax
	movl	%eax, (%r12)
	jmp	.LBB6_6
.LBB6_16:
	cmpq	$4, %rdx
	jne	.LBB6_18
# %bb.17:
	movl	(%r15), %ecx
	movl	%ecx, (%rax)
	jmp	.LBB6_18
.LBB6_12:
	cmpq	$4, %r14
	jne	.LBB6_22
# %bb.13:
	movl	(%r15), %ecx
	movl	%ecx, (%rax)
	jmp	.LBB6_22
.Lfunc_end6:
	.size	_ZNSt6vectorIiSaIiEEaSERKS1_, .Lfunc_end6-_ZNSt6vectorIiSaIiEEaSERKS1_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt15__new_allocatorIiE8allocateEmPKv,"axG",@progbits,_ZNSt15__new_allocatorIiE8allocateEmPKv,comdat
	.weak	_ZNSt15__new_allocatorIiE8allocateEmPKv # -- Begin function _ZNSt15__new_allocatorIiE8allocateEmPKv
	.p2align	1, 0x90
	.type	_ZNSt15__new_allocatorIiE8allocateEmPKv,@function
_ZNSt15__new_allocatorIiE8allocateEmPKv: # @_ZNSt15__new_allocatorIiE8allocateEmPKv
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	movq	%rsi, %rax
	shrq	$61, %rax
	jne	.LBB7_1
# %bb.3:
	shlq	$2, %rsi
	movq	%rsi, %rdi
	popq	%rax
	.cfi_def_cfa_offset 8
	jmp	_Znwm                           # TAILCALL
.LBB7_1:
	.cfi_def_cfa_offset 16
	shrq	$62, %rsi
	je	.LBB7_2
# %bb.4:
	callq	_ZSt28__throw_bad_array_new_lengthv
.LBB7_2:
	callq	_ZSt17__throw_bad_allocv
.Lfunc_end7:
	.size	_ZNSt15__new_allocatorIiE8allocateEmPKv, .Lfunc_end7-_ZNSt15__new_allocatorIiE8allocateEmPKv
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_,"axG",@progbits,_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_,comdat
	.weak	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_ # -- Begin function _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_,@function
_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_: # @_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
	.cfi_startproc
# %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, (%rsp)                    # 8-byte Spill
	movq	%rsi, %r12
	movq	%rdi, %rbx
	movl	$1, %esi
	movl	$.L.str.4, %edx
	callq	_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc
	movq	(%rbx), %r13
	movq	8(%rbx), %r15
	movq	%r12, 8(%rsp)                   # 8-byte Spill
	subq	%r13, %r12
	movq	%r12, %r14
	sarq	$2, %r14
	testq	%rax, %rax
	movq	%rax, 16(%rsp)                  # 8-byte Spill
	je	.LBB8_1
# %bb.2:
	movq	%rbx, %rdi
	movq	%rax, %rsi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIiE8allocateEmPKv
	movq	%rax, %rbp
	jmp	.LBB8_3
.LBB8_1:
	xorl	%ebp, %ebp
.LBB8_3:                                # %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit
	movq	(%rsp), %rax                    # 8-byte Reload
	movl	(%rax), %eax
	movl	%eax, (%rbp,%r14,4)
	testq	%r12, %r12
	jle	.LBB8_5
# %bb.4:
	movq	%rbp, %rdi
	movq	%r13, %rsi
	movq	%r12, %rdx
	callq	memmove@PLT
.LBB8_5:                                # %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit
	addq	%rbp, %r12
	addq	$4, %r12
	movq	8(%rsp), %rsi                   # 8-byte Reload
	subq	%rsi, %r15
	testq	%r15, %r15
	jle	.LBB8_7
# %bb.6:
	movq	%r12, %rdi
	movq	%r15, %rdx
	callq	memmove@PLT
.LBB8_7:                                # %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16
	testq	%r13, %r13
	je	.LBB8_9
# %bb.8:
	movq	%r13, %rdi
	callq	_ZdlPv
.LBB8_9:                                # %_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit
	addq	%r15, %r12
	movq	%rbp, (%rbx)
	movq	%r12, 8(%rbx)
	movq	16(%rsp), %rax                  # 8-byte Reload
	leaq	(,%rax,4), %rax
	addq	%rbp, %rax
	movq	%rax, 16(%rbx)
	addq	$24, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end8:
	.size	_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_, .Lfunc_end8-_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc,"axG",@progbits,_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc,comdat
	.weak	_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc # -- Begin function _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc
	.p2align	1, 0x90
	.type	_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc,@function
_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc: # @_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc
	.cfi_startproc
# %bb.0:
	movabsq	$2305843009213693951, %rcx      # imm = 0x1FFFFFFFFFFFFFFF
	movq	8(%rdi), %r8
	subq	(%rdi), %r8
	sarq	$2, %r8
	movq	%rcx, %rax
	subq	%r8, %rax
	cmpq	%rsi, %rax
	jb	.LBB9_2
# %bb.1:
	cmpq	%rsi, %r8
	cmovaq	%r8, %rsi
	leaq	(%rsi,%r8), %rax
	cmpq	%rcx, %rax
	cmovaeq	%rcx, %rax
	addq	%r8, %rsi
	cmovbq	%rcx, %rax
	retq
.LBB9_2:
	pushq	%rax
	.cfi_def_cfa_offset 16
	movq	%rdx, %rdi
	callq	_ZSt20__throw_length_errorPKc
.Lfunc_end9:
	.size	_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc, .Lfunc_end9-_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_,"axG",@progbits,_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_,comdat
	.weak	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_ # -- Begin function _ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_,@function
_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_: # @_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_
	.cfi_startproc
# %bb.0:
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset %rbx, -16
	movq	%rsi, %rdx
	movq	%rdi, %rbx
	movq	8(%rdi), %rsi
	cmpq	16(%rdi), %rsi
	je	.LBB10_2
# %bb.1:
	movq	(%rdx), %rax
	movq	%rax, (%rsi)
	movq	8(%rdx), %rax
	movq	%rax, 8(%rsi)
	movq	16(%rdx), %rax
	movq	%rax, 16(%rsi)
	xorps	%xmm0, %xmm0
	movups	%xmm0, (%rdx)
	movq	$0, 16(%rdx)
	movsd	24(%rdx), %xmm0                 # xmm0 = mem[0],zero
	movsd	%xmm0, 24(%rsi)
	movq	8(%rbx), %rax
	addq	$32, %rax
	movq	%rax, 8(%rbx)
	jmp	.LBB10_3
.LBB10_2:
	movq	%rbx, %rdi
	callq	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_
	movq	8(%rbx), %rax
.LBB10_3:
	addq	$-32, %rax
	popq	%rbx
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end10:
	.size	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_, .Lfunc_end10-_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE12emplace_backIJS1_EEERS1_DpOT_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_,"axG",@progbits,_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_,comdat
	.weak	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ # -- Begin function _ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_
	.p2align	1, 0x90
	.type	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_,@function
_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_: # @_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_
	.cfi_startproc
# %bb.0:                                # %_ZNSt12_Vector_baseIN10atspSolver9fullCycleESaIS1_EE11_M_allocateEm.exit
	pushq	%rbp
	.cfi_def_cfa_offset 16
	pushq	%r15
	.cfi_def_cfa_offset 24
	pushq	%r14
	.cfi_def_cfa_offset 32
	pushq	%r13
	.cfi_def_cfa_offset 40
	pushq	%r12
	.cfi_def_cfa_offset 48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	pushq	%rax
	.cfi_def_cfa_offset 64
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	.cfi_offset %rbp, -16
	movq	%rdx, %rbp
	movq	%rsi, %r13
	movq	%rdi, %rbx
	movl	$1, %esi
	movl	$.L.str.4, %edx
	callq	_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc
	movq	(%rbx), %r14
	movq	8(%rbx), %r15
	movq	%rbx, %rdi
	movq	%rax, (%rsp)                    # 8-byte Spill
	movq	%rax, %rsi
	xorl	%edx, %edx
	callq	_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv
	movq	%r14, %rdi
	movq	%rax, %r14
	movq	(%rbp), %rax
	movq	%r13, %rcx
	movq	%r14, %r12
	subq	%rdi, %rcx
	movq	%rax, (%r14,%rcx)
	movq	8(%rbp), %rax
	movq	%rax, 8(%r14,%rcx)
	movq	16(%rbp), %rax
	movq	%rax, 16(%r14,%rcx)
	xorps	%xmm0, %xmm0
	movups	%xmm0, (%rbp)
	movq	$0, 16(%rbp)
	movsd	24(%rbp), %xmm1                 # xmm1 = mem[0],zero
	movsd	%xmm1, 24(%r14,%rcx)
	je	.LBB11_3
# %bb.1:                                # %.lr.ph.i.i.i.preheader
	movq	%r14, %r12
	movq	%rdi, %rax
.LBB11_2:                               # %.lr.ph.i.i.i
                                        # =>This Inner Loop Header: Depth=1
	movq	(%rax), %rcx
	movq	%rcx, (%r12)
	movq	8(%rax), %rcx
	movq	%rcx, 8(%r12)
	movq	16(%rax), %rcx
	movq	%rcx, 16(%r12)
	movups	%xmm0, (%rax)
	movq	$0, 16(%rax)
	movsd	24(%rax), %xmm1                 # xmm1 = mem[0],zero
	movsd	%xmm1, 24(%r12)
	addq	$32, %r12
	addq	$32, %rax
	cmpq	%r13, %rax
	jne	.LBB11_2
.LBB11_3:                               # %_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit
	addq	$32, %r12
	cmpq	%r13, %r15
	je	.LBB11_6
# %bb.4:                                # %.lr.ph.i.i.i17.preheader
	xorps	%xmm0, %xmm0
.LBB11_5:                               # %.lr.ph.i.i.i17
                                        # =>This Inner Loop Header: Depth=1
	movq	(%r13), %rax
	movq	%rax, (%r12)
	movq	8(%r13), %rax
	movq	%rax, 8(%r12)
	movq	16(%r13), %rax
	movq	%rax, 16(%r12)
	movups	%xmm0, (%r13)
	movq	$0, 16(%r13)
	movsd	24(%r13), %xmm1                 # xmm1 = mem[0],zero
	movsd	%xmm1, 24(%r12)
	addq	$32, %r12
	addq	$32, %r13
	cmpq	%r15, %r13
	jne	.LBB11_5
.LBB11_6:                               # %_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit22
	testq	%rdi, %rdi
	je	.LBB11_8
# %bb.7:
	callq	_ZdlPv
.LBB11_8:                               # %_ZNSt12_Vector_baseIN10atspSolver9fullCycleESaIS1_EE13_M_deallocateEPS1_m.exit
	movq	%r14, (%rbx)
	movq	%r12, 8(%rbx)
	movq	(%rsp), %rax                    # 8-byte Reload
	shlq	$5, %rax
	addq	%rax, %r14
	movq	%r14, 16(%rbx)
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%r12
	.cfi_def_cfa_offset 40
	popq	%r13
	.cfi_def_cfa_offset 32
	popq	%r14
	.cfi_def_cfa_offset 24
	popq	%r15
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	retq
.Lfunc_end11:
	.size	_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_, .Lfunc_end11-_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc,"axG",@progbits,_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc,comdat
	.weak	_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc # -- Begin function _ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc
	.p2align	1, 0x90
	.type	_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc,@function
_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc: # @_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc
	.cfi_startproc
# %bb.0:
	movabsq	$288230376151711743, %rcx       # imm = 0x3FFFFFFFFFFFFFF
	movq	8(%rdi), %r8
	subq	(%rdi), %r8
	sarq	$5, %r8
	movq	%rcx, %rax
	subq	%r8, %rax
	cmpq	%rsi, %rax
	jb	.LBB12_2
# %bb.1:
	cmpq	%rsi, %r8
	cmovaq	%r8, %rsi
	leaq	(%rsi,%r8), %rax
	cmpq	%rcx, %rax
	cmovaeq	%rcx, %rax
	addq	%r8, %rsi
	cmovbq	%rcx, %rax
	retq
.LBB12_2:
	pushq	%rax
	.cfi_def_cfa_offset 16
	movq	%rdx, %rdi
	callq	_ZSt20__throw_length_errorPKc
.Lfunc_end12:
	.size	_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc, .Lfunc_end12-_ZNKSt6vectorIN10atspSolver9fullCycleESaIS1_EE12_M_check_lenEmPKc
	.cfi_endproc
                                        # -- End function
	.section	.text._ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv,"axG",@progbits,_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv,comdat
	.weak	_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv # -- Begin function _ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv
	.p2align	1, 0x90
	.type	_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv,@function
_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv: # @_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv
	.cfi_startproc
# %bb.0:
	pushq	%rax
	.cfi_def_cfa_offset 16
	movq	%rsi, %rax
	shrq	$58, %rax
	jne	.LBB13_1
# %bb.3:
	shlq	$5, %rsi
	movq	%rsi, %rdi
	popq	%rax
	.cfi_def_cfa_offset 8
	jmp	_Znwm                           # TAILCALL
.LBB13_1:
	.cfi_def_cfa_offset 16
	shrq	$59, %rsi
	je	.LBB13_2
# %bb.4:
	callq	_ZSt28__throw_bad_array_new_lengthv
.LBB13_2:
	callq	_ZSt17__throw_bad_allocv
.Lfunc_end13:
	.size	_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv, .Lfunc_end13-_ZNSt15__new_allocatorIN10atspSolver9fullCycleEE8allocateEmPKv
	.cfi_endproc
                                        # -- End function
	.section	.text.startup,"ax",@progbits
	.type	_GLOBAL__sub_I_Solver.hip,@function # -- Begin function _GLOBAL__sub_I_Solver.hip
_GLOBAL__sub_I_Solver.hip:              # @_GLOBAL__sub_I_Solver.hip
	.cfi_startproc
# %bb.0:
	xorps	%xmm0, %xmm0
	movups	%xmm0, _ZN10atspSolver10fullCyclesE(%rip)
	movq	$0, _ZN10atspSolver10fullCyclesE+16(%rip)
	movl	$_ZNSt6vectorIN10atspSolver9fullCycleESaIS1_EED2Ev, %edi
	movl	$_ZN10atspSolver10fullCyclesE, %esi
	movl	$__dso_handle, %edx
	jmp	__cxa_atexit                    # TAILCALL
.Lfunc_end14:
	.size	_GLOBAL__sub_I_Solver.hip, .Lfunc_end14-_GLOBAL__sub_I_Solver.hip
	.cfi_endproc
                                        # -- End function
	.type	.L.str,@object                  # @.str
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str:
	.asciz	" -> "
	.size	.L.str, 5

	.type	.L.str.1,@object                # @.str.1
.L.str.1:
	.asciz	"  |  cost: "
	.size	.L.str.1, 12

	.type	_ZN10atspSolver10fullCyclesE,@object # @_ZN10atspSolver10fullCyclesE
	.bss
	.globl	_ZN10atspSolver10fullCyclesE
	.p2align	3, 0x0
_ZN10atspSolver10fullCyclesE:
	.zero	24
	.size	_ZN10atspSolver10fullCyclesE, 24

	.hidden	__dso_handle
	.type	.L.str.4,@object                # @.str.4
	.section	.rodata.str1.1,"aMS",@progbits,1
.L.str.4:
	.asciz	"vector::_M_realloc_insert"
	.size	.L.str.4, 26

	.section	.init_array,"aw",@init_array
	.p2align	3, 0x0
	.quad	_GLOBAL__sub_I_Solver.hip
	.type	__hip_cuid_,@object             # @__hip_cuid_
	.bss
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               # 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __gxx_personality_v0
	.addrsig_sym _GLOBAL__sub_I_Solver.hip
	.addrsig_sym _Unwind_Resume
	.addrsig_sym _ZSt4cout
	.addrsig_sym _ZN10atspSolver10fullCyclesE
	.addrsig_sym __dso_handle
	.addrsig_sym __hip_cuid_

	.text
	.p2alignl 7, 3214868480
	.fill 96, 4, 3214868480
	.type	__hip_cuid_,@object             ; @__hip_cuid_
	.section	.bss,"aw",@nobits
	.globl	__hip_cuid_
__hip_cuid_:
	.byte	0                               ; 0x0
	.size	__hip_cuid_, 1

	.ident	"AMD clang version 18.0.0git (https://github.com/RadeonOpenCompute/llvm-project roc-6.3.2 25012 e5bf7e55c91490b07c49d8960fa7983d864936c4)"
	.section	".note.GNU-stack","",@progbits
	.addrsig
	.addrsig_sym __hip_cuid_
	.amdgcn_target "amdgcn-amd-amdhsa--gfx1100"
	.amdgpu_metadata
---
amdhsa.kernels:  []
amdhsa.target:   amdgcn-amd-amdhsa--gfx1100
amdhsa.version:
  - 1
  - 2
...

	.end_amdgpu_metadata
