	.file	"119455.c"
	.intel_syntax noprefix
	.text
	.globl	pgroup
	.bss
	.align 8
	.type	pgroup, @object
	.size	pgroup, 8
pgroup:
	.zero	8
	.globl	ToleranceSame
	.data
	.align 8
	.type	ToleranceSame, @object
	.size	ToleranceSame, 8
ToleranceSame:
	.long	-755914244
	.long	1062232653
	.globl	TolerancePrimary
	.align 8
	.type	TolerancePrimary, @object
	.size	TolerancePrimary, 8
TolerancePrimary:
	.long	-1717986918
	.long	1068079513
	.globl	ToleranceFinal
	.align 8
	.type	ToleranceFinal, @object
	.size	ToleranceFinal, 8
ToleranceFinal:
	.long	-1717986918
	.long	1069128089
	.globl	MaxOptStep
	.align 8
	.type	MaxOptStep, @object
	.size	MaxOptStep, 8
MaxOptStep:
	.long	0
	.long	1071644672
	.globl	MinOptStep
	.align 8
	.type	MinOptStep, @object
	.size	MinOptStep, 8
MinOptStep:
	.long	-1698910392
	.long	1048238066
	.globl	GradientStep
	.align 8
	.type	GradientStep, @object
	.size	GradientStep, 8
GradientStep:
	.long	-1698910392
	.long	1048238066
	.globl	OptChangeThreshold
	.align 8
	.type	OptChangeThreshold, @object
	.size	OptChangeThreshold, 8
OptChangeThreshold:
	.long	-640172613
	.long	1037794527
	.globl	CenterOfSomething
	.bss
	.align 16
	.type	CenterOfSomething, @object
	.size	CenterOfSomething, 24
CenterOfSomething:
	.zero	24
	.globl	DistanceFromCenter
	.align 8
	.type	DistanceFromCenter, @object
	.size	DistanceFromCenter, 8
DistanceFromCenter:
	.zero	8
	.globl	verbose
	.align 4
	.type	verbose, @object
	.size	verbose, 4
verbose:
	.zero	4
	.globl	MaxOptCycles
	.data
	.align 4
	.type	MaxOptCycles, @object
	.size	MaxOptCycles, 4
MaxOptCycles:
	.long	200
	.globl	OptChangeHits
	.align 4
	.type	OptChangeHits, @object
	.size	OptChangeHits, 4
OptChangeHits:
	.long	5
	.globl	MaxAxisOrder
	.align 4
	.type	MaxAxisOrder, @object
	.size	MaxAxisOrder, 4
MaxAxisOrder:
	.long	20
	.globl	AtomsCount
	.bss
	.align 4
	.type	AtomsCount, @object
	.size	AtomsCount, 4
AtomsCount:
	.zero	4
	.globl	Atoms
	.align 8
	.type	Atoms, @object
	.size	Atoms, 8
Atoms:
	.zero	8
	.globl	PlanesCount
	.align 4
	.type	PlanesCount, @object
	.size	PlanesCount, 4
PlanesCount:
	.zero	4
	.globl	Planes
	.align 8
	.type	Planes, @object
	.size	Planes, 8
Planes:
	.zero	8
	.globl	MolecularPlane
	.align 8
	.type	MolecularPlane, @object
	.size	MolecularPlane, 8
MolecularPlane:
	.zero	8
	.globl	InversionCentersCount
	.align 4
	.type	InversionCentersCount, @object
	.size	InversionCentersCount, 4
InversionCentersCount:
	.zero	4
	.globl	InversionCenters
	.align 8
	.type	InversionCenters, @object
	.size	InversionCenters, 8
InversionCenters:
	.zero	8
	.globl	NormalAxesCount
	.align 4
	.type	NormalAxesCount, @object
	.size	NormalAxesCount, 4
NormalAxesCount:
	.zero	4
	.globl	NormalAxes
	.align 8
	.type	NormalAxes, @object
	.size	NormalAxes, 8
NormalAxes:
	.zero	8
	.globl	ImproperAxesCount
	.align 4
	.type	ImproperAxesCount, @object
	.size	ImproperAxesCount, 4
ImproperAxesCount:
	.zero	4
	.globl	ImproperAxes
	.align 8
	.type	ImproperAxes, @object
	.size	ImproperAxes, 8
ImproperAxes:
	.zero	8
	.globl	NormalAxesCounts
	.align 8
	.type	NormalAxesCounts, @object
	.size	NormalAxesCounts, 8
NormalAxesCounts:
	.zero	8
	.globl	ImproperAxesCounts
	.align 8
	.type	ImproperAxesCounts, @object
	.size	ImproperAxesCounts, 8
ImproperAxesCounts:
	.zero	8
	.globl	BadOptimization
	.align 4
	.type	BadOptimization, @object
	.size	BadOptimization, 4
BadOptimization:
	.zero	4
	.globl	SymmetryCode
	.section	.rodata
.LC0:
	.string	""
	.section	.data.rel.local,"aw"
	.align 8
	.type	SymmetryCode, @object
	.size	SymmetryCode, 8
SymmetryCode:
	.quad	.LC0
	.globl	StatTotal
	.bss
	.align 8
	.type	StatTotal, @object
	.size	StatTotal, 8
StatTotal:
	.zero	8
	.globl	StatEarly
	.align 8
	.type	StatEarly, @object
	.size	StatEarly, 8
StatEarly:
	.zero	8
	.globl	StatPairs
	.align 8
	.type	StatPairs, @object
	.size	StatPairs, 8
StatPairs:
	.zero	8
	.globl	StatDups
	.align 8
	.type	StatDups, @object
	.size	StatDups, 8
StatDups:
	.zero	8
	.globl	StatOrder
	.align 8
	.type	StatOrder, @object
	.size	StatOrder, 8
StatOrder:
	.zero	8
	.globl	StatOpt
	.align 8
	.type	StatOpt, @object
	.size	StatOpt, 8
StatOpt:
	.zero	8
	.globl	StatAccept
	.align 8
	.type	StatAccept, @object
	.size	StatAccept, 8
StatAccept:
	.zero	8
	.text
	.globl	true
	.type	true, @function
true:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, 1
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	true, .-true
	.globl	PointGroups
	.section	.rodata
.LC1:
	.string	"C1"
.LC2:
	.string	"Cs"
.LC3:
	.string	"(sigma) "
.LC4:
	.string	"Ci"
.LC5:
	.string	"(i) "
.LC6:
	.string	"C2"
.LC7:
	.string	"(C2) "
.LC8:
	.string	"C3"
.LC9:
	.string	"(C3) "
.LC10:
	.string	"C4"
.LC11:
	.string	"(C4) (C2) "
.LC12:
	.string	"C5"
.LC13:
	.string	"(C5) "
.LC14:
	.string	"C6"
.LC15:
	.string	"(C6) (C3) (C2) "
.LC16:
	.string	"C7"
.LC17:
	.string	"(C7) "
.LC18:
	.string	"C8"
.LC19:
	.string	"(C8) (C4) (C2) "
.LC20:
	.string	"D2"
.LC21:
	.string	"3*(C2) "
.LC22:
	.string	"D3"
.LC23:
	.string	"(C3) 3*(C2) "
.LC24:
	.string	"D4"
.LC25:
	.string	"(C4) 5*(C2) "
.LC26:
	.string	"D5"
.LC27:
	.string	"(C5) 5*(C2) "
.LC28:
	.string	"D6"
.LC29:
	.string	"(C6) (C3) 7*(C2) "
.LC30:
	.string	"D7"
.LC31:
	.string	"(C7) 7*(C2) "
.LC32:
	.string	"D8"
.LC33:
	.string	"(C8) (C4) 9*(C2) "
.LC34:
	.string	"C2v"
.LC35:
	.string	"(C2) 2*(sigma) "
.LC36:
	.string	"C3v"
.LC37:
	.string	"(C3) 3*(sigma) "
.LC38:
	.string	"C4v"
.LC39:
	.string	"(C4) (C2) 4*(sigma) "
.LC40:
	.string	"C5v"
.LC41:
	.string	"(C5) 5*(sigma) "
.LC42:
	.string	"C6v"
.LC43:
	.string	"(C6) (C3) (C2) 6*(sigma) "
.LC44:
	.string	"C7v"
.LC45:
	.string	"(C7) 7*(sigma) "
.LC46:
	.string	"C8v"
.LC47:
	.string	"(C8) (C4) (C2) 8*(sigma) "
.LC48:
	.string	"C2h"
.LC49:
	.string	"(i) (C2) (sigma) "
.LC50:
	.string	"C3h"
.LC51:
	.string	"(C3) (S3) (sigma) "
.LC52:
	.string	"C4h"
.LC53:
	.string	"(i) (C4) (C2) (S4) (sigma) "
.LC54:
	.string	"C5h"
.LC55:
	.string	"(C5) (S5) (sigma) "
.LC56:
	.string	"C6h"
	.align 8
.LC57:
	.string	"(i) (C6) (C3) (C2) (S6) (S3) (sigma) "
.LC58:
	.string	"C7h"
.LC59:
	.string	"(C7) (S7) (sigma) "
.LC60:
	.string	"C8h"
	.align 8
.LC61:
	.string	"(i) (C8) (C4) (C2) (S8) (S4) (sigma) "
.LC62:
	.string	"D2h"
.LC63:
	.string	"(i) 3*(C2) 3*(sigma) "
.LC64:
	.string	"D3h"
.LC65:
	.string	"(C3) 3*(C2) (S3) 4*(sigma) "
.LC66:
	.string	"D4h"
	.align 8
.LC67:
	.string	"(i) (C4) 5*(C2) (S4) 5*(sigma) "
.LC68:
	.string	"D5h"
.LC69:
	.string	"(C5) 5*(C2) (S5) 6*(sigma) "
.LC70:
	.string	"D6h"
	.align 8
.LC71:
	.string	"(i) (C6) (C3) 7*(C2) (S6) (S3) 7*(sigma) "
.LC72:
	.string	"D7h"
.LC73:
	.string	"(C7) 7*(C2) (S7) 8*(sigma) "
.LC74:
	.string	"D8h"
	.align 8
.LC75:
	.string	"(i) (C8) (C4) 9*(C2) (S8) (S4) 9*(sigma) "
.LC76:
	.string	"D2d"
.LC77:
	.string	"3*(C2) (S4) 2*(sigma) "
.LC78:
	.string	"D3d"
	.align 8
.LC79:
	.string	"(i) (C3) 3*(C2) (S6) 3*(sigma) "
.LC80:
	.string	"D4d"
.LC81:
	.string	"(C4) 5*(C2) (S8) 4*(sigma) "
.LC82:
	.string	"D5d"
	.align 8
.LC83:
	.string	"(i) (C5) 5*(C2) (S10) 5*(sigma) "
.LC84:
	.string	"D6d"
	.align 8
.LC85:
	.string	"(C6) (C3) 7*(C2) (S12) (S4) 6*(sigma) "
.LC86:
	.string	"D7d"
	.align 8
.LC87:
	.string	"(i) (C7) 7*(C2) (S14) 7*(sigma) "
.LC88:
	.string	"D8d"
	.align 8
.LC89:
	.string	"(C8) (C4) 9*(C2) (S16) 8*(sigma) "
.LC90:
	.string	"S4"
.LC91:
	.string	"(C2) (S4) "
.LC92:
	.string	"S6"
.LC93:
	.string	"(i) (C3) (S6) "
.LC94:
	.string	"S8"
.LC95:
	.string	"(C4) (C2) (S8) "
.LC96:
	.string	"T"
.LC97:
	.string	"4*(C3) 3*(C2) "
.LC98:
	.string	"Th"
	.align 8
.LC99:
	.string	"(i) 4*(C3) 3*(C2) 4*(S6) 3*(sigma) "
.LC100:
	.string	"Td"
	.align 8
.LC101:
	.string	"4*(C3) 3*(C2) 3*(S4) 6*(sigma) "
.LC102:
	.string	"O"
.LC103:
	.string	"3*(C4) 4*(C3) 9*(C2) "
.LC104:
	.string	"Oh"
	.align 8
.LC105:
	.string	"(i) 3*(C4) 4*(C3) 9*(C2) 4*(S6) 3*(S4) 9*(sigma) "
.LC106:
	.string	"Cinfv"
.LC107:
	.string	"(Cinf) (sigma) "
.LC108:
	.string	"Dinfh"
.LC109:
	.string	"(i) (Cinf) (C2) 2*(sigma) "
.LC110:
	.string	"I"
.LC111:
	.string	"6*(C5) 10*(C3) 15*(C2) "
.LC112:
	.string	"Ih"
	.align 8
.LC113:
	.string	"(i) 6*(C5) 10*(C3) 15*(C2) 6*(S10) 10*(S6) 15*(sigma) "
.LC114:
	.string	"Kh"
.LC115:
	.string	"(i) (Cinf) (sigma) "
	.section	.data.rel.local
	.align 32
	.type	PointGroups, @object
	.size	PointGroups, 1392
PointGroups:
	.quad	.LC1
	.quad	.LC0
	.quad	true
	.quad	.LC2
	.quad	.LC3
	.quad	true
	.quad	.LC4
	.quad	.LC5
	.quad	true
	.quad	.LC6
	.quad	.LC7
	.quad	true
	.quad	.LC8
	.quad	.LC9
	.quad	true
	.quad	.LC10
	.quad	.LC11
	.quad	true
	.quad	.LC12
	.quad	.LC13
	.quad	true
	.quad	.LC14
	.quad	.LC15
	.quad	true
	.quad	.LC16
	.quad	.LC17
	.quad	true
	.quad	.LC18
	.quad	.LC19
	.quad	true
	.quad	.LC20
	.quad	.LC21
	.quad	true
	.quad	.LC22
	.quad	.LC23
	.quad	true
	.quad	.LC24
	.quad	.LC25
	.quad	true
	.quad	.LC26
	.quad	.LC27
	.quad	true
	.quad	.LC28
	.quad	.LC29
	.quad	true
	.quad	.LC30
	.quad	.LC31
	.quad	true
	.quad	.LC32
	.quad	.LC33
	.quad	true
	.quad	.LC34
	.quad	.LC35
	.quad	true
	.quad	.LC36
	.quad	.LC37
	.quad	true
	.quad	.LC38
	.quad	.LC39
	.quad	true
	.quad	.LC40
	.quad	.LC41
	.quad	true
	.quad	.LC42
	.quad	.LC43
	.quad	true
	.quad	.LC44
	.quad	.LC45
	.quad	true
	.quad	.LC46
	.quad	.LC47
	.quad	true
	.quad	.LC48
	.quad	.LC49
	.quad	true
	.quad	.LC50
	.quad	.LC51
	.quad	true
	.quad	.LC52
	.quad	.LC53
	.quad	true
	.quad	.LC54
	.quad	.LC55
	.quad	true
	.quad	.LC56
	.quad	.LC57
	.quad	true
	.quad	.LC58
	.quad	.LC59
	.quad	true
	.quad	.LC60
	.quad	.LC61
	.quad	true
	.quad	.LC62
	.quad	.LC63
	.quad	true
	.quad	.LC64
	.quad	.LC65
	.quad	true
	.quad	.LC66
	.quad	.LC67
	.quad	true
	.quad	.LC68
	.quad	.LC69
	.quad	true
	.quad	.LC70
	.quad	.LC71
	.quad	true
	.quad	.LC72
	.quad	.LC73
	.quad	true
	.quad	.LC74
	.quad	.LC75
	.quad	true
	.quad	.LC76
	.quad	.LC77
	.quad	true
	.quad	.LC78
	.quad	.LC79
	.quad	true
	.quad	.LC80
	.quad	.LC81
	.quad	true
	.quad	.LC82
	.quad	.LC83
	.quad	true
	.quad	.LC84
	.quad	.LC85
	.quad	true
	.quad	.LC86
	.quad	.LC87
	.quad	true
	.quad	.LC88
	.quad	.LC89
	.quad	true
	.quad	.LC90
	.quad	.LC91
	.quad	true
	.quad	.LC92
	.quad	.LC93
	.quad	true
	.quad	.LC94
	.quad	.LC95
	.quad	true
	.quad	.LC96
	.quad	.LC97
	.quad	true
	.quad	.LC98
	.quad	.LC99
	.quad	true
	.quad	.LC100
	.quad	.LC101
	.quad	true
	.quad	.LC102
	.quad	.LC103
	.quad	true
	.quad	.LC104
	.quad	.LC105
	.quad	true
	.quad	.LC106
	.quad	.LC107
	.quad	true
	.quad	.LC108
	.quad	.LC109
	.quad	true
	.quad	.LC110
	.quad	.LC111
	.quad	true
	.quad	.LC112
	.quad	.LC113
	.quad	true
	.quad	.LC114
	.quad	.LC115
	.quad	true
	.globl	PointGroupRejectionReason
	.bss
	.align 8
	.type	PointGroupRejectionReason, @object
	.size	PointGroupRejectionReason, 8
PointGroupRejectionReason:
	.zero	8
	.text
	.globl	pow2
	.type	pow2, @function
pow2:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movsd	QWORD PTR -8[rbp], xmm0
	movsd	xmm0, QWORD PTR -8[rbp]
	mulsd	xmm0, xmm0
	movq	rax, xmm0
	movq	xmm0, rax
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	pow2, .-pow2
	.section	.rodata
	.align 8
.LC116:
	.string	"Out of memory for tagging array in establish_pairs()\n"
	.align 8
.LC117:
	.string	"        looking for a pair for %d\n"
	.align 8
.LC118:
	.string	"        new coordinates are: (%g,%g,%g)\n"
.LC120:
	.string	"        distance to %d is %g\n"
	.align 8
.LC121:
	.string	"        no pair for atom %d - best was %d with err = %g\n"
	.align 8
.LC122:
	.string	"        atom %d transforms to the atom %d, err = %g\n"
	.text
	.globl	establish_pairs
	.type	establish_pairs, @function
establish_pairs:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	QWORD PTR -104[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR AtomsCount[rip]
	cdqe
	mov	esi, 1
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR -56[rbp], rax
	cmp	QWORD PTR -56[rbp], 0
	jne	.L6
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 53
	mov	esi, 1
	lea	rdi, .LC116[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L6:
	mov	DWORD PTR -88[rbp], 0
	jmp	.L7
.L24:
	mov	rax, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	edx, eax
	jl	.L8
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 2
	jle	.L9
	mov	eax, DWORD PTR -88[rbp]
	mov	esi, eax
	lea	rdi, .LC117[rip]
	mov	eax, 0
	call	printf@PLT
.L9:
	mov	rax, QWORD PTR -104[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 5
	lea	rsi, [rdx+rax]
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	rcx
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 2
	jle	.L10
	movsd	xmm1, QWORD PTR -24[rbp]
	movsd	xmm0, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC118[rip]
	mov	eax, 3
	call	printf@PLT
.L10:
	mov	eax, DWORD PTR -88[rbp]
	mov	DWORD PTR -76[rbp], eax
	movsd	xmm0, QWORD PTR TolerancePrimary[rip]
	addsd	xmm0, xmm0
	movsd	QWORD PTR -64[rbp], xmm0
	mov	DWORD PTR -84[rbp], 0
	jmp	.L11
.L19:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -48[rbp]
	cmp	edx, eax
	jne	.L30
	mov	eax, DWORD PTR -84[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L30
	mov	DWORD PTR -80[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -72[rbp], xmm0
	jmp	.L15
.L16:
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -40[rbp+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -72[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -72[rbp], xmm0
	add	DWORD PTR -80[rbp], 1
.L15:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L16
	mov	rax, QWORD PTR -72[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -72[rbp], rax
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 2
	jle	.L17
	mov	rdx, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR -84[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC120[rip]
	mov	eax, 1
	call	printf@PLT
.L17:
	movsd	xmm0, QWORD PTR -64[rbp]
	comisd	xmm0, QWORD PTR -72[rbp]
	jbe	.L14
	mov	eax, DWORD PTR -84[rbp]
	mov	DWORD PTR -76[rbp], eax
	movsd	xmm0, QWORD PTR -72[rbp]
	movsd	QWORD PTR -64[rbp], xmm0
	jmp	.L14
.L30:
	nop
.L14:
	add	DWORD PTR -84[rbp], 1
.L11:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -84[rbp], eax
	jl	.L19
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	movsd	xmm0, QWORD PTR -64[rbp]
	comisd	xmm0, xmm1
	jbe	.L29
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L22
	mov	rcx, QWORD PTR -64[rbp]
	mov	edx, DWORD PTR -76[rbp]
	mov	eax, DWORD PTR -88[rbp]
	movq	xmm0, rcx
	mov	esi, eax
	lea	rdi, .LC121[rip]
	mov	eax, 1
	call	printf@PLT
.L22:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, -1
	jmp	.L25
.L29:
	mov	rax, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	mov	eax, DWORD PTR -76[rbp]
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR -76[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 1
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L8
	mov	rcx, QWORD PTR -64[rbp]
	mov	edx, DWORD PTR -76[rbp]
	mov	eax, DWORD PTR -88[rbp]
	movq	xmm0, rcx
	mov	esi, eax
	lea	rdi, .LC122[rip]
	mov	eax, 1
	call	printf@PLT
.L8:
	add	DWORD PTR -88[rbp], 1
.L7:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -88[rbp], eax
	jl	.L24
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
.L25:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L26
	call	__stack_chk_fail@PLT
.L26:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	establish_pairs, .-establish_pairs
	.section	.rodata
	.align 8
.LC123:
	.string	"        transform looped %d steps too early from atom %d\n"
	.align 8
.LC124:
	.string	"        (improper) transform looped %d steps too early from atom %d\n"
	.align 8
.LC125:
	.string	"        transform failed to loop after %d steps from atom %d\n"
	.text
	.globl	check_transform_order
	.type	check_transform_order, @function
check_transform_order:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	jmp	.L32
.L47:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -12[rbp], eax
	je	.L48
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rdx, rotate_reflect_atom[rip]
	cmp	rax, rdx
	jne	.L35
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -12[rbp], eax
	je	.L49
.L35:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	sub	eax, 1
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -4[rbp], eax
	jmp	.L36
.L40:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	jne	.L37
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L38
	mov	edx, DWORD PTR -12[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, eax
	lea	rdi, .LC123[rip]
	mov	eax, 0
	call	printf@PLT
.L38:
	mov	eax, -1
	jmp	.L39
.L37:
	sub	DWORD PTR -8[rbp], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -4[rbp], eax
.L36:
	cmp	DWORD PTR -8[rbp], 0
	jg	.L40
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	je	.L41
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rdx, rotate_reflect_atom[rip]
	cmp	rax, rdx
	jne	.L41
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L42
.L45:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	jne	.L43
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L44
	mov	edx, DWORD PTR -12[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, eax
	lea	rdi, .LC124[rip]
	mov	eax, 0
	call	printf@PLT
.L44:
	mov	eax, -1
	jmp	.L39
.L43:
	sub	DWORD PTR -8[rbp], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -4[rbp], eax
.L42:
	cmp	DWORD PTR -8[rbp], 0
	jg	.L45
.L41:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -12[rbp]
	je	.L34
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L46
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	edx, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, .LC125[rip]
	mov	eax, 0
	call	printf@PLT
.L46:
	mov	eax, -1
	jmp	.L39
.L48:
	nop
	jmp	.L34
.L49:
	nop
.L34:
	add	DWORD PTR -12[rbp], 1
.L32:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L47
	mov	eax, 0
.L39:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	check_transform_order, .-check_transform_order
	.globl	same_transform
	.type	same_transform, @function
same_transform:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 16[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	edx, eax
	jne	.L51
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR 20[rax]
	cmp	edx, eax
	jne	.L51
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	cmp	rdx, rax
	je	.L52
.L51:
	mov	eax, 0
	jmp	.L53
.L52:
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 1
	jmp	.L54
.L57:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	je	.L55
	mov	DWORD PTR -8[rbp], 0
	jmp	.L56
.L55:
	add	DWORD PTR -12[rbp], 1
.L54:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L57
.L56:
	cmp	DWORD PTR -8[rbp], 0
	jne	.L58
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	eax, 2
	jle	.L58
	mov	DWORD PTR -12[rbp], 0
	jmp	.L59
.L61:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -12[rbp], eax
	je	.L60
	mov	eax, 0
	jmp	.L53
.L60:
	add	DWORD PTR -12[rbp], 1
.L59:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L61
	mov	eax, 1
	jmp	.L53
.L58:
	mov	eax, DWORD PTR -8[rbp]
.L53:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	same_transform, .-same_transform
	.section	.rodata
	.align 8
.LC126:
	.string	"Out of memory allocating symmetry element\n"
	.align 8
.LC127:
	.string	"Out of memory allocating transform table for symmetry element\n"
	.text
	.globl	alloc_symmetry_element
	.type	alloc_symmetry_element, @function
alloc_symmetry_element:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	esi, 88
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L63
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 42
	mov	esi, 1
	lea	rdi, .LC126[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L63:
	mov	eax, DWORD PTR AtomsCount[rip]
	cdqe
	mov	esi, 4
	mov	rdi, rax
	call	calloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	jne	.L64
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 62
	mov	esi, 1
	lea	rdi, .LC127[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L64:
	mov	DWORD PTR -12[rbp], 0
	jmp	.L65
.L66:
	mov	edx, DWORD PTR AtomsCount[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 2
	add	rax, rcx
	add	edx, 1
	mov	DWORD PTR [rax], edx
	add	DWORD PTR -12[rbp], 1
.L65:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L66
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	alloc_symmetry_element, .-alloc_symmetry_element
	.globl	destroy_symmetry_element
	.type	destroy_symmetry_element, @function
destroy_symmetry_element:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	je	.L71
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L70
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	free@PLT
.L70:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
.L71:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	destroy_symmetry_element, .-destroy_symmetry_element
	.section	.rodata
	.align 8
.LC128:
	.string	"        distance to symmetric atom (%g) is too big for %d\n"
	.text
	.globl	check_transform_quality
	.type	check_transform_quality, @function
check_transform_quality:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -76[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -56[rbp], xmm0
	jmp	.L73
.L82:
	mov	rax, QWORD PTR -88[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -68[rbp], eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	sal	rax, 5
	lea	rsi, [rdx+rax]
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	rcx
	mov	DWORD PTR -72[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -64[rbp], xmm0
	jmp	.L74
.L75:
	mov	eax, DWORD PTR -72[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -40[rbp+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -72[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -64[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -64[rbp], xmm0
	add	DWORD PTR -72[rbp], 1
.L74:
	cmp	DWORD PTR -72[rbp], 2
	jle	.L75
	mov	rax, QWORD PTR -64[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -64[rbp], rax
	movsd	xmm1, QWORD PTR ToleranceFinal[rip]
	movsd	xmm0, QWORD PTR -64[rbp]
	comisd	xmm0, xmm1
	jbe	.L87
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L78
	mov	edx, DWORD PTR -76[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	esi, edx
	movq	xmm0, rax
	lea	rdi, .LC128[rip]
	mov	eax, 1
	call	printf@PLT
.L78:
	mov	eax, -1
	jmp	.L83
.L87:
	movsd	xmm0, QWORD PTR -64[rbp]
	comisd	xmm0, QWORD PTR -56[rbp]
	jbe	.L80
	movsd	xmm0, QWORD PTR -64[rbp]
	movsd	QWORD PTR -56[rbp], xmm0
.L80:
	add	DWORD PTR -76[rbp], 1
.L73:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -76[rbp], eax
	jl	.L82
	mov	rax, QWORD PTR -88[rbp]
	movsd	xmm0, QWORD PTR -56[rbp]
	movsd	QWORD PTR 24[rax], xmm0
	mov	eax, 0
.L83:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L84
	call	__stack_chk_fail@PLT
.L84:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	check_transform_quality, .-check_transform_quality
	.section	.rodata
.LC129:
	.string	"Normal collapced!\n"
.LC131:
	.string	"Direction collapced!\n"
	.text
	.globl	eval_optimization_target_function
	.type	eval_optimization_target_function, @function
eval_optimization_target_function:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	QWORD PTR -104[rbp], rdi
	mov	QWORD PTR -112[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -104[rbp]
	mov	eax, DWORD PTR 20[rax]
	cmp	eax, 3
	jle	.L89
	mov	DWORD PTR -80[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -64[rbp], xmm0
	jmp	.L90
.L91:
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm1, QWORD PTR 8[rax+rdx*8]
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -64[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -64[rbp], xmm0
	add	DWORD PTR -80[rbp], 1
.L90:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L91
	mov	rax, QWORD PTR -64[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -64[rbp], rax
	movsd	xmm0, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, QWORD PTR -64[rbp]
	jbe	.L121
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 18
	mov	esi, 1
	lea	rdi, .LC129[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L121:
	mov	DWORD PTR -80[rbp], 0
	jmp	.L94
.L95:
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	divsd	xmm0, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -80[rbp], 1
.L94:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L95
	mov	rax, QWORD PTR -104[rbp]
	movsd	xmm1, QWORD PTR 32[rax]
	pxor	xmm0, xmm0
	comisd	xmm0, xmm1
	jbe	.L89
	mov	rax, QWORD PTR -104[rbp]
	movsd	xmm0, QWORD PTR 32[rax]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	rax, QWORD PTR -104[rbp]
	movsd	QWORD PTR 32[rax], xmm0
	mov	DWORD PTR -80[rbp], 0
	jmp	.L97
.L98:
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -80[rbp], 1
.L97:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L98
.L89:
	mov	rax, QWORD PTR -104[rbp]
	mov	eax, DWORD PTR 20[rax]
	cmp	eax, 6
	jle	.L99
	mov	DWORD PTR -80[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -64[rbp], xmm0
	jmp	.L100
.L101:
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm1, QWORD PTR [rax+rdx*8]
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -64[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -64[rbp], xmm0
	add	DWORD PTR -80[rbp], 1
.L100:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L101
	mov	rax, QWORD PTR -64[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -64[rbp], rax
	movsd	xmm0, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, QWORD PTR -64[rbp]
	jbe	.L122
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 21
	mov	esi, 1
	lea	rdi, .LC131[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L122:
	mov	DWORD PTR -80[rbp], 0
	jmp	.L104
.L105:
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	divsd	xmm0, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -104[rbp]
	mov	edx, DWORD PTR -80[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	QWORD PTR [rax+rdx*8], xmm0
	add	DWORD PTR -80[rbp], 1
.L104:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L105
.L99:
	mov	DWORD PTR -84[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -56[rbp], xmm0
	movsd	xmm0, QWORD PTR -56[rbp]
	movsd	QWORD PTR -72[rbp], xmm0
	jmp	.L106
.L111:
	mov	rax, QWORD PTR -104[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	lea	rsi, [rdx+rax]
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	rcx
	mov	rax, QWORD PTR -104[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -76[rbp], eax
	mov	DWORD PTR -80[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -64[rbp], xmm0
	jmp	.L107
.L108:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -40[rbp+rax*8]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -64[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -64[rbp], xmm0
	add	DWORD PTR -80[rbp], 1
.L107:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L108
	movsd	xmm0, QWORD PTR -64[rbp]
	comisd	xmm0, QWORD PTR -56[rbp]
	jbe	.L109
	movsd	xmm0, QWORD PTR -64[rbp]
	movsd	QWORD PTR -56[rbp], xmm0
.L109:
	movsd	xmm0, QWORD PTR -72[rbp]
	addsd	xmm0, QWORD PTR -64[rbp]
	movsd	QWORD PTR -72[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L106:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -84[rbp], eax
	jl	.L111
	cmp	QWORD PTR -112[rbp], 0
	je	.L112
	mov	rax, QWORD PTR -112[rbp]
	mov	DWORD PTR [rax], 0
	mov	rax, QWORD PTR -56[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movsd	xmm1, QWORD PTR ToleranceFinal[rip]
	comisd	xmm1, xmm0
	jbe	.L112
	mov	rax, QWORD PTR -112[rbp]
	mov	DWORD PTR [rax], 1
.L112:
	movsd	xmm0, QWORD PTR -72[rbp]
	movq	rax, xmm0
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L115
	call	__stack_chk_fail@PLT
.L115:
	movq	xmm0, rax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	eval_optimization_target_function, .-eval_optimization_target_function
	.globl	get_params
	.type	get_params, @function
get_params:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 20[rax]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 32[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	get_params, .-get_params
	.globl	set_params
	.type	set_params, @function
set_params:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 20[rax]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 32[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	set_params, .-set_params
	.section	.rodata
	.align 8
.LC132:
	.string	"Catastrophe in optimize_transformation_params()!\n"
	.align 8
.LC133:
	.string	"            function value = %g\n"
	.align 8
.LC134:
	.string	"        function value is small enough"
	.align 8
.LC136:
	.string	"        no progress is made, stop optimization"
	.align 8
.LC137:
	.string	"        i = %d, grad = %12.6e, force = %12.6e\n"
	.align 8
.LC141:
	.string	"        interpolation base points: %g, %g, %g\n"
	.align 8
.LC144:
	.string	"        linear interpolation coefficients %g, %g\n"
.LC147:
	.string	"        interpolated: %g\n"
	.align 8
.LC148:
	.string	"        maximum number of optimization cycles made"
	.align 8
.LC149:
	.string	"        optimization completed after %d cycles with f = %g\n"
	.text
	.globl	optimize_transformation_params
	.type	optimize_transformation_params, @function
optimize_transformation_params:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 384
	mov	QWORD PTR -376[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -376[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	DWORD PTR -340[rbp], eax
	mov	DWORD PTR -352[rbp], 0
	mov	DWORD PTR -344[rbp], 0
	cmp	DWORD PTR -340[rbp], 7
	jle	.L126
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 49
	mov	esi, 1
	lea	rdi, .LC132[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L126:
	pxor	xmm0, xmm0
	movsd	QWORD PTR -336[rbp], xmm0
.L185:
	movsd	xmm0, QWORD PTR -336[rbp]
	movsd	QWORD PTR -312[rbp], xmm0
	lea	rdx, -356[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	eval_optimization_target_function
	movq	rax, xmm0
	mov	QWORD PTR -336[rbp], rax
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L127
	mov	rax, QWORD PTR -336[rbp]
	movq	xmm0, rax
	lea	rdi, .LC133[rip]
	mov	eax, 1
	call	printf@PLT
.L127:
	mov	eax, DWORD PTR -356[rbp]
	test	eax, eax
	je	.L128
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L205
	lea	rdi, .LC134[rip]
	call	puts@PLT
	jmp	.L205
.L128:
	cmp	DWORD PTR -352[rbp], 0
	jle	.L131
	movsd	xmm0, QWORD PTR -336[rbp]
	subsd	xmm0, QWORD PTR -312[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR OptChangeThreshold[rip]
	comisd	xmm0, xmm1
	jbe	.L203
	mov	DWORD PTR -344[rbp], 0
	jmp	.L134
.L203:
	add	DWORD PTR -344[rbp], 1
.L134:
	mov	eax, DWORD PTR OptChangeHits[rip]
	cmp	DWORD PTR -344[rbp], eax
	jl	.L131
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L206
	lea	rdi, .LC136[rip]
	call	puts@PLT
	jmp	.L206
.L131:
	lea	rdx, -256[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	get_params
	mov	DWORD PTR -348[rbp], 0
	jmp	.L136
.L138:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -256[rbp+rax*8]
	movsd	xmm1, QWORD PTR GradientStep[rip]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	lea	rdx, -256[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_params
	mov	rax, QWORD PTR -376[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	eval_optimization_target_function
	movq	rax, xmm0
	mov	QWORD PTR -272[rbp], rax
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -256[rbp+rax*8]
	movsd	xmm0, QWORD PTR GradientStep[rip]
	addsd	xmm0, xmm0
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	lea	rdx, -256[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_params
	mov	rax, QWORD PTR -376[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	eval_optimization_target_function
	movq	rax, xmm0
	mov	QWORD PTR -264[rbp], rax
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -256[rbp+rax*8]
	movsd	xmm1, QWORD PTR GradientStep[rip]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	movsd	xmm0, QWORD PTR -264[rbp]
	movapd	xmm1, xmm0
	subsd	xmm1, QWORD PTR -272[rbp]
	movsd	xmm0, QWORD PTR GradientStep[rip]
	movapd	xmm2, xmm0
	addsd	xmm2, xmm0
	divsd	xmm1, xmm2
	movapd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -192[rbp+rax*8], xmm0
	movsd	xmm0, QWORD PTR -264[rbp]
	movapd	xmm1, xmm0
	addsd	xmm1, QWORD PTR -272[rbp]
	movsd	xmm0, QWORD PTR -336[rbp]
	movapd	xmm2, xmm0
	addsd	xmm2, xmm0
	subsd	xmm1, xmm2
	movapd	xmm0, xmm1
	movsd	xmm2, QWORD PTR GradientStep[rip]
	movsd	xmm1, QWORD PTR GradientStep[rip]
	mulsd	xmm1, xmm2
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L137
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -128[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	mov	rdx, QWORD PTR -192[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	movapd	xmm1, xmm0
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC137[rip]
	mov	eax, 2
	call	printf@PLT
.L137:
	add	DWORD PTR -348[rbp], 1
.L136:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L138
	mov	DWORD PTR -348[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -328[rbp], xmm0
	jmp	.L139
.L146:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -128[rbp+rax*8]
	pxor	xmm0, xmm0
	comisd	xmm0, xmm1
	jbe	.L140
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -128[rbp+rax*8]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
.L140:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -128[rbp+rax*8]
	movsd	xmm0, QWORD PTR .LC138[rip]
	comisd	xmm0, xmm1
	jbe	.L142
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR .LC138[rip]
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
.L142:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -128[rbp+rax*8]
	comisd	xmm0, QWORD PTR .LC139[rip]
	jbe	.L144
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR .LC139[rip]
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
.L144:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -192[rbp+rax*8]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -128[rbp+rax*8]
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -64[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -328[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -328[rbp], xmm0
	add	DWORD PTR -348[rbp], 1
.L139:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L146
	mov	rax, QWORD PTR -328[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -328[rbp], rax
	movsd	xmm1, QWORD PTR MaxOptStep[rip]
	movsd	xmm0, QWORD PTR -328[rbp]
	comisd	xmm0, xmm1
	jbe	.L158
	mov	DWORD PTR -348[rbp], 0
	jmp	.L149
.L150:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -64[rbp+rax*8]
	movsd	xmm0, QWORD PTR MaxOptStep[rip]
	divsd	xmm0, QWORD PTR -328[rbp]
	mulsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L149:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L150
	movsd	xmm0, QWORD PTR MaxOptStep[rip]
	movsd	QWORD PTR -328[rbp], xmm0
.L158:
	mov	DWORD PTR -348[rbp], 0
	jmp	.L151
.L152:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -256[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L151:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L152
	lea	rdx, -256[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_params
	mov	rax, QWORD PTR -376[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	eval_optimization_target_function
	movq	rax, xmm0
	mov	QWORD PTR -304[rbp], rax
	movsd	xmm0, QWORD PTR -336[rbp]
	comisd	xmm0, QWORD PTR -304[rbp]
	ja	.L207
	mov	DWORD PTR -348[rbp], 0
	jmp	.L156
.L157:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -256[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -64[rbp+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L156:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L157
	lea	rdx, -256[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_params
	movsd	xmm0, QWORD PTR -328[rbp]
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	movsd	QWORD PTR -328[rbp], xmm0
	movsd	xmm1, QWORD PTR MinOptStep[rip]
	movsd	xmm0, QWORD PTR -328[rbp]
	comisd	xmm0, xmm1
	ja	.L158
	jmp	.L155
.L207:
	nop
.L155:
	movsd	xmm1, QWORD PTR MinOptStep[rip]
	movsd	xmm0, QWORD PTR -328[rbp]
	comisd	xmm0, xmm1
	jbe	.L159
	movsd	xmm0, QWORD PTR MaxOptStep[rip]
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	comisd	xmm0, QWORD PTR -328[rbp]
	jbe	.L159
	mov	DWORD PTR -348[rbp], 0
	jmp	.L162
.L163:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -256[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L162:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L163
	lea	rdx, -256[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_params
	mov	rax, QWORD PTR -376[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	eval_optimization_target_function
	movq	rax, xmm0
	mov	QWORD PTR -296[rbp], rax
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L164
	movsd	xmm1, QWORD PTR -296[rbp]
	movsd	xmm0, QWORD PTR -304[rbp]
	mov	rax, QWORD PTR -336[rbp]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC141[rip]
	mov	eax, 3
	call	printf@PLT
.L164:
	mov	DWORD PTR -348[rbp], 0
	jmp	.L165
.L166:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -256[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	movapd	xmm2, xmm0
	addsd	xmm2, xmm0
	subsd	xmm1, xmm2
	movapd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L165:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L166
	movsd	xmm1, QWORD PTR -336[rbp]
	movsd	xmm0, QWORD PTR .LC142[rip]
	mulsd	xmm0, xmm1
	subsd	xmm0, QWORD PTR -296[rbp]
	movsd	xmm2, QWORD PTR -304[rbp]
	movsd	xmm1, QWORD PTR .LC143[rip]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	movsd	QWORD PTR -288[rbp], xmm0
	movsd	xmm0, QWORD PTR -336[rbp]
	movapd	xmm1, xmm0
	addsd	xmm1, QWORD PTR -296[rbp]
	movsd	xmm0, QWORD PTR -304[rbp]
	movapd	xmm2, xmm0
	addsd	xmm2, xmm0
	subsd	xmm1, xmm2
	movapd	xmm0, xmm1
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	movsd	QWORD PTR -320[rbp], xmm0
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L167
	movsd	xmm0, QWORD PTR -320[rbp]
	mov	rax, QWORD PTR -288[rbp]
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC144[rip]
	mov	eax, 2
	call	printf@PLT
.L167:
	movsd	xmm0, QWORD PTR -320[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jbe	.L168
	movsd	xmm0, QWORD PTR -288[rbp]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm1, xmm0
	movsd	xmm0, QWORD PTR -320[rbp]
	movapd	xmm2, xmm0
	addsd	xmm2, xmm0
	divsd	xmm1, xmm2
	movapd	xmm0, xmm1
	movsd	QWORD PTR -280[rbp], xmm0
	movsd	xmm0, QWORD PTR -280[rbp]
	comisd	xmm0, QWORD PTR .LC145[rip]
	jbe	.L170
	movsd	xmm0, QWORD PTR .LC146[rip]
	comisd	xmm0, QWORD PTR -280[rbp]
	jbe	.L170
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L173
	mov	rax, QWORD PTR -280[rbp]
	movq	xmm0, rax
	lea	rdi, .LC147[rip]
	mov	eax, 1
	call	printf@PLT
.L173:
	mov	DWORD PTR -348[rbp], 0
	jmp	.L174
.L175:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -256[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mulsd	xmm0, QWORD PTR -280[rbp]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L174:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L175
	jmp	.L168
.L170:
	pxor	xmm0, xmm0
	movsd	QWORD PTR -320[rbp], xmm0
.L168:
	pxor	xmm0, xmm0
	comisd	xmm0, QWORD PTR -320[rbp]
	jb	.L176
	movsd	xmm0, QWORD PTR -304[rbp]
	comisd	xmm0, QWORD PTR -296[rbp]
	jbe	.L204
	mov	DWORD PTR -348[rbp], 0
	jmp	.L180
.L181:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -256[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	addsd	xmm0, xmm0
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L180:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L181
	jmp	.L176
.L204:
	mov	DWORD PTR -348[rbp], 0
	jmp	.L182
.L183:
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -256[rbp+rax*8]
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -348[rbp]
	cdqe
	movsd	QWORD PTR -256[rbp+rax*8], xmm0
	add	DWORD PTR -348[rbp], 1
.L182:
	mov	eax, DWORD PTR -348[rbp]
	cmp	eax, DWORD PTR -340[rbp]
	jl	.L183
.L176:
	lea	rdx, -256[rbp]
	mov	rax, QWORD PTR -376[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_params
.L159:
	movsd	xmm1, QWORD PTR MinOptStep[rip]
	movsd	xmm0, QWORD PTR -328[rbp]
	comisd	xmm0, xmm1
	jbe	.L130
	add	DWORD PTR -352[rbp], 1
	mov	eax, DWORD PTR MaxOptCycles[rip]
	cmp	DWORD PTR -352[rbp], eax
	jl	.L185
	jmp	.L130
.L205:
	nop
	jmp	.L130
.L206:
	nop
.L130:
	mov	rax, QWORD PTR -376[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	eval_optimization_target_function
	movq	rax, xmm0
	mov	QWORD PTR -336[rbp], rax
	mov	eax, DWORD PTR MaxOptCycles[rip]
	cmp	DWORD PTR -352[rbp], eax
	jl	.L186
	mov	DWORD PTR BadOptimization[rip], 1
.L186:
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L208
	mov	eax, DWORD PTR MaxOptCycles[rip]
	cmp	DWORD PTR -352[rbp], eax
	jl	.L188
	lea	rdi, .LC148[rip]
	call	puts@PLT
.L188:
	mov	rdx, QWORD PTR -336[rbp]
	mov	eax, DWORD PTR -352[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC149[rip]
	mov	eax, 1
	call	printf@PLT
.L208:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L189
	call	__stack_chk_fail@PLT
.L189:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	optimize_transformation_params, .-optimize_transformation_params
	.section	.rodata
	.align 8
.LC150:
	.string	"        no transformation correspondence table can be constructed"
	.align 8
.LC151:
	.string	"        transformation is identical to plane %d\n"
	.align 8
.LC152:
	.string	"        transformation is identical to inversion center %d\n"
	.align 8
.LC153:
	.string	"        transformation is identical to normal axis %d\n"
	.align 8
.LC154:
	.string	"        transformation is identical to improper axis %d\n"
	.align 8
.LC155:
	.string	"        incorrect transformation order"
	.align 8
.LC156:
	.string	"        refined transformation does not pass the numeric threshold"
	.text
	.globl	refine_symmetry_element
	.type	refine_symmetry_element, @function
refine_symmetry_element:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	cmp	DWORD PTR -28[rbp], 0
	je	.L210
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	establish_pairs
	test	eax, eax
	jns	.L210
	mov	rax, QWORD PTR StatPairs[rip]
	add	rax, 1
	mov	QWORD PTR StatPairs[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L211
	lea	rdi, .LC150[rip]
	call	puts@PLT
.L211:
	mov	eax, -1
	jmp	.L212
.L210:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L213
.L216:
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	same_transform
	test	eax, eax
	je	.L214
	mov	rax, QWORD PTR StatDups[rip]
	add	rax, 1
	mov	QWORD PTR StatDups[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L215
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC151[rip]
	mov	eax, 0
	call	printf@PLT
.L215:
	mov	eax, -1
	jmp	.L212
.L214:
	add	DWORD PTR -4[rbp], 1
.L213:
	mov	eax, DWORD PTR PlanesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L216
	mov	DWORD PTR -4[rbp], 0
	jmp	.L217
.L220:
	mov	rdx, QWORD PTR InversionCenters[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	same_transform
	test	eax, eax
	je	.L218
	mov	rax, QWORD PTR StatDups[rip]
	add	rax, 1
	mov	QWORD PTR StatDups[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L219
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC152[rip]
	mov	eax, 0
	call	printf@PLT
.L219:
	mov	eax, -1
	jmp	.L212
.L218:
	add	DWORD PTR -4[rbp], 1
.L217:
	mov	eax, DWORD PTR InversionCentersCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L220
	mov	DWORD PTR -4[rbp], 0
	jmp	.L221
.L224:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	same_transform
	test	eax, eax
	je	.L222
	mov	rax, QWORD PTR StatDups[rip]
	add	rax, 1
	mov	QWORD PTR StatDups[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L223
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC153[rip]
	mov	eax, 0
	call	printf@PLT
.L223:
	mov	eax, -1
	jmp	.L212
.L222:
	add	DWORD PTR -4[rbp], 1
.L221:
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L224
	mov	DWORD PTR -4[rbp], 0
	jmp	.L225
.L228:
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	same_transform
	test	eax, eax
	je	.L226
	mov	rax, QWORD PTR StatDups[rip]
	add	rax, 1
	mov	QWORD PTR StatDups[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L227
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC154[rip]
	mov	eax, 0
	call	printf@PLT
.L227:
	mov	eax, -1
	jmp	.L212
.L226:
	add	DWORD PTR -4[rbp], 1
.L225:
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L228
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	check_transform_order
	test	eax, eax
	jns	.L229
	mov	rax, QWORD PTR StatOrder[rip]
	add	rax, 1
	mov	QWORD PTR StatOrder[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L230
	lea	rdi, .LC155[rip]
	call	puts@PLT
.L230:
	mov	eax, -1
	jmp	.L212
.L229:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	optimize_transformation_params
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	check_transform_quality
	test	eax, eax
	jns	.L231
	mov	rax, QWORD PTR StatOpt[rip]
	add	rax, 1
	mov	QWORD PTR StatOpt[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L232
	lea	rdi, .LC156[rip]
	call	puts@PLT
.L232:
	mov	eax, -1
	jmp	.L212
.L231:
	mov	rax, QWORD PTR StatAccept[rip]
	add	rax, 1
	mov	QWORD PTR StatAccept[rip], rax
	mov	eax, 0
.L212:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	refine_symmetry_element, .-refine_symmetry_element
	.globl	mirror_atom
	.type	mirror_atom, @function
mirror_atom:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -12[rbp], 0
	mov	rax, QWORD PTR -24[rbp]
	movsd	xmm0, QWORD PTR 32[rax]
	movsd	QWORD PTR -8[rbp], xmm0
	jmp	.L234
.L235:
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	movsd	xmm1, QWORD PTR 8[rax+rdx*8]
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm1, xmm0
	movsd	xmm0, QWORD PTR -8[rbp]
	subsd	xmm0, xmm1
	movsd	QWORD PTR -8[rbp], xmm0
	add	DWORD PTR -12[rbp], 1
.L234:
	cmp	DWORD PTR -12[rbp], 2
	jle	.L235
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	DWORD PTR [rax], edx
	mov	DWORD PTR -12[rbp], 0
	jmp	.L236
.L237:
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	movsd	xmm1, QWORD PTR 8[rax+rdx*8]
	movsd	xmm0, QWORD PTR -8[rbp]
	movapd	xmm2, xmm0
	addsd	xmm2, xmm0
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm0, xmm2
	addsd	xmm0, xmm1
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rdx, edx
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -12[rbp], 1
.L236:
	cmp	DWORD PTR -12[rbp], 2
	jle	.L237
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	mirror_atom, .-mirror_atom
	.section	.rodata
	.align 8
.LC157:
	.string	"Trying mirror plane for atoms %d,%d\n"
	.align 8
.LC158:
	.string	"Atoms %d and %d coincide (r = %g)\n"
	.align 8
.LC159:
	.string	"    initial plane is at %g from the origin\n"
	.align 8
.LC160:
	.string	"    refinement failed for the plane"
	.text
	.globl	init_mirror_plane
	.type	init_mirror_plane, @function
init_mirror_plane:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	DWORD PTR -100[rbp], edi
	mov	DWORD PTR -104[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	call	alloc_symmetry_element
	mov	QWORD PTR -72[rbp], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L239
	mov	edx, DWORD PTR -104[rbp]
	mov	eax, DWORD PTR -100[rbp]
	mov	esi, eax
	lea	rdi, .LC157[rip]
	mov	eax, 0
	call	printf@PLT
.L239:
	mov	rax, QWORD PTR StatTotal[rip]
	add	rax, 1
	mov	QWORD PTR StatTotal[rip], rax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, mirror_atom[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -72[rbp]
	mov	DWORD PTR 16[rax], 2
	mov	rax, QWORD PTR -72[rbp]
	mov	DWORD PTR 20[rax], 4
	mov	DWORD PTR -92[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -88[rbp], xmm0
	jmp	.L240
.L241:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -100[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -104[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -100[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -104[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	addsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -64[rbp+rax*8]
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -88[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -88[rbp], xmm0
	add	DWORD PTR -92[rbp], 1
.L240:
	cmp	DWORD PTR -92[rbp], 2
	jle	.L241
	mov	rax, QWORD PTR -88[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -88[rbp], rax
	movsd	xmm0, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, QWORD PTR -88[rbp]
	jbe	.L258
	mov	rax, QWORD PTR stderr[rip]
	mov	rsi, QWORD PTR -88[rbp]
	mov	ecx, DWORD PTR -104[rbp]
	mov	edx, DWORD PTR -100[rbp]
	movq	xmm0, rsi
	lea	rsi, .LC158[rip]
	mov	rdi, rax
	mov	eax, 1
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L258:
	mov	DWORD PTR -92[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -80[rbp], xmm0
	jmp	.L244
.L245:
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	divsd	xmm0, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -92[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -92[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -80[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -80[rbp], xmm0
	add	DWORD PTR -92[rbp], 1
.L244:
	cmp	DWORD PTR -92[rbp], 2
	jle	.L245
	pxor	xmm0, xmm0
	comisd	xmm0, QWORD PTR -80[rbp]
	jbe	.L246
	movsd	xmm0, QWORD PTR -80[rbp]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	movsd	QWORD PTR -80[rbp], xmm0
	mov	DWORD PTR -92[rbp], 0
	jmp	.L248
.L249:
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -92[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -92[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -92[rbp], 1
.L248:
	cmp	DWORD PTR -92[rbp], 2
	jle	.L249
.L246:
	mov	rax, QWORD PTR -72[rbp]
	movsd	xmm0, QWORD PTR -80[rbp]
	movsd	QWORD PTR 32[rax], xmm0
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L250
	mov	rax, QWORD PTR -80[rbp]
	movq	xmm0, rax
	lea	rdi, .LC159[rip]
	mov	eax, 1
	call	printf@PLT
.L250:
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	refine_symmetry_element
	test	eax, eax
	jns	.L251
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L252
	lea	rdi, .LC160[rip]
	call	puts@PLT
.L252:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	destroy_symmetry_element
	mov	eax, 0
	jmp	.L254
.L251:
	mov	rax, QWORD PTR -72[rbp]
.L254:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L255
	call	__stack_chk_fail@PLT
.L255:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	init_mirror_plane, .-init_mirror_plane
	.section	.rodata
	.align 8
.LC161:
	.string	"Trying whole-molecule mirror plane"
	.align 8
.LC163:
	.string	"Catastrophe in init_ultimate_plane(): %g, %g and %g have no ordering!\n"
	.text
	.globl	init_ultimate_plane
	.type	init_ultimate_plane, @function
init_ultimate_plane:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 192
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	call	alloc_symmetry_element
	mov	QWORD PTR -136[rbp], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L260
	lea	rdi, .LC161[rip]
	call	puts@PLT
.L260:
	mov	rax, QWORD PTR StatTotal[rip]
	add	rax, 1
	mov	QWORD PTR StatTotal[rip], rax
	mov	rax, QWORD PTR -136[rbp]
	lea	rdx, mirror_atom[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -136[rbp]
	mov	DWORD PTR 16[rax], 1
	mov	rax, QWORD PTR -136[rbp]
	mov	DWORD PTR 20[rax], 4
	mov	DWORD PTR -180[rbp], 0
	jmp	.L261
.L262:
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	pxor	xmm0, xmm0
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	QWORD PTR -96[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -96[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
	add	DWORD PTR -180[rbp], 1
.L261:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L262
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR -128[rbp], xmm0
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR -88[rbp], xmm0
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR -48[rbp], xmm0
	mov	DWORD PTR -188[rbp], 1
	jmp	.L263
.L272:
	mov	DWORD PTR -184[rbp], 0
	jmp	.L264
.L271:
	mov	DWORD PTR -180[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -176[rbp], xmm0
	jmp	.L265
.L266:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -184[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -176[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -176[rbp], xmm0
	add	DWORD PTR -180[rbp], 1
.L265:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L266
	mov	rax, QWORD PTR -176[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -176[rbp], rax
	mov	DWORD PTR -180[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -152[rbp], xmm0
	movsd	xmm0, QWORD PTR -152[rbp]
	movsd	QWORD PTR -160[rbp], xmm0
	movsd	xmm0, QWORD PTR -160[rbp]
	movsd	QWORD PTR -168[rbp], xmm0
	jmp	.L267
.L268:
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	divsd	xmm0, QWORD PTR -176[rbp]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -128[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -168[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -168[rbp], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -96[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -160[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -160[rbp], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -152[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -152[rbp], xmm0
	add	DWORD PTR -180[rbp], 1
.L267:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L268
	mov	DWORD PTR -180[rbp], 0
	jmp	.L269
.L270:
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -128[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm1, QWORD PTR -168[rbp]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -96[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm1, QWORD PTR -160[rbp]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	QWORD PTR -96[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm1, QWORD PTR -152[rbp]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -180[rbp], 1
.L269:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L270
	add	DWORD PTR -184[rbp], 1
.L264:
	mov	eax, DWORD PTR -184[rbp]
	cmp	eax, DWORD PTR -188[rbp]
	jl	.L271
	add	DWORD PTR -188[rbp], 1
.L263:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -188[rbp], eax
	jl	.L272
	mov	DWORD PTR -180[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -152[rbp], xmm0
	movsd	xmm0, QWORD PTR -152[rbp]
	movsd	QWORD PTR -160[rbp], xmm0
	movsd	xmm0, QWORD PTR -160[rbp]
	movsd	QWORD PTR -168[rbp], xmm0
	jmp	.L273
.L274:
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -128[rbp+rax*8]
	movsd	xmm1, QWORD PTR -168[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -168[rbp], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -96[rbp+rax*8]
	movsd	xmm1, QWORD PTR -160[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -160[rbp], xmm0
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	movsd	xmm1, QWORD PTR -152[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -152[rbp], xmm0
	add	DWORD PTR -180[rbp], 1
.L273:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L274
	mov	QWORD PTR -144[rbp], 0
	movsd	xmm0, QWORD PTR -168[rbp]
	comisd	xmm0, QWORD PTR -160[rbp]
	jb	.L275
	movsd	xmm0, QWORD PTR -168[rbp]
	comisd	xmm0, QWORD PTR -152[rbp]
	jb	.L275
	lea	rax, -128[rbp]
	mov	QWORD PTR -144[rbp], rax
.L275:
	movsd	xmm0, QWORD PTR -160[rbp]
	comisd	xmm0, QWORD PTR -168[rbp]
	jb	.L278
	movsd	xmm0, QWORD PTR -160[rbp]
	comisd	xmm0, QWORD PTR -152[rbp]
	jb	.L278
	lea	rax, -96[rbp]
	mov	QWORD PTR -144[rbp], rax
.L278:
	movsd	xmm0, QWORD PTR -152[rbp]
	comisd	xmm0, QWORD PTR -168[rbp]
	jb	.L281
	movsd	xmm0, QWORD PTR -152[rbp]
	comisd	xmm0, QWORD PTR -160[rbp]
	jb	.L281
	lea	rax, -64[rbp]
	mov	QWORD PTR -144[rbp], rax
.L281:
	cmp	QWORD PTR -144[rbp], 0
	jne	.L284
	mov	rax, QWORD PTR stderr[rip]
	movsd	xmm1, QWORD PTR -152[rbp]
	movsd	xmm0, QWORD PTR -160[rbp]
	mov	rdx, QWORD PTR -168[rbp]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rdx
	lea	rsi, .LC163[rip]
	mov	rdi, rax
	mov	eax, 3
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L284:
	mov	DWORD PTR -180[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -176[rbp], xmm0
	jmp	.L285
.L286:
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -144[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -144[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -176[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -176[rbp], xmm0
	add	DWORD PTR -180[rbp], 1
.L285:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L286
	mov	rax, QWORD PTR -176[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -176[rbp], rax
	movsd	xmm0, QWORD PTR -176[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jbe	.L310
	mov	DWORD PTR -180[rbp], 0
	jmp	.L289
.L290:
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -144[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	divsd	xmm0, QWORD PTR -176[rbp]
	mov	rax, QWORD PTR -136[rbp]
	mov	edx, DWORD PTR -180[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -180[rbp], 1
.L289:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L290
	jmp	.L291
.L310:
	mov	DWORD PTR -180[rbp], 1
	jmp	.L292
.L293:
	mov	rax, QWORD PTR -136[rbp]
	mov	edx, DWORD PTR -180[rbp]
	movsx	rdx, edx
	add	rdx, 4
	pxor	xmm0, xmm0
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -180[rbp], 1
.L292:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L293
	mov	rax, QWORD PTR -136[rbp]
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR 40[rax], xmm0
.L291:
	mov	DWORD PTR -180[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -176[rbp], xmm0
	jmp	.L294
.L295:
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -136[rbp]
	mov	edx, DWORD PTR -180[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -176[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -176[rbp], xmm0
	add	DWORD PTR -180[rbp], 1
.L294:
	cmp	DWORD PTR -180[rbp], 2
	jle	.L295
	mov	rax, QWORD PTR -136[rbp]
	movsd	xmm0, QWORD PTR -176[rbp]
	movsd	QWORD PTR 32[rax], xmm0
	mov	DWORD PTR -180[rbp], 0
	jmp	.L296
.L297:
	mov	rax, QWORD PTR -136[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -180[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	mov	eax, DWORD PTR -180[rbp]
	mov	DWORD PTR [rdx], eax
	add	DWORD PTR -180[rbp], 1
.L296:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -180[rbp], eax
	jl	.L297
	mov	rax, QWORD PTR -136[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	refine_symmetry_element
	test	eax, eax
	jns	.L298
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L299
	lea	rdi, .LC160[rip]
	call	puts@PLT
.L299:
	mov	rax, QWORD PTR -136[rbp]
	mov	rdi, rax
	call	destroy_symmetry_element
	mov	eax, 0
	jmp	.L301
.L298:
	mov	rax, QWORD PTR -136[rbp]
.L301:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L302
	call	__stack_chk_fail@PLT
.L302:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	init_ultimate_plane, .-init_ultimate_plane
	.globl	invert_atom
	.type	invert_atom, @function
invert_atom:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	DWORD PTR [rax], edx
	mov	DWORD PTR -4[rbp], 0
	jmp	.L312
.L313:
	mov	rax, QWORD PTR -24[rbp]
	movsd	xmm0, QWORD PTR 32[rax]
	movapd	xmm1, xmm0
	addsd	xmm1, xmm0
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm0, xmm1
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	movsd	xmm1, QWORD PTR 8[rax+rdx*8]
	subsd	xmm0, xmm1
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -4[rbp], 1
.L312:
	cmp	DWORD PTR -4[rbp], 2
	jle	.L313
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	invert_atom, .-invert_atom
	.section	.rodata
	.align 8
.LC164:
	.string	"Trying inversion center at the center of something"
	.align 8
.LC165:
	.string	"    initial inversion center is at %g from the origin\n"
	.align 8
.LC166:
	.string	"    refinement failed for the inversion center"
	.text
	.globl	init_inversion_center
	.type	init_inversion_center, @function
init_inversion_center:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	call	alloc_symmetry_element
	mov	QWORD PTR -8[rbp], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L315
	lea	rdi, .LC164[rip]
	call	puts@PLT
.L315:
	mov	rax, QWORD PTR StatTotal[rip]
	add	rax, 1
	mov	QWORD PTR StatTotal[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, invert_atom[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 16[rax], 2
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 20[rax], 4
	mov	DWORD PTR -20[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -16[rbp], xmm0
	jmp	.L316
.L317:
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm0, QWORD PTR [rdx+rax]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -16[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -16[rbp], xmm0
	add	DWORD PTR -20[rbp], 1
.L316:
	cmp	DWORD PTR -20[rbp], 2
	jle	.L317
	mov	rax, QWORD PTR -16[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -16[rbp], rax
	movsd	xmm0, QWORD PTR -16[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jbe	.L330
	mov	DWORD PTR -20[rbp], 0
	jmp	.L320
.L321:
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm0, QWORD PTR [rdx+rax]
	divsd	xmm0, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -20[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -20[rbp], 1
.L320:
	cmp	DWORD PTR -20[rbp], 2
	jle	.L321
	jmp	.L322
.L330:
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR 40[rax], xmm0
	mov	DWORD PTR -20[rbp], 1
	jmp	.L323
.L324:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -20[rbp]
	movsx	rdx, edx
	add	rdx, 4
	pxor	xmm0, xmm0
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -20[rbp], 1
.L323:
	cmp	DWORD PTR -20[rbp], 2
	jle	.L324
.L322:
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR -16[rbp]
	movsd	QWORD PTR 32[rax], xmm0
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L325
	mov	rax, QWORD PTR -16[rbp]
	movq	xmm0, rax
	lea	rdi, .LC165[rip]
	mov	eax, 1
	call	printf@PLT
.L325:
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	refine_symmetry_element
	test	eax, eax
	jns	.L326
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L327
	lea	rdi, .LC166[rip]
	call	puts@PLT
.L327:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	destroy_symmetry_element
	mov	eax, 0
	jmp	.L328
.L326:
	mov	rax, QWORD PTR -8[rbp]
.L328:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	init_inversion_center, .-init_inversion_center
	.globl	rotate_atom
	.type	rotate_atom, @function
rotate_atom:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 240
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -224[rbp], rsi
	mov	QWORD PTR -232[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	je	.L332
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 16[rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC167[rip]
	divsd	xmm0, xmm1
	jmp	.L333
.L332:
	movsd	xmm0, QWORD PTR .LC162[rip]
.L333:
	movsd	QWORD PTR -184[rbp], xmm0
	mov	rax, QWORD PTR -184[rbp]
	movq	xmm0, rax
	call	sin@PLT
	movq	rax, xmm0
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -184[rbp]
	movq	xmm0, rax
	call	cos@PLT
	movq	rax, xmm0
	mov	QWORD PTR -168[rbp], rax
	mov	DWORD PTR -196[rbp], 0
	jmp	.L334
.L335:
	mov	rax, QWORD PTR -224[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm2, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm1, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -160[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L334:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L335
	mov	DWORD PTR -196[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -192[rbp], xmm0
	jmp	.L336
.L337:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -160[rbp+rax*8]
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -192[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -192[rbp], xmm0
	add	DWORD PTR -196[rbp], 1
.L336:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L337
	mov	DWORD PTR -196[rbp], 0
	jmp	.L338
.L339:
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	mulsd	xmm0, QWORD PTR -192[rbp]
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -96[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L338:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L339
	mov	DWORD PTR -196[rbp], 0
	jmp	.L340
.L341:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -160[rbp+rax*8]
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -96[rbp+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L340:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L341
	movsd	xmm1, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm0, QWORD PTR 80[rax]
	mulsd	xmm0, xmm1
	movsd	xmm2, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm1, QWORD PTR 72[rax]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	movsd	QWORD PTR -32[rbp], xmm0
	movsd	xmm1, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm0, QWORD PTR 64[rax]
	mulsd	xmm0, xmm1
	movsd	xmm2, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm1, QWORD PTR 80[rax]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	movsd	QWORD PTR -24[rbp], xmm0
	movsd	xmm1, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm0, QWORD PTR 72[rax]
	mulsd	xmm0, xmm1
	movsd	xmm2, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm1, QWORD PTR 64[rax]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	movsd	QWORD PTR -16[rbp], xmm0
	mov	DWORD PTR -196[rbp], 0
	jmp	.L342
.L343:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -96[rbp+rax*8]
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mulsd	xmm0, QWORD PTR -168[rbp]
	addsd	xmm1, xmm0
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm0, QWORD PTR -176[rbp]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L342:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L343
	mov	DWORD PTR -196[rbp], 0
	jmp	.L344
.L345:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -128[rbp+rax*8]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm2, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm0, xmm2
	addsd	xmm0, xmm1
	mov	rax, QWORD PTR -232[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L344:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L345
	mov	rax, QWORD PTR -224[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -232[rbp]
	mov	DWORD PTR [rax], edx
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L346
	call	__stack_chk_fail@PLT
.L346:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	rotate_atom, .-rotate_atom
	.section	.rodata
.LC168:
	.string	"Trying infinity axis"
	.align 8
.LC169:
	.string	"    refinement failed for the infinity axis"
	.text
	.globl	init_ultimate_axis
	.type	init_ultimate_axis, @function
init_ultimate_axis:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	call	alloc_symmetry_element
	mov	QWORD PTR -72[rbp], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L348
	lea	rdi, .LC168[rip]
	call	puts@PLT
.L348:
	mov	rax, QWORD PTR StatTotal[rip]
	add	rax, 1
	mov	QWORD PTR StatTotal[rip], rax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, rotate_atom[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -72[rbp]
	mov	DWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -72[rbp]
	mov	DWORD PTR 20[rax], 7
	mov	DWORD PTR -84[rbp], 0
	jmp	.L349
.L350:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	pxor	xmm0, xmm0
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L349:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L350
	mov	DWORD PTR -88[rbp], 0
	jmp	.L351
.L361:
	mov	DWORD PTR -84[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -80[rbp], xmm0
	jmp	.L352
.L353:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -80[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -80[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L352:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L353
	movsd	xmm0, QWORD PTR -80[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jb	.L390
	mov	DWORD PTR -84[rbp], 0
	jmp	.L356
.L357:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -64[rbp+rax*8]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L356:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L357
	jmp	.L358
.L390:
	mov	DWORD PTR -84[rbp], 0
	jmp	.L359
.L360:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L359:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L360
.L358:
	add	DWORD PTR -88[rbp], 1
.L351:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -88[rbp], eax
	jl	.L361
	mov	DWORD PTR -84[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -80[rbp], xmm0
	jmp	.L362
.L363:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	mov	rax, QWORD PTR -64[rbp+rax*8]
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -80[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -80[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L362:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L363
	mov	rax, QWORD PTR -80[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -80[rbp], rax
	movsd	xmm0, QWORD PTR -80[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jbe	.L391
	mov	DWORD PTR -84[rbp], 0
	jmp	.L366
.L367:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	divsd	xmm0, QWORD PTR -80[rbp]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L366:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L367
	jmp	.L368
.L391:
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR -64[rbp], xmm0
.L368:
	mov	DWORD PTR -84[rbp], 0
	jmp	.L369
.L370:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	QWORD PTR [rax+rdx*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L369:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L370
	mov	DWORD PTR -84[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -80[rbp], xmm0
	jmp	.L371
.L372:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	mov	rax, QWORD PTR [rdx+rax]
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -80[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -80[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L371:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L372
	mov	rax, QWORD PTR -80[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -80[rbp], rax
	movsd	xmm0, QWORD PTR -80[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jbe	.L392
	mov	DWORD PTR -84[rbp], 0
	jmp	.L375
.L376:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm0, QWORD PTR [rdx+rax]
	divsd	xmm0, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L375:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L376
	jmp	.L377
.L392:
	mov	DWORD PTR -84[rbp], 1
	jmp	.L378
.L379:
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 4
	pxor	xmm0, xmm0
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L378:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L379
	mov	rax, QWORD PTR -72[rbp]
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR 40[rax], xmm0
.L377:
	mov	rax, QWORD PTR -72[rbp]
	movsd	xmm0, QWORD PTR -80[rbp]
	movsd	QWORD PTR 32[rax], xmm0
	mov	DWORD PTR -84[rbp], 0
	jmp	.L380
.L381:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	mov	eax, DWORD PTR -84[rbp]
	mov	DWORD PTR [rdx], eax
	add	DWORD PTR -84[rbp], 1
.L380:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -84[rbp], eax
	jl	.L381
	mov	rax, QWORD PTR -72[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	refine_symmetry_element
	test	eax, eax
	jns	.L382
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L383
	lea	rdi, .LC169[rip]
	call	puts@PLT
.L383:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	destroy_symmetry_element
	mov	eax, 0
	jmp	.L385
.L382:
	mov	rax, QWORD PTR -72[rbp]
.L385:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L386
	call	__stack_chk_fail@PLT
.L386:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	init_ultimate_axis, .-init_ultimate_axis
	.section	.rodata
	.align 8
.LC170:
	.string	"Trying c2 axis for the pair (%d,%d) with the support (%g,%g,%g)\n"
	.align 8
.LC171:
	.string	"    Support can't actually define a rotation axis"
	.align 8
.LC172:
	.string	"    c2 is underdefined, but there is a molecular plane"
	.align 8
.LC173:
	.string	"    c2 is underdefined, trying random direction"
	.align 8
.LC174:
	.string	"    refinement failed for the c2 axis"
	.text
	.globl	init_c2_axis
	.type	init_c2_axis, @function
init_c2_axis:
.LFB26:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	DWORD PTR -84[rbp], edi
	mov	DWORD PTR -88[rbp], esi
	mov	QWORD PTR -96[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L394
	mov	rax, QWORD PTR -96[rbp]
	add	rax, 16
	movsd	xmm1, QWORD PTR [rax]
	mov	rax, QWORD PTR -96[rbp]
	add	rax, 8
	movsd	xmm0, QWORD PTR [rax]
	mov	rax, QWORD PTR -96[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	edx, DWORD PTR -88[rbp]
	mov	eax, DWORD PTR -84[rbp]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rcx
	mov	esi, eax
	lea	rdi, .LC170[rip]
	mov	eax, 3
	call	printf@PLT
.L394:
	mov	rax, QWORD PTR StatTotal[rip]
	add	rax, 1
	mov	QWORD PTR StatTotal[rip], rax
	mov	DWORD PTR -68[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -56[rbp], xmm0
	movsd	xmm0, QWORD PTR -56[rbp]
	movsd	QWORD PTR -64[rbp], xmm0
	jmp	.L395
.L396:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -96[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -64[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -64[rbp], xmm0
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -96[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -56[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -56[rbp], xmm0
	add	DWORD PTR -68[rbp], 1
.L395:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L396
	mov	rax, QWORD PTR -64[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -56[rbp], rax
	movsd	xmm0, QWORD PTR -64[rbp]
	subsd	xmm0, QWORD PTR -56[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	jbe	.L439
	mov	rax, QWORD PTR StatEarly[rip]
	add	rax, 1
	mov	QWORD PTR StatEarly[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L399
	lea	rdi, .LC171[rip]
	call	puts@PLT
.L399:
	mov	eax, 0
	jmp	.L433
.L439:
	call	alloc_symmetry_element
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, rotate_atom[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	DWORD PTR 16[rax], 2
	mov	rax, QWORD PTR -40[rbp]
	mov	DWORD PTR 20[rax], 7
	mov	DWORD PTR -68[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -48[rbp], xmm0
	jmp	.L401
.L402:
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm0, QWORD PTR [rdx+rax]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -48[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -48[rbp], xmm0
	add	DWORD PTR -68[rbp], 1
.L401:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L402
	mov	rax, QWORD PTR -48[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	movsd	xmm0, QWORD PTR -48[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jbe	.L440
	mov	DWORD PTR -68[rbp], 0
	jmp	.L405
.L406:
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm0, QWORD PTR [rdx+rax]
	divsd	xmm0, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -68[rbp], 1
.L405:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L406
	jmp	.L407
.L440:
	mov	rax, QWORD PTR -40[rbp]
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR 40[rax], xmm0
	mov	DWORD PTR -68[rbp], 1
	jmp	.L408
.L409:
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 4
	pxor	xmm0, xmm0
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -68[rbp], 1
.L408:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L409
.L407:
	mov	rax, QWORD PTR -40[rbp]
	movsd	xmm0, QWORD PTR -48[rbp]
	movsd	QWORD PTR 32[rax], xmm0
	mov	DWORD PTR -68[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -48[rbp], xmm0
	jmp	.L410
.L411:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	addsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -96[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -48[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -48[rbp], xmm0
	add	DWORD PTR -68[rbp], 1
.L410:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L411
	mov	rax, QWORD PTR -48[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	movsd	xmm0, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, QWORD PTR -48[rbp]
	jb	.L441
	mov	rax, QWORD PTR MolecularPlane[rip]
	test	rax, rax
	je	.L414
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L415
	lea	rdi, .LC172[rip]
	call	puts@PLT
.L415:
	mov	DWORD PTR -68[rbp], 0
	jmp	.L416
.L417:
	mov	rax, QWORD PTR MolecularPlane[rip]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	QWORD PTR [rax+rdx*8], xmm0
	add	DWORD PTR -68[rbp], 1
.L416:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L417
	jmp	.L418
.L414:
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L419
	lea	rdi, .LC173[rip]
	call	puts@PLT
.L419:
	mov	DWORD PTR -68[rbp], 0
	jmp	.L420
.L421:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	add	DWORD PTR -68[rbp], 1
.L420:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L421
	movsd	xmm0, QWORD PTR -16[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm1, xmm0
	movsd	xmm0, QWORD PTR -24[rbp]
	movq	xmm2, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm2
	addsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, xmm1
	jbe	.L442
	mov	rax, QWORD PTR -40[rbp]
	pxor	xmm0, xmm0
	movsd	QWORD PTR 64[rax], xmm0
	movsd	xmm0, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movsd	QWORD PTR 72[rax], xmm0
	movsd	xmm0, QWORD PTR -24[rbp]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	rax, QWORD PTR -40[rbp]
	movsd	QWORD PTR 80[rax], xmm0
	jmp	.L424
.L442:
	movsd	xmm0, QWORD PTR -16[rbp]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	rax, QWORD PTR -40[rbp]
	movsd	QWORD PTR 64[rax], xmm0
	mov	rax, QWORD PTR -40[rbp]
	pxor	xmm0, xmm0
	movsd	QWORD PTR 72[rax], xmm0
	movsd	xmm0, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	movsd	QWORD PTR 80[rax], xmm0
.L424:
	mov	DWORD PTR -68[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -48[rbp], xmm0
	jmp	.L425
.L426:
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm1, QWORD PTR [rax+rdx*8]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -48[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -48[rbp], xmm0
	add	DWORD PTR -68[rbp], 1
.L425:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L426
	mov	rax, QWORD PTR -48[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -68[rbp], 0
	jmp	.L427
.L428:
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	divsd	xmm0, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	QWORD PTR [rax+rdx*8], xmm0
	add	DWORD PTR -68[rbp], 1
.L427:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L428
	jmp	.L418
.L441:
	mov	DWORD PTR -68[rbp], 0
	jmp	.L429
.L430:
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	divsd	xmm0, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR -68[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	QWORD PTR [rax+rdx*8], xmm0
	add	DWORD PTR -68[rbp], 1
.L429:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L430
.L418:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	refine_symmetry_element
	test	eax, eax
	jns	.L431
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L432
	lea	rdi, .LC174[rip]
	call	puts@PLT
.L432:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	destroy_symmetry_element
	mov	eax, 0
	jmp	.L433
.L431:
	mov	rax, QWORD PTR -40[rbp]
.L433:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L434
	call	__stack_chk_fail@PLT
.L434:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	init_c2_axis, .-init_c2_axis
	.section	.rodata
	.align 8
.LC175:
	.string	"    points are not on a sphere"
	.align 8
.LC176:
	.string	"    points can't be rotation-equivalent"
	.align 8
.LC177:
	.string	"    rotation is underdefined by these points"
.LC179:
	.string	"    rotation angle is %f\n"
	.align 8
.LC180:
	.string	"    atoms are too close to a straight line"
	.align 8
.LC182:
	.string	"    rotation axis order (%d) is not from 3 to %d\n"
	.align 8
.LC183:
	.string	"    axis origin is at (%g,%g,%g)\n"
	.align 8
.LC184:
	.string	"    axis is in the direction (%g,%g,%g)\n"
	.text
	.globl	init_axis_parameters
	.type	init_axis_parameters, @function
init_axis_parameters:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	QWORD PTR -104[rbp], rdi
	mov	QWORD PTR -112[rbp], rsi
	mov	QWORD PTR -120[rbp], rdx
	pxor	xmm0, xmm0
	movsd	QWORD PTR -32[rbp], xmm0
	movsd	xmm0, QWORD PTR -32[rbp]
	movsd	QWORD PTR -40[rbp], xmm0
	movsd	xmm0, QWORD PTR -40[rbp]
	movsd	QWORD PTR -48[rbp], xmm0
	movsd	xmm0, QWORD PTR -48[rbp]
	movsd	QWORD PTR -56[rbp], xmm0
	movsd	xmm0, QWORD PTR -56[rbp]
	movsd	QWORD PTR -64[rbp], xmm0
	movsd	xmm0, QWORD PTR -64[rbp]
	movsd	QWORD PTR -72[rbp], xmm0
	mov	DWORD PTR -84[rbp], 0
	jmp	.L444
.L445:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -72[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -72[rbp], xmm0
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -64[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -64[rbp], xmm0
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -56[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -56[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L444:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L445
	mov	rax, QWORD PTR -72[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -56[rbp], rax
	movsd	xmm0, QWORD PTR -72[rbp]
	subsd	xmm0, QWORD PTR -64[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L446
	movsd	xmm0, QWORD PTR -72[rbp]
	subsd	xmm0, QWORD PTR -56[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L446
	movsd	xmm0, QWORD PTR -64[rbp]
	subsd	xmm0, QWORD PTR -56[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	jbe	.L500
.L446:
	mov	rax, QWORD PTR StatEarly[rip]
	add	rax, 1
	mov	QWORD PTR StatEarly[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L449
	lea	rdi, .LC175[rip]
	call	puts@PLT
.L449:
	mov	eax, 0
	jmp	.L450
.L500:
	mov	DWORD PTR -84[rbp], 0
	jmp	.L451
.L452:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movsd	xmm2, QWORD PTR [rax]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movsd	xmm2, QWORD PTR [rax]
	subsd	xmm0, xmm2
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -48[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -48[rbp], xmm0
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movsd	xmm2, QWORD PTR [rax]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movsd	xmm2, QWORD PTR [rax]
	subsd	xmm0, xmm2
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -32[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -32[rbp], xmm0
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movsd	xmm2, QWORD PTR [rax]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, rdx
	movsd	xmm2, QWORD PTR [rax]
	subsd	xmm0, xmm2
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -40[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -40[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L451:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L452
	mov	rax, QWORD PTR -48[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -40[rbp], rax
	movsd	xmm0, QWORD PTR -48[rbp]
	subsd	xmm0, QWORD PTR -40[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	jbe	.L501
	mov	rax, QWORD PTR StatEarly[rip]
	add	rax, 1
	mov	QWORD PTR StatEarly[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L455
	lea	rdi, .LC176[rip]
	call	puts@PLT
.L455:
	mov	eax, 0
	jmp	.L450
.L501:
	movsd	xmm0, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, QWORD PTR -48[rbp]
	jnb	.L456
	movsd	xmm0, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, QWORD PTR -40[rbp]
	jnb	.L456
	movsd	xmm0, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, QWORD PTR -32[rbp]
	jb	.L502
.L456:
	mov	rax, QWORD PTR StatEarly[rip]
	add	rax, 1
	mov	QWORD PTR StatEarly[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L459
	lea	rdi, .LC177[rip]
	call	puts@PLT
.L459:
	mov	eax, 0
	jmp	.L450
.L502:
	movsd	xmm0, QWORD PTR -48[rbp]
	addsd	xmm0, QWORD PTR -40[rbp]
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	movsd	QWORD PTR -48[rbp], xmm0
	movsd	xmm0, QWORD PTR -48[rbp]
	movapd	xmm1, xmm0
	addsd	xmm1, xmm0
	movsd	xmm0, QWORD PTR -32[rbp]
	divsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	asin@PLT
	movapd	xmm1, xmm0
	addsd	xmm1, xmm0
	movsd	xmm0, QWORD PTR .LC178[rip]
	subsd	xmm0, xmm1
	movsd	QWORD PTR -16[rbp], xmm0
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L460
	mov	rax, QWORD PTR -16[rbp]
	movq	xmm0, rax
	lea	rdi, .LC179[rip]
	mov	eax, 1
	call	printf@PLT
.L460:
	movsd	xmm0, QWORD PTR -16[rbp]
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm1, xmm0
	mov	eax, DWORD PTR MaxAxisOrder[rip]
	add	eax, 1
	pxor	xmm2, xmm2
	cvtsi2sd	xmm2, eax
	movsd	xmm0, QWORD PTR .LC178[rip]
	divsd	xmm0, xmm2
	comisd	xmm0, xmm1
	jb	.L503
	mov	rax, QWORD PTR StatEarly[rip]
	add	rax, 1
	mov	QWORD PTR StatEarly[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L463
	lea	rdi, .LC180[rip]
	call	puts@PLT
.L463:
	mov	eax, 0
	jmp	.L450
.L503:
	movsd	xmm0, QWORD PTR .LC167[rip]
	movapd	xmm1, xmm0
	divsd	xmm1, QWORD PTR -16[rbp]
	movsd	xmm0, QWORD PTR .LC181[rip]
	addsd	xmm1, xmm0
	movq	rax, xmm1
	movq	xmm0, rax
	call	floor@PLT
	cvttsd2si	eax, xmm0
	mov	DWORD PTR -76[rbp], eax
	cmp	DWORD PTR -76[rbp], 2
	jle	.L464
	mov	eax, DWORD PTR MaxAxisOrder[rip]
	cmp	DWORD PTR -76[rbp], eax
	jle	.L465
.L464:
	mov	rax, QWORD PTR StatEarly[rip]
	add	rax, 1
	mov	QWORD PTR StatEarly[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L466
	mov	edx, DWORD PTR MaxAxisOrder[rip]
	mov	eax, DWORD PTR -76[rbp]
	mov	esi, eax
	lea	rdi, .LC182[rip]
	mov	eax, 0
	call	printf@PLT
.L466:
	mov	eax, 0
	jmp	.L450
.L465:
	call	alloc_symmetry_element
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -76[rbp]
	mov	DWORD PTR 16[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR 20[rax], 7
	mov	DWORD PTR -84[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -24[rbp], xmm0
	jmp	.L467
.L468:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm0, QWORD PTR [rdx+rax]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -24[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -24[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L467:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L468
	mov	rax, QWORD PTR -24[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -24[rbp], rax
	movsd	xmm0, QWORD PTR -24[rbp]
	pxor	xmm1, xmm1
	comisd	xmm0, xmm1
	jbe	.L504
	mov	DWORD PTR -84[rbp], 0
	jmp	.L471
.L472:
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm0, QWORD PTR [rdx+rax]
	divsd	xmm0, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L471:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L472
	jmp	.L473
.L504:
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR .LC162[rip]
	movsd	QWORD PTR 40[rax], xmm0
	mov	DWORD PTR -84[rbp], 1
	jmp	.L474
.L475:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 4
	pxor	xmm0, xmm0
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L474:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L475
.L473:
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR -24[rbp]
	movsd	QWORD PTR 32[rax], xmm0
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 8
	movsd	xmm0, QWORD PTR [rax]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 8
	movsd	xmm2, QWORD PTR [rax]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	mov	rax, QWORD PTR -120[rbp]
	add	rax, 16
	movsd	xmm0, QWORD PTR [rax]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 16
	movsd	xmm2, QWORD PTR [rax]
	subsd	xmm0, xmm2
	mulsd	xmm0, xmm1
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 16
	movsd	xmm1, QWORD PTR [rax]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 16
	movsd	xmm3, QWORD PTR [rax]
	movapd	xmm2, xmm1
	subsd	xmm2, xmm3
	mov	rax, QWORD PTR -120[rbp]
	add	rax, 8
	movsd	xmm1, QWORD PTR [rax]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 8
	movsd	xmm3, QWORD PTR [rax]
	subsd	xmm1, xmm3
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	mov	rax, QWORD PTR -8[rbp]
	movsd	QWORD PTR 64[rax], xmm0
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 16
	movsd	xmm0, QWORD PTR [rax]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 16
	movsd	xmm2, QWORD PTR [rax]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	mov	rax, QWORD PTR -120[rbp]
	movsd	xmm0, QWORD PTR [rax]
	mov	rax, QWORD PTR -112[rbp]
	movsd	xmm2, QWORD PTR [rax]
	subsd	xmm0, xmm2
	mulsd	xmm0, xmm1
	mov	rax, QWORD PTR -112[rbp]
	movsd	xmm1, QWORD PTR [rax]
	mov	rax, QWORD PTR -104[rbp]
	movsd	xmm3, QWORD PTR [rax]
	movapd	xmm2, xmm1
	subsd	xmm2, xmm3
	mov	rax, QWORD PTR -120[rbp]
	add	rax, 16
	movsd	xmm1, QWORD PTR [rax]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 16
	movsd	xmm3, QWORD PTR [rax]
	subsd	xmm1, xmm3
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	mov	rax, QWORD PTR -8[rbp]
	movsd	QWORD PTR 72[rax], xmm0
	mov	rax, QWORD PTR -112[rbp]
	movsd	xmm0, QWORD PTR [rax]
	mov	rax, QWORD PTR -104[rbp]
	movsd	xmm2, QWORD PTR [rax]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	mov	rax, QWORD PTR -120[rbp]
	add	rax, 8
	movsd	xmm0, QWORD PTR [rax]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 8
	movsd	xmm2, QWORD PTR [rax]
	subsd	xmm0, xmm2
	mulsd	xmm0, xmm1
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 8
	movsd	xmm1, QWORD PTR [rax]
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 8
	movsd	xmm3, QWORD PTR [rax]
	movapd	xmm2, xmm1
	subsd	xmm2, xmm3
	mov	rax, QWORD PTR -120[rbp]
	movsd	xmm1, QWORD PTR [rax]
	mov	rax, QWORD PTR -112[rbp]
	movsd	xmm3, QWORD PTR [rax]
	subsd	xmm1, xmm3
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	mov	rax, QWORD PTR -8[rbp]
	movsd	QWORD PTR 80[rax], xmm0
	mov	DWORD PTR -80[rbp], 0
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 64[rax]
	pxor	xmm0, xmm0
	comisd	xmm0, xmm1
	jb	.L476
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 64[rax]
	pxor	xmm0, xmm0
	comisd	xmm0, xmm1
	jbe	.L505
	mov	DWORD PTR -80[rbp], 1
	jmp	.L476
.L505:
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 72[rax]
	pxor	xmm0, xmm0
	comisd	xmm0, xmm1
	jb	.L476
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 72[rax]
	pxor	xmm0, xmm0
	comisd	xmm0, xmm1
	jbe	.L506
	mov	DWORD PTR -80[rbp], 1
	jmp	.L476
.L506:
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 80[rax]
	pxor	xmm0, xmm0
	comisd	xmm0, xmm1
	jbe	.L476
	mov	DWORD PTR -80[rbp], 1
.L476:
	cmp	DWORD PTR -80[rbp], 0
	je	.L484
	mov	DWORD PTR -84[rbp], 0
	jmp	.L485
.L486:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	movq	xmm1, QWORD PTR .LC130[rip]
	xorpd	xmm0, xmm1
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	QWORD PTR [rax+rdx*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L485:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L486
.L484:
	mov	DWORD PTR -84[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -24[rbp], xmm0
	jmp	.L487
.L488:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm1, QWORD PTR [rax+rdx*8]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -24[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -24[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L487:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L488
	mov	rax, QWORD PTR -24[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -24[rbp], rax
	mov	DWORD PTR -84[rbp], 0
	jmp	.L489
.L490:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	divsd	xmm0, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -84[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	QWORD PTR [rax+rdx*8], xmm0
	add	DWORD PTR -84[rbp], 1
.L489:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L490
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, 1
	jle	.L491
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 56[rax]
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR 32[rax]
	movapd	xmm2, xmm1
	mulsd	xmm2, xmm0
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 48[rax]
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR 32[rax]
	movapd	xmm3, xmm1
	mulsd	xmm3, xmm0
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 40[rax]
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR 32[rax]
	mulsd	xmm1, xmm0
	movq	rax, xmm1
	movapd	xmm1, xmm3
	movq	xmm0, rax
	lea	rdi, .LC183[rip]
	mov	eax, 3
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 80[rax]
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR 72[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 64[rax]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC184[rip]
	mov	eax, 3
	call	printf@PLT
.L491:
	mov	rax, QWORD PTR -8[rbp]
.L450:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	init_axis_parameters, .-init_axis_parameters
	.section	.rodata
	.align 8
.LC185:
	.string	"Trying cn axis for the triplet (%d,%d,%d)\n"
	.align 8
.LC186:
	.string	"    no coherrent axis is defined by the points"
	.align 8
.LC187:
	.string	"    refinement failed for the c%d axis\n"
	.text
	.globl	init_higher_axis
	.type	init_higher_axis, @function
init_higher_axis:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	DWORD PTR -116[rbp], edi
	mov	DWORD PTR -120[rbp], esi
	mov	DWORD PTR -124[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L508
	mov	ecx, DWORD PTR -124[rbp]
	mov	edx, DWORD PTR -120[rbp]
	mov	eax, DWORD PTR -116[rbp]
	mov	esi, eax
	lea	rdi, .LC185[rip]
	mov	eax, 0
	call	printf@PLT
.L508:
	mov	rax, QWORD PTR StatTotal[rip]
	add	rax, 1
	mov	QWORD PTR StatTotal[rip], rax
	mov	DWORD PTR -108[rbp], 0
	jmp	.L509
.L510:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -116[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	movsd	QWORD PTR -96[rbp+rax*8], xmm0
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -120[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -124[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	add	DWORD PTR -108[rbp], 1
.L509:
	cmp	DWORD PTR -108[rbp], 2
	jle	.L510
	lea	rdx, -32[rbp]
	lea	rcx, -64[rbp]
	lea	rax, -96[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	init_axis_parameters
	mov	QWORD PTR -104[rbp], rax
	cmp	QWORD PTR -104[rbp], 0
	jne	.L511
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L512
	lea	rdi, .LC186[rip]
	call	puts@PLT
.L512:
	mov	eax, 0
	jmp	.L516
.L511:
	mov	rax, QWORD PTR -104[rbp]
	lea	rdx, rotate_atom[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -104[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	refine_symmetry_element
	test	eax, eax
	jns	.L514
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L515
	mov	rax, QWORD PTR -104[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	esi, eax
	lea	rdi, .LC187[rip]
	mov	eax, 0
	call	printf@PLT
.L515:
	mov	rax, QWORD PTR -104[rbp]
	mov	rdi, rax
	call	destroy_symmetry_element
	mov	eax, 0
	jmp	.L516
.L514:
	mov	rax, QWORD PTR -104[rbp]
.L516:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L517
	call	__stack_chk_fail@PLT
.L517:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	init_higher_axis, .-init_higher_axis
	.globl	rotate_reflect_atom
	.type	rotate_reflect_atom, @function
rotate_reflect_atom:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 240
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -224[rbp], rsi
	mov	QWORD PTR -232[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR 16[rax]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	movsd	xmm0, QWORD PTR .LC167[rip]
	divsd	xmm0, xmm1
	movsd	QWORD PTR -184[rbp], xmm0
	mov	rax, QWORD PTR -184[rbp]
	movq	xmm0, rax
	call	sin@PLT
	movq	rax, xmm0
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -184[rbp]
	movq	xmm0, rax
	call	cos@PLT
	movq	rax, xmm0
	mov	QWORD PTR -168[rbp], rax
	mov	DWORD PTR -196[rbp], 0
	jmp	.L519
.L520:
	mov	rax, QWORD PTR -224[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm2, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm1, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -160[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L519:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L520
	mov	DWORD PTR -196[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -192[rbp], xmm0
	jmp	.L521
.L522:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -160[rbp+rax*8]
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -192[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -192[rbp], xmm0
	add	DWORD PTR -196[rbp], 1
.L521:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L522
	mov	DWORD PTR -196[rbp], 0
	jmp	.L523
.L524:
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 8
	movsd	xmm0, QWORD PTR [rax+rdx*8]
	mulsd	xmm0, QWORD PTR -192[rbp]
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -96[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L523:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L524
	mov	DWORD PTR -196[rbp], 0
	jmp	.L525
.L526:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -160[rbp+rax*8]
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -96[rbp+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L525:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L526
	movsd	xmm1, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm0, QWORD PTR 80[rax]
	mulsd	xmm0, xmm1
	movsd	xmm2, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm1, QWORD PTR 72[rax]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	movsd	QWORD PTR -32[rbp], xmm0
	movsd	xmm1, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm0, QWORD PTR 64[rax]
	mulsd	xmm0, xmm1
	movsd	xmm2, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm1, QWORD PTR 80[rax]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	movsd	QWORD PTR -24[rbp], xmm0
	movsd	xmm1, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm0, QWORD PTR 72[rax]
	mulsd	xmm0, xmm1
	movsd	xmm2, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm1, QWORD PTR 64[rax]
	mulsd	xmm1, xmm2
	subsd	xmm0, xmm1
	movsd	QWORD PTR -16[rbp], xmm0
	mov	DWORD PTR -196[rbp], 0
	jmp	.L527
.L528:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	mulsd	xmm0, QWORD PTR -168[rbp]
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm2, QWORD PTR -96[rbp+rax*8]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm0, QWORD PTR -176[rbp]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L527:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L528
	mov	DWORD PTR -196[rbp], 0
	jmp	.L529
.L530:
	mov	eax, DWORD PTR -196[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -128[rbp+rax*8]
	mov	rax, QWORD PTR -216[rbp]
	movsd	xmm2, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -216[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	add	rdx, 4
	movsd	xmm0, QWORD PTR 8[rax+rdx*8]
	mulsd	xmm0, xmm2
	addsd	xmm0, xmm1
	mov	rax, QWORD PTR -232[rbp]
	mov	edx, DWORD PTR -196[rbp]
	movsx	rdx, edx
	movsd	QWORD PTR 8[rax+rdx*8], xmm0
	add	DWORD PTR -196[rbp], 1
.L529:
	cmp	DWORD PTR -196[rbp], 2
	jle	.L530
	mov	rax, QWORD PTR -224[rbp]
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR -232[rbp]
	mov	DWORD PTR [rax], edx
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L531
	call	__stack_chk_fail@PLT
.L531:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	rotate_reflect_atom, .-rotate_reflect_atom
	.section	.rodata
	.align 8
.LC188:
	.string	"Trying sn axis for the triplet (%d,%d,%d)\n"
	.align 8
.LC189:
	.string	"    atoms can not define improper axis of the order more than 2"
	.align 8
.LC190:
	.string	"    no coherrent improper axis is defined by the points"
	.align 8
.LC191:
	.string	"    refinement failed for the s%d axis\n"
	.text
	.globl	init_improper_axis
	.type	init_improper_axis, @function
init_improper_axis:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 176
	mov	DWORD PTR -164[rbp], edi
	mov	DWORD PTR -168[rbp], esi
	mov	DWORD PTR -172[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L533
	mov	ecx, DWORD PTR -172[rbp]
	mov	edx, DWORD PTR -168[rbp]
	mov	eax, DWORD PTR -164[rbp]
	mov	esi, eax
	lea	rdi, .LC188[rip]
	mov	eax, 0
	call	printf@PLT
.L533:
	mov	rax, QWORD PTR StatTotal[rip]
	add	rax, 1
	mov	QWORD PTR StatTotal[rip], rax
	mov	DWORD PTR -148[rbp], 0
	jmp	.L534
.L535:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -164[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	QWORD PTR -128[rbp+rax*8], xmm0
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -168[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	QWORD PTR -96[rbp+rax*8], xmm0
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -172[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	QWORD PTR -64[rbp+rax*8], xmm0
	add	DWORD PTR -148[rbp], 1
.L534:
	cmp	DWORD PTR -148[rbp], 2
	jle	.L535
	mov	DWORD PTR -148[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -144[rbp], xmm0
	jmp	.L536
.L537:
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -128[rbp+rax*8]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -64[rbp+rax*8]
	addsd	xmm1, xmm0
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -96[rbp+rax*8]
	addsd	xmm0, xmm0
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -144[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -144[rbp], xmm0
	add	DWORD PTR -148[rbp], 1
.L536:
	cmp	DWORD PTR -148[rbp], 2
	jle	.L537
	mov	rax, QWORD PTR -144[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -144[rbp], rax
	movsd	xmm0, QWORD PTR ToleranceSame[rip]
	comisd	xmm0, QWORD PTR -144[rbp]
	jb	.L555
	mov	rax, QWORD PTR StatEarly[rip]
	add	rax, 1
	mov	QWORD PTR StatEarly[rip], rax
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L540
	lea	rdi, .LC189[rip]
	call	puts@PLT
.L540:
	mov	eax, 0
	jmp	.L552
.L555:
	mov	DWORD PTR -148[rbp], 0
	jmp	.L542
.L543:
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	divsd	xmm0, QWORD PTR -144[rbp]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	add	DWORD PTR -148[rbp], 1
.L542:
	cmp	DWORD PTR -148[rbp], 2
	jle	.L543
	mov	DWORD PTR -148[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -144[rbp], xmm0
	jmp	.L544
.L545:
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -96[rbp+rax*8]
	mulsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR -144[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -144[rbp], xmm0
	add	DWORD PTR -148[rbp], 1
.L544:
	cmp	DWORD PTR -148[rbp], 2
	jle	.L545
	mov	DWORD PTR -148[rbp], 0
	jmp	.L546
.L547:
	movsd	xmm0, QWORD PTR -144[rbp]
	movapd	xmm1, xmm0
	addsd	xmm1, xmm0
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	mulsd	xmm0, xmm1
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -96[rbp+rax*8]
	subsd	xmm0, xmm1
	mov	eax, DWORD PTR -148[rbp]
	cdqe
	movsd	QWORD PTR -96[rbp+rax*8], xmm0
	add	DWORD PTR -148[rbp], 1
.L546:
	cmp	DWORD PTR -148[rbp], 2
	jle	.L547
	lea	rdx, -64[rbp]
	lea	rcx, -96[rbp]
	lea	rax, -128[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	init_axis_parameters
	mov	QWORD PTR -136[rbp], rax
	cmp	QWORD PTR -136[rbp], 0
	jne	.L548
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L549
	lea	rdi, .LC190[rip]
	call	puts@PLT
.L549:
	mov	eax, 0
	jmp	.L552
.L548:
	mov	rax, QWORD PTR -136[rbp]
	lea	rdx, rotate_reflect_atom[rip]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -136[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	refine_symmetry_element
	test	eax, eax
	jns	.L550
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L551
	mov	rax, QWORD PTR -136[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	esi, eax
	lea	rdi, .LC191[rip]
	mov	eax, 0
	call	printf@PLT
.L551:
	mov	rax, QWORD PTR -136[rbp]
	mov	rdi, rax
	call	destroy_symmetry_element
	mov	eax, 0
	jmp	.L552
.L550:
	mov	rax, QWORD PTR -136[rbp]
.L552:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L553
	call	__stack_chk_fail@PLT
.L553:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	init_improper_axis, .-init_improper_axis
	.section	.rodata
	.align 8
.LC192:
	.string	"Center of something is at %15.10f, %15.10f, %15.10f\n"
	.align 8
.LC193:
	.string	"Unable to allocate array for the distances\n"
	.text
	.globl	find_center_of_something
	.type	find_center_of_something, @function
find_center_of_something:
.LFB31:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -44[rbp], 0
	jmp	.L557
.L558:
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	pxor	xmm0, xmm0
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	add	DWORD PTR -44[rbp], 1
.L557:
	cmp	DWORD PTR -44[rbp], 2
	jle	.L558
	mov	DWORD PTR -48[rbp], 0
	jmp	.L559
.L562:
	mov	DWORD PTR -44[rbp], 0
	jmp	.L560
.L561:
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -32[rbp+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	addsd	xmm0, xmm1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	movsd	QWORD PTR -32[rbp+rax*8], xmm0
	add	DWORD PTR -44[rbp], 1
.L560:
	cmp	DWORD PTR -44[rbp], 2
	jle	.L561
	add	DWORD PTR -48[rbp], 1
.L559:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -48[rbp], eax
	jl	.L562
	mov	DWORD PTR -44[rbp], 0
	jmp	.L563
.L564:
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR AtomsCount[rip]
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, eax
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	QWORD PTR [rdx+rax], xmm0
	add	DWORD PTR -44[rbp], 1
.L563:
	cmp	DWORD PTR -44[rbp], 2
	jle	.L564
	mov	eax, DWORD PTR verbose[rip]
	test	eax, eax
	jle	.L565
	movsd	xmm1, QWORD PTR CenterOfSomething[rip+16]
	movsd	xmm0, QWORD PTR CenterOfSomething[rip+8]
	mov	rax, QWORD PTR CenterOfSomething[rip]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC192[rip]
	mov	eax, 3
	call	printf@PLT
.L565:
	mov	eax, DWORD PTR AtomsCount[rip]
	cdqe
	mov	esi, 8
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR DistanceFromCenter[rip], rax
	mov	rax, QWORD PTR DistanceFromCenter[rip]
	test	rax, rax
	jne	.L566
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 43
	mov	esi, 1
	lea	rdi, .LC193[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L566:
	mov	DWORD PTR -48[rbp], 0
	jmp	.L567
.L570:
	mov	DWORD PTR -44[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -40[rbp], xmm0
	jmp	.L568
.L569:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -40[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -40[rbp], xmm0
	add	DWORD PTR -44[rbp], 1
.L568:
	cmp	DWORD PTR -44[rbp], 2
	jle	.L569
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm0, QWORD PTR -40[rbp]
	movsd	QWORD PTR [rax], xmm0
	add	DWORD PTR -48[rbp], 1
.L567:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -48[rbp], eax
	jl	.L570
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L571
	call	__stack_chk_fail@PLT
.L571:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	find_center_of_something, .-find_center_of_something
	.section	.rodata
.LC194:
	.string	"Out of memory in find_planes"
	.text
	.globl	find_planes
	.type	find_planes, @function
find_planes:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	call	init_ultimate_plane
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L573
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR MolecularPlane[rip], rax
	mov	eax, DWORD PTR PlanesCount[rip]
	add	eax, 1
	mov	DWORD PTR PlanesCount[rip], eax
	mov	eax, DWORD PTR PlanesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR Planes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR Planes[rip], rax
	mov	rax, QWORD PTR Planes[rip]
	test	rax, rax
	jne	.L574
	lea	rdi, .LC194[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L574:
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR PlanesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rdx], rax
.L573:
	mov	DWORD PTR -16[rbp], 1
	jmp	.L575
.L581:
	mov	DWORD PTR -12[rbp], 0
	jmp	.L576
.L580:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rcx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 5
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L582
	mov	edx, DWORD PTR -12[rbp]
	mov	eax, DWORD PTR -16[rbp]
	mov	esi, edx
	mov	edi, eax
	call	init_mirror_plane
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L578
	mov	eax, DWORD PTR PlanesCount[rip]
	add	eax, 1
	mov	DWORD PTR PlanesCount[rip], eax
	mov	eax, DWORD PTR PlanesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR Planes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR Planes[rip], rax
	mov	rax, QWORD PTR Planes[rip]
	test	rax, rax
	jne	.L579
	lea	rdi, .LC194[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L579:
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR PlanesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rdx], rax
	jmp	.L578
.L582:
	nop
.L578:
	add	DWORD PTR -12[rbp], 1
.L576:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -16[rbp]
	jl	.L580
	add	DWORD PTR -16[rbp], 1
.L575:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -16[rbp], eax
	jl	.L581
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	find_planes, .-find_planes
	.globl	find_inversion_centers
	.type	find_inversion_centers, @function
find_inversion_centers:
.LFB33:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	call	init_inversion_center
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L585
	mov	esi, 8
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR InversionCenters[rip], rax
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	DWORD PTR InversionCentersCount[rip], 1
.L585:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	find_inversion_centers, .-find_inversion_centers
	.section	.rodata
	.align 8
.LC195:
	.string	"Out of memory in find_infinity_axes()"
	.text
	.globl	find_infinity_axis
	.type	find_infinity_axis, @function
find_infinity_axis:
.LFB34:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	call	init_ultimate_axis
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L589
	mov	eax, DWORD PTR NormalAxesCount[rip]
	add	eax, 1
	mov	DWORD PTR NormalAxesCount[rip], eax
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR NormalAxes[rip], rax
	mov	rax, QWORD PTR NormalAxes[rip]
	test	rax, rax
	jne	.L588
	lea	rdi, .LC195[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L588:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rdx], rax
.L589:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	find_infinity_axis, .-find_infinity_axis
	.section	.rodata
	.align 8
.LC196:
	.string	"Out of memory in find_c2_axes()\n"
.LC198:
	.string	"Out of memory in find_c2_axes"
	.text
	.globl	find_c2_axes
	.type	find_c2_axes, @function
find_c2_axes:
.LFB35:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 88
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR AtomsCount[rip]
	cdqe
	mov	esi, 8
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR -64[rbp], rax
	cmp	QWORD PTR -64[rbp], 0
	jne	.L591
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 32
	mov	esi, 1
	lea	rdi, .LC196[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L591:
	mov	DWORD PTR -92[rbp], 1
	jmp	.L592
.L625:
	mov	DWORD PTR -88[rbp], 0
	jmp	.L593
.L624:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rcx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 5
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L629
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L630
	mov	DWORD PTR -84[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -72[rbp], xmm0
	jmp	.L598
.L599:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -92[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -88[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	addsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	QWORD PTR -48[rbp+rax*8], xmm0
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movsd	xmm0, QWORD PTR -48[rbp+rax*8]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, CenterOfSomething[rip]
	movsd	xmm1, QWORD PTR [rdx+rax]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -72[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -72[rbp], xmm0
	add	DWORD PTR -84[rbp], 1
.L598:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L599
	mov	rax, QWORD PTR -72[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR -72[rbp], rax
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	movsd	xmm0, QWORD PTR .LC197[rip]
	mulsd	xmm1, xmm0
	movsd	xmm0, QWORD PTR -72[rbp]
	comisd	xmm0, xmm1
	jbe	.L628
	mov	ecx, DWORD PTR -88[rbp]
	mov	eax, DWORD PTR -92[rbp]
	lea	rdx, CenterOfSomething[rip]
	mov	esi, ecx
	mov	edi, eax
	call	init_c2_axis
	mov	QWORD PTR -56[rbp], rax
	cmp	QWORD PTR -56[rbp], 0
	je	.L631
	mov	eax, DWORD PTR NormalAxesCount[rip]
	add	eax, 1
	mov	DWORD PTR NormalAxesCount[rip], eax
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR NormalAxes[rip], rax
	mov	rax, QWORD PTR NormalAxes[rip]
	test	rax, rax
	jne	.L603
	lea	rdi, .LC198[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L603:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR [rdx], rax
	jmp	.L631
.L628:
	mov	DWORD PTR -84[rbp], 0
	jmp	.L604
.L607:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	lea	rdx, 8[rax]
	mov	ecx, DWORD PTR -88[rbp]
	mov	eax, DWORD PTR -92[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	init_c2_axis
	mov	QWORD PTR -56[rbp], rax
	cmp	QWORD PTR -56[rbp], 0
	je	.L605
	mov	eax, DWORD PTR NormalAxesCount[rip]
	add	eax, 1
	mov	DWORD PTR NormalAxesCount[rip], eax
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR NormalAxes[rip], rax
	mov	rax, QWORD PTR NormalAxes[rip]
	test	rax, rax
	jne	.L606
	lea	rdi, .LC198[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L606:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR [rdx], rax
.L605:
	add	DWORD PTR -84[rbp], 1
.L604:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -84[rbp], eax
	jl	.L607
	mov	DWORD PTR -84[rbp], 0
	jmp	.L608
.L611:
	mov	DWORD PTR -80[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -72[rbp], xmm0
	jmp	.L609
.L610:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	movsd	xmm1, QWORD PTR -48[rbp+rax*8]
	subsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	call	pow2
	movsd	xmm1, QWORD PTR -72[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -72[rbp], xmm0
	add	DWORD PTR -80[rbp], 1
.L609:
	cmp	DWORD PTR -80[rbp], 2
	jle	.L610
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	lea	rbx, [rdx+rax]
	mov	rax, QWORD PTR -72[rbp]
	movq	xmm0, rax
	call	sqrt@PLT
	movq	rax, xmm0
	mov	QWORD PTR [rbx], rax
	add	DWORD PTR -84[rbp], 1
.L608:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -84[rbp], eax
	jl	.L611
	mov	DWORD PTR -84[rbp], 0
	jmp	.L612
.L623:
	mov	DWORD PTR -80[rbp], 0
	jmp	.L613
.L622:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rcx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	sal	rax, 5
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L632
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L633
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L633
	mov	DWORD PTR -76[rbp], 0
	jmp	.L619
.L620:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	movsd	xmm1, QWORD PTR 8[rdx+rax*8]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -80[rbp]
	cdqe
	sal	rax, 5
	add	rdx, rax
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	movsd	xmm0, QWORD PTR 8[rdx+rax*8]
	addsd	xmm0, xmm1
	movsd	xmm1, QWORD PTR .LC140[rip]
	divsd	xmm0, xmm1
	mov	eax, DWORD PTR -76[rbp]
	cdqe
	movsd	QWORD PTR -48[rbp+rax*8], xmm0
	add	DWORD PTR -76[rbp], 1
.L619:
	cmp	DWORD PTR -76[rbp], 2
	jle	.L620
	lea	rdx, -48[rbp]
	mov	ecx, DWORD PTR -88[rbp]
	mov	eax, DWORD PTR -92[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	init_c2_axis
	mov	QWORD PTR -56[rbp], rax
	cmp	QWORD PTR -56[rbp], 0
	je	.L615
	mov	eax, DWORD PTR NormalAxesCount[rip]
	add	eax, 1
	mov	DWORD PTR NormalAxesCount[rip], eax
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR NormalAxes[rip], rax
	mov	rax, QWORD PTR NormalAxes[rip]
	test	rax, rax
	jne	.L621
	lea	rdi, .LC198[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L621:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR [rdx], rax
	jmp	.L615
.L632:
	nop
	jmp	.L615
.L633:
	nop
.L615:
	add	DWORD PTR -80[rbp], 1
.L613:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -80[rbp], eax
	jl	.L622
	add	DWORD PTR -84[rbp], 1
.L612:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -84[rbp], eax
	jl	.L623
	jmp	.L595
.L629:
	nop
	jmp	.L595
.L630:
	nop
	jmp	.L595
.L631:
	nop
.L595:
	add	DWORD PTR -88[rbp], 1
.L593:
	mov	eax, DWORD PTR -88[rbp]
	cmp	eax, DWORD PTR -92[rbp]
	jl	.L624
	add	DWORD PTR -92[rbp], 1
.L592:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -92[rbp], eax
	jl	.L625
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L626
	call	__stack_chk_fail@PLT
.L626:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	find_c2_axes, .-find_c2_axes
	.section	.rodata
	.align 8
.LC199:
	.string	"Out of memory in find_higher_axes"
	.text
	.globl	find_higher_axes
	.type	find_higher_axes, @function
find_higher_axes:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], 0
	jmp	.L635
.L650:
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 1
	mov	DWORD PTR -16[rbp], eax
	jmp	.L636
.L649:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rcx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 5
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L651
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L652
	mov	DWORD PTR -12[rbp], 0
	jmp	.L641
.L648:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	rcx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 5
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	cmp	edx, eax
	jne	.L653
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L654
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm0, QWORD PTR [rax]
	mov	rdx, QWORD PTR DistanceFromCenter[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	movsd	xmm1, QWORD PTR [rax]
	subsd	xmm0, xmm1
	movq	xmm1, QWORD PTR .LC135[rip]
	andpd	xmm0, xmm1
	movsd	xmm1, QWORD PTR TolerancePrimary[rip]
	comisd	xmm0, xmm1
	ja	.L654
	mov	edx, DWORD PTR -12[rbp]
	mov	ecx, DWORD PTR -16[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	init_higher_axis
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L643
	mov	eax, DWORD PTR NormalAxesCount[rip]
	add	eax, 1
	mov	DWORD PTR NormalAxesCount[rip], eax
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR NormalAxes[rip], rax
	mov	rax, QWORD PTR NormalAxes[rip]
	test	rax, rax
	jne	.L647
	lea	rdi, .LC199[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L647:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rdx], rax
	jmp	.L643
.L653:
	nop
	jmp	.L643
.L654:
	nop
.L643:
	add	DWORD PTR -12[rbp], 1
.L641:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L648
	jmp	.L638
.L651:
	nop
	jmp	.L638
.L652:
	nop
.L638:
	add	DWORD PTR -16[rbp], 1
.L636:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -16[rbp], eax
	jl	.L649
	add	DWORD PTR -20[rbp], 1
.L635:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L650
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	find_higher_axes, .-find_higher_axes
	.globl	find_improper_axes
	.type	find_improper_axes, @function
find_improper_axes:
.LFB37:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], 0
	jmp	.L656
.L663:
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 1
	mov	DWORD PTR -16[rbp], eax
	jmp	.L657
.L662:
	mov	DWORD PTR -12[rbp], 0
	jmp	.L658
.L661:
	mov	edx, DWORD PTR -12[rbp]
	mov	ecx, DWORD PTR -16[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	init_improper_axis
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L659
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	add	eax, 1
	mov	DWORD PTR ImproperAxesCount[rip], eax
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR ImproperAxes[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR ImproperAxes[rip], rax
	mov	rax, QWORD PTR ImproperAxes[rip]
	test	rax, rax
	jne	.L660
	lea	rdi, .LC199[rip]
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L660:
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	cdqe
	sal	rax, 3
	sub	rax, 8
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rdx], rax
.L659:
	add	DWORD PTR -12[rbp], 1
.L658:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L661
	add	DWORD PTR -16[rbp], 1
.L657:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -16[rbp], eax
	jl	.L662
	add	DWORD PTR -20[rbp], 1
.L656:
	mov	eax, DWORD PTR AtomsCount[rip]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L663
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	find_improper_axes, .-find_improper_axes
	.section	.rodata
	.align 8
.LC200:
	.string	"There are no planes of symmetry in the molecule"
	.align 8
.LC201:
	.string	"There is a plane of symmetry in the molecule"
	.align 8
.LC202:
	.string	"There are %d planes of symmetry in the molecule\n"
	.align 8
.LC203:
	.string	"     Residual          Direction of the normal           Distance"
.LC204:
	.string	"%3d %8.4e "
.LC205:
	.string	"(%11.8f,%11.8f,%11.8f) "
.LC206:
	.string	"%14.8f\n"
	.text
	.globl	report_planes
	.type	report_planes, @function
report_planes:
.LFB38:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, DWORD PTR PlanesCount[rip]
	test	eax, eax
	jne	.L665
	lea	rdi, .LC200[rip]
	call	puts@PLT
	jmp	.L671
.L665:
	mov	eax, DWORD PTR PlanesCount[rip]
	cmp	eax, 1
	jne	.L667
	lea	rdi, .LC201[rip]
	call	puts@PLT
	jmp	.L668
.L667:
	mov	eax, DWORD PTR PlanesCount[rip]
	mov	esi, eax
	lea	rdi, .LC202[rip]
	mov	eax, 0
	call	printf@PLT
.L668:
	lea	rdi, .LC203[rip]
	call	puts@PLT
	mov	DWORD PTR -4[rbp], 0
	jmp	.L669
.L670:
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -4[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC204[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 56[rax]
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 48[rax]
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 40[rax]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC205[rip]
	mov	eax, 3
	call	printf@PLT
	mov	rdx, QWORD PTR Planes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 32[rax]
	movq	xmm0, rax
	lea	rdi, .LC206[rip]
	mov	eax, 1
	call	printf@PLT
	add	DWORD PTR -4[rbp], 1
.L669:
	mov	eax, DWORD PTR PlanesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L670
.L671:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	report_planes, .-report_planes
	.section	.rodata
	.align 8
.LC207:
	.string	"There is no inversion center in the molecule"
	.align 8
.LC208:
	.string	"There in an inversion center in the molecule"
	.align 8
.LC209:
	.string	"     Residual                      Position"
.LC210:
	.string	"   %8.4e "
.LC211:
	.string	"(%14.8f,%14.8f,%14.8f)\n"
	.text
	.globl	report_inversion_centers
	.type	report_inversion_centers, @function
report_inversion_centers:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, DWORD PTR InversionCentersCount[rip]
	test	eax, eax
	jne	.L673
	lea	rdi, .LC207[rip]
	call	puts@PLT
	jmp	.L675
.L673:
	lea	rdi, .LC208[rip]
	call	puts@PLT
	lea	rdi, .LC209[rip]
	call	puts@PLT
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 24[rax]
	movq	xmm0, rax
	lea	rdi, .LC210[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 56[rax]
	movapd	xmm2, xmm1
	mulsd	xmm2, xmm0
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 48[rax]
	movapd	xmm3, xmm1
	mulsd	xmm3, xmm0
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR InversionCenters[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 40[rax]
	mulsd	xmm1, xmm0
	movq	rax, xmm1
	movapd	xmm1, xmm3
	movq	xmm0, rax
	lea	rdi, .LC211[rip]
	mov	eax, 3
	call	printf@PLT
.L675:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	report_inversion_centers, .-report_inversion_centers
	.section	.rodata
	.align 8
.LC212:
	.string	"There are no normal axes in the molecule"
	.align 8
.LC213:
	.string	"There is a normal axis in the molecule"
	.align 8
.LC214:
	.string	"There are %d normal axes in the molecule\n"
	.align 8
.LC215:
	.string	"     Residual  Order         Direction of the axis                         Supporting point"
.LC216:
	.string	"Inf "
.LC217:
	.string	"%3d "
	.text
	.globl	report_axes
	.type	report_axes, @function
report_axes:
.LFB40:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, DWORD PTR NormalAxesCount[rip]
	test	eax, eax
	jne	.L677
	lea	rdi, .LC212[rip]
	call	puts@PLT
	jmp	.L685
.L677:
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cmp	eax, 1
	jne	.L679
	lea	rdi, .LC213[rip]
	call	puts@PLT
	jmp	.L680
.L679:
	mov	eax, DWORD PTR NormalAxesCount[rip]
	mov	esi, eax
	lea	rdi, .LC214[rip]
	mov	eax, 0
	call	printf@PLT
.L680:
	lea	rdi, .LC215[rip]
	call	puts@PLT
	mov	DWORD PTR -4[rbp], 0
	jmp	.L681
.L684:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -4[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC204[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	jne	.L682
	lea	rdi, .LC216[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L683
.L682:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 16[rax]
	mov	esi, eax
	lea	rdi, .LC217[rip]
	mov	eax, 0
	call	printf@PLT
.L683:
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 80[rax]
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 72[rax]
	mov	rdx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 64[rax]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC205[rip]
	mov	eax, 3
	call	printf@PLT
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 56[rax]
	movapd	xmm2, xmm1
	mulsd	xmm2, xmm0
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 48[rax]
	movapd	xmm3, xmm1
	mulsd	xmm3, xmm0
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR NormalAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 40[rax]
	mulsd	xmm1, xmm0
	movq	rax, xmm1
	movapd	xmm1, xmm3
	movq	xmm0, rax
	lea	rdi, .LC211[rip]
	mov	eax, 3
	call	printf@PLT
	add	DWORD PTR -4[rbp], 1
.L681:
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L684
.L685:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	report_axes, .-report_axes
	.section	.rodata
	.align 8
.LC218:
	.string	"There are no improper axes in the molecule"
	.align 8
.LC219:
	.string	"There is an improper axis in the molecule"
	.align 8
.LC220:
	.string	"There are %d improper axes in the molecule\n"
	.text
	.globl	report_improper_axes
	.type	report_improper_axes, @function
report_improper_axes:
.LFB41:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	test	eax, eax
	jne	.L687
	lea	rdi, .LC218[rip]
	call	puts@PLT
	jmp	.L695
.L687:
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	cmp	eax, 1
	jne	.L689
	lea	rdi, .LC219[rip]
	call	puts@PLT
	jmp	.L690
.L689:
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	mov	esi, eax
	lea	rdi, .LC220[rip]
	mov	eax, 0
	call	printf@PLT
.L690:
	lea	rdi, .LC215[rip]
	call	puts@PLT
	mov	DWORD PTR -4[rbp], 0
	jmp	.L691
.L694:
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -4[rbp]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC204[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	jne	.L692
	lea	rdi, .LC216[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L693
.L692:
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 16[rax]
	mov	esi, eax
	lea	rdi, .LC217[rip]
	mov	eax, 0
	call	printf@PLT
.L693:
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 80[rax]
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 72[rax]
	mov	rdx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 64[rax]
	movapd	xmm2, xmm1
	movapd	xmm1, xmm0
	movq	xmm0, rax
	lea	rdi, .LC205[rip]
	mov	eax, 3
	call	printf@PLT
	mov	rax, QWORD PTR ImproperAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR ImproperAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 56[rax]
	movapd	xmm2, xmm1
	mulsd	xmm2, xmm0
	mov	rax, QWORD PTR ImproperAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR ImproperAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 48[rax]
	movapd	xmm3, xmm1
	mulsd	xmm3, xmm0
	mov	rax, QWORD PTR ImproperAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm1, QWORD PTR 32[rax]
	mov	rax, QWORD PTR ImproperAxes[rip]
	mov	rax, QWORD PTR [rax]
	movsd	xmm0, QWORD PTR 40[rax]
	mulsd	xmm1, xmm0
	movq	rax, xmm1
	movapd	xmm1, xmm3
	movq	xmm0, rax
	lea	rdi, .LC211[rip]
	mov	eax, 3
	call	printf@PLT
	add	DWORD PTR -4[rbp], 1
.L691:
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L694
.L695:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	report_improper_axes, .-report_improper_axes
	.section	.rodata
	.align 8
.LC221:
	.string	"  %10ld candidates examined\n  %10ld removed early\n  %10ld removed during initial mating stage\n  %10ld removed as duplicates\n  %10ld removed because of the wrong transformation order\n  %10ld removed after unsuccessful optimization\n  %10ld accepted\n"
	.text
	.globl	report_and_reset_counters
	.type	report_and_reset_counters, @function
report_and_reset_counters:
.LFB42:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rdi, QWORD PTR StatAccept[rip]
	mov	rsi, QWORD PTR StatOpt[rip]
	mov	r9, QWORD PTR StatOrder[rip]
	mov	r8, QWORD PTR StatDups[rip]
	mov	rcx, QWORD PTR StatPairs[rip]
	mov	rdx, QWORD PTR StatEarly[rip]
	mov	rax, QWORD PTR StatTotal[rip]
	push	rdi
	push	rsi
	mov	rsi, rax
	lea	rdi, .LC221[rip]
	mov	eax, 0
	call	printf@PLT
	add	rsp, 16
	mov	QWORD PTR StatAccept[rip], 0
	mov	rax, QWORD PTR StatAccept[rip]
	mov	QWORD PTR StatOpt[rip], rax
	mov	rax, QWORD PTR StatOpt[rip]
	mov	QWORD PTR StatOrder[rip], rax
	mov	rax, QWORD PTR StatOrder[rip]
	mov	QWORD PTR StatDups[rip], rax
	mov	rax, QWORD PTR StatDups[rip]
	mov	QWORD PTR StatPairs[rip], rax
	mov	rax, QWORD PTR StatPairs[rip]
	mov	QWORD PTR StatEarly[rip], rax
	mov	rax, QWORD PTR StatEarly[rip]
	mov	QWORD PTR StatTotal[rip], rax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	report_and_reset_counters, .-report_and_reset_counters
	.globl	find_symmetry_elements
	.type	find_symmetry_elements, @function
find_symmetry_elements:
.LFB43:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	call	find_center_of_something
	call	find_inversion_centers
	call	find_planes
	call	find_infinity_axis
	call	find_c2_axes
	call	find_higher_axes
	call	find_improper_axes
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	find_symmetry_elements, .-find_symmetry_elements
	.globl	compare_axes
	.type	compare_axes, @function
compare_axes:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], 0
	jne	.L699
	mov	DWORD PTR -28[rbp], 10000
.L699:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], 0
	jne	.L700
	mov	DWORD PTR -24[rbp], 10000
.L700:
	mov	eax, DWORD PTR -24[rbp]
	sub	eax, DWORD PTR -28[rbp]
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	je	.L701
	mov	eax, DWORD PTR -20[rbp]
	jmp	.L702
.L701:
	mov	rax, QWORD PTR -16[rbp]
	movsd	xmm0, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR 24[rax]
	comisd	xmm0, xmm1
	jbe	.L709
	mov	eax, -1
	jmp	.L702
.L709:
	mov	rax, QWORD PTR -16[rbp]
	movsd	xmm1, QWORD PTR 24[rax]
	mov	rax, QWORD PTR -8[rbp]
	movsd	xmm0, QWORD PTR 24[rax]
	comisd	xmm0, xmm1
	jbe	.L710
	mov	eax, 1
	jmp	.L702
.L710:
	mov	eax, 0
.L702:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	compare_axes, .-compare_axes
	.globl	sort_symmetry_elements
	.type	sort_symmetry_elements, @function
sort_symmetry_elements:
.LFB45:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, DWORD PTR PlanesCount[rip]
	cmp	eax, 1
	jle	.L712
	mov	eax, DWORD PTR PlanesCount[rip]
	movsx	rsi, eax
	mov	rax, QWORD PTR Planes[rip]
	lea	rcx, compare_axes[rip]
	mov	edx, 8
	mov	rdi, rax
	call	qsort@PLT
.L712:
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cmp	eax, 1
	jle	.L713
	mov	eax, DWORD PTR NormalAxesCount[rip]
	movsx	rsi, eax
	mov	rax, QWORD PTR NormalAxes[rip]
	lea	rcx, compare_axes[rip]
	mov	edx, 8
	mov	rdi, rax
	call	qsort@PLT
.L713:
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	cmp	eax, 1
	jle	.L715
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	movsx	rsi, eax
	mov	rax, QWORD PTR ImproperAxes[rip]
	lea	rcx, compare_axes[rip]
	mov	edx, 8
	mov	rdi, rax
	call	qsort@PLT
.L715:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	sort_symmetry_elements, .-sort_symmetry_elements
	.globl	report_symmetry_elements_verbose
	.type	report_symmetry_elements_verbose, @function
report_symmetry_elements_verbose:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	call	report_inversion_centers
	call	report_axes
	call	report_improper_axes
	call	report_planes
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	report_symmetry_elements_verbose, .-report_symmetry_elements_verbose
	.globl	summarize_symmetry_elements
	.type	summarize_symmetry_elements, @function
summarize_symmetry_elements:
.LFB47:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	eax, DWORD PTR MaxAxisOrder[rip]
	add	eax, 1
	cdqe
	mov	esi, 4
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR NormalAxesCounts[rip], rax
	mov	eax, DWORD PTR MaxAxisOrder[rip]
	add	eax, 1
	cdqe
	mov	esi, 4
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR ImproperAxesCounts[rip], rax
	mov	DWORD PTR -4[rbp], 0
	jmp	.L718
.L719:
	mov	rdx, QWORD PTR NormalAxesCounts[rip]
	mov	rcx, QWORD PTR NormalAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 16[rax]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	add	edx, 1
	mov	DWORD PTR [rax], edx
	add	DWORD PTR -4[rbp], 1
.L718:
	mov	eax, DWORD PTR NormalAxesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L719
	mov	DWORD PTR -4[rbp], 0
	jmp	.L720
.L721:
	mov	rdx, QWORD PTR ImproperAxesCounts[rip]
	mov	rcx, QWORD PTR ImproperAxes[rip]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 16[rax]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	add	edx, 1
	mov	DWORD PTR [rax], edx
	add	DWORD PTR -4[rbp], 1
.L720:
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L721
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	summarize_symmetry_elements, .-summarize_symmetry_elements
	.section	.rodata
.LC222:
	.string	"(C%d) "
.LC223:
	.string	"%d*(C%d) "
.LC224:
	.string	"(S%d) "
.LC225:
	.string	"%d*(S%d) "
.LC226:
	.string	"%d*(sigma) "
	.text
	.globl	report_symmetry_elements_brief
	.type	report_symmetry_elements_brief, @function
report_symmetry_elements_brief:
.LFB48:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	add	rsp, -128
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR PlanesCount[rip]
	mov	eax, DWORD PTR NormalAxesCount[rip]
	add	edx, eax
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	add	edx, eax
	mov	eax, DWORD PTR InversionCentersCount[rip]
	add	eax, edx
	lea	edx, 2[rax]
	mov	eax, edx
	sal	eax, 2
	add	eax, edx
	add	eax, eax
	cdqe
	mov	rsi, rax
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -120[rbp], rax
	cmp	QWORD PTR -120[rbp], 0
	jne	.L723
	mov	edi, 1
	call	exit@PLT
.L723:
	mov	edx, DWORD PTR PlanesCount[rip]
	mov	eax, DWORD PTR NormalAxesCount[rip]
	add	edx, eax
	mov	eax, DWORD PTR ImproperAxesCount[rip]
	add	edx, eax
	mov	eax, DWORD PTR InversionCentersCount[rip]
	add	eax, edx
	test	eax, eax
	je	.L724
	mov	eax, DWORD PTR InversionCentersCount[rip]
	test	eax, eax
	jle	.L725
	mov	rax, QWORD PTR -120[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	mov	DWORD PTR [rax], 539584808
	mov	BYTE PTR 4[rax], 0
.L725:
	mov	rax, QWORD PTR NormalAxesCounts[rip]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 1
	jne	.L726
	mov	rax, QWORD PTR -120[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movabs	rcx, 9052719170536232
	mov	QWORD PTR [rax], rcx
.L726:
	mov	rax, QWORD PTR NormalAxesCounts[rip]
	mov	eax, DWORD PTR [rax]
	cmp	eax, 1
	jle	.L727
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
.L727:
	mov	eax, DWORD PTR MaxAxisOrder[rip]
	mov	DWORD PTR -124[rbp], eax
	jmp	.L728
.L731:
	mov	rdx, QWORD PTR NormalAxesCounts[rip]
	mov	eax, DWORD PTR -124[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	eax, 1
	jne	.L729
	mov	edx, DWORD PTR -124[rbp]
	lea	rax, -112[rbp]
	lea	rsi, .LC222[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
.L729:
	mov	rdx, QWORD PTR NormalAxesCounts[rip]
	mov	eax, DWORD PTR -124[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	eax, 1
	jle	.L730
	mov	rdx, QWORD PTR NormalAxesCounts[rip]
	mov	eax, DWORD PTR -124[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	ecx, DWORD PTR -124[rbp]
	lea	rax, -112[rbp]
	lea	rsi, .LC223[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
.L730:
	sub	DWORD PTR -124[rbp], 1
.L728:
	cmp	DWORD PTR -124[rbp], 1
	jg	.L731
	mov	eax, DWORD PTR MaxAxisOrder[rip]
	mov	DWORD PTR -124[rbp], eax
	jmp	.L732
.L735:
	mov	rdx, QWORD PTR ImproperAxesCounts[rip]
	mov	eax, DWORD PTR -124[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	eax, 1
	jne	.L733
	mov	edx, DWORD PTR -124[rbp]
	lea	rax, -112[rbp]
	lea	rsi, .LC224[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
.L733:
	mov	rdx, QWORD PTR ImproperAxesCounts[rip]
	mov	eax, DWORD PTR -124[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	eax, 1
	jle	.L734
	mov	rdx, QWORD PTR ImproperAxesCounts[rip]
	mov	eax, DWORD PTR -124[rbp]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	ecx, DWORD PTR -124[rbp]
	lea	rax, -112[rbp]
	lea	rsi, .LC225[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
.L734:
	sub	DWORD PTR -124[rbp], 1
.L732:
	cmp	DWORD PTR -124[rbp], 1
	jg	.L735
	mov	eax, DWORD PTR PlanesCount[rip]
	cmp	eax, 1
	jne	.L736
	mov	rax, QWORD PTR -120[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -120[rbp]
	add	rax, rdx
	movabs	rcx, 2317490605773124392
	mov	QWORD PTR [rax], rcx
	mov	BYTE PTR 8[rax], 0
.L736:
	mov	eax, DWORD PTR PlanesCount[rip]
	cmp	eax, 1
	jle	.L724
	mov	edx, DWORD PTR PlanesCount[rip]
	lea	rax, -112[rbp]
	lea	rsi, .LC226[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rdx, -112[rbp]
	mov	rax, QWORD PTR -120[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
.L724:
	mov	rax, QWORD PTR -120[rbp]
	mov	QWORD PTR SymmetryCode[rip], rax
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L737
	call	__stack_chk_fail@PLT
.L737:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	report_symmetry_elements_brief, .-report_symmetry_elements_brief
	.section	.rodata
	.align 8
.LC227:
	.string	"It looks very much like %s, but it is not since %s\n"
.LC228:
	.string	"    %s\n"
	.text
	.globl	identify_point_group
	.type	identify_point_group, @function
identify_point_group:
.LFB49:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -8[rbp], -1
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR -12[rbp], 0
	jmp	.L739
.L742:
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, PointGroups[rip+8]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR SymmetryCode[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L740
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, PointGroups[rip+16]
	mov	rax, QWORD PTR [rdx+rax]
	call	rax
	cmp	eax, 1
	jne	.L741
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR -8[rbp], eax
	add	DWORD PTR -4[rbp], 1
	jmp	.L740
.L741:
	mov	eax, DWORD PTR verbose[rip]
	cmp	eax, -1
	jl	.L740
	mov	rdx, QWORD PTR PointGroupRejectionReason[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 3
	mov	rcx, rax
	lea	rax, PointGroups[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rax
	lea	rdi, .LC227[rip]
	mov	eax, 0
	call	printf@PLT
.L740:
	add	DWORD PTR -12[rbp], 1
.L739:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, 57
	jbe	.L742
	cmp	DWORD PTR -4[rbp], 1
	jle	.L743
	mov	DWORD PTR -12[rbp], 0
	jmp	.L744
.L746:
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, PointGroups[rip+8]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR SymmetryCode[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L745
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, PointGroups[rip+16]
	mov	rax, QWORD PTR [rdx+rax]
	call	rax
	cmp	eax, 1
	jne	.L745
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, PointGroups[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rsi, rax
	lea	rdi, .LC228[rip]
	mov	eax, 0
	call	printf@PLT
.L745:
	add	DWORD PTR -12[rbp], 1
.L744:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, 57
	jbe	.L746
.L743:
	cmp	DWORD PTR -4[rbp], 1
	jne	.L748
	mov	eax, DWORD PTR -8[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, PointGroups[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR pgroup[rip], rax
	mov	eax, DWORD PTR -8[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, PointGroups[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR pgroup[rip]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
.L748:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	identify_point_group, .-identify_point_group
	.section	.rodata
.LC229:
	.string	"\n"
.LC230:
	.string	"%d"
.LC231:
	.string	"%d %lg %lg %lg\n"
	.align 8
.LC232:
	.string	"Error reading description of the atom %d\n"
	.text
	.globl	read_coordinates
	.type	read_coordinates, @function
read_coordinates:
.LFB50:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC229[rip]
	mov	rdi, rax
	call	strtok@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, AtomsCount[rip]
	lea	rsi, .LC230[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	mov	eax, DWORD PTR AtomsCount[rip]
	cdqe
	mov	esi, 32
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR Atoms[rip], rax
	lea	rsi, .LC229[rip]
	mov	edi, 0
	call	strtok@PLT
	mov	QWORD PTR -8[rbp], rax
	jmp	.L750
.L753:
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	lea	rsi, 24[rax]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	lea	rcx, 16[rax]
	mov	rdx, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdx
	lea	rdx, 8[rax]
	mov	rdi, QWORD PTR Atoms[rip]
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 5
	add	rax, rdi
	mov	rdi, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	r9, rsi
	mov	r8, rcx
	mov	rcx, rdx
	mov	rdx, rdi
	lea	rsi, .LC231[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	cmp	eax, 4
	je	.L751
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -12[rbp]
	lea	rsi, .LC232[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, -1
	jmp	.L752
.L751:
	add	DWORD PTR -12[rbp], 1
	lea	rsi, .LC229[rip]
	mov	edi, 0
	call	strtok@PLT
	mov	QWORD PTR -8[rbp], rax
.L750:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L753
	mov	eax, 0
.L752:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	read_coordinates, .-read_coordinates
	.section	.rodata
	.align 8
.LC233:
	.string	"Error reading in atomic coordinates\n"
	.align 8
.LC234:
	.string	"Refinement of some symmetry elements was terminated before convergence was reached.\nSome symmetry elements may remain unidentified."
	.text
	.globl	symmetry
	.type	symmetry, @function
symmetry:
.LFB51:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	read_coordinates
	test	eax, eax
	jns	.L755
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 36
	mov	esi, 1
	lea	rdi, .LC233[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L755:
	call	find_symmetry_elements
	call	sort_symmetry_elements
	call	summarize_symmetry_elements
	mov	eax, DWORD PTR BadOptimization[rip]
	test	eax, eax
	je	.L756
	lea	rdi, .LC234[rip]
	call	puts@PLT
.L756:
	call	report_symmetry_elements_brief
	call	identify_point_group
	mov	rax, QWORD PTR pgroup[rip]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	symmetry, .-symmetry
	.section	.rodata
	.align 16
.LC130:
	.long	0
	.long	-2147483648
	.long	0
	.long	0
	.align 16
.LC135:
	.long	-1
	.long	2147483647
	.long	0
	.long	0
	.align 8
.LC138:
	.long	-755914244
	.long	1062232653
	.align 8
.LC139:
	.long	0
	.long	1083129856
	.align 8
.LC140:
	.long	0
	.long	1073741824
	.align 8
.LC142:
	.long	0
	.long	1074790400
	.align 8
.LC143:
	.long	0
	.long	1074266112
	.align 8
.LC145:
	.long	-1717986918
	.long	1070176665
	.align 8
.LC146:
	.long	-858993459
	.long	1073532108
	.align 8
.LC162:
	.long	0
	.long	1072693248
	.align 8
.LC167:
	.long	1413754136
	.long	1075388923
	.align 8
.LC178:
	.long	1413754136
	.long	1074340347
	.align 8
.LC181:
	.long	0
	.long	1071644672
	.align 8
.LC197:
	.long	0
	.long	1075052544
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.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:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"119455.c"
	.text
	.comm	pgroup,4,4
	.global	ToleranceSame
	.data
	.align	3
	.type	ToleranceSame, %object
	.size	ToleranceSame, 8
ToleranceSame:
	.word	3539053052
	.word	1062232653
	.global	TolerancePrimary
	.align	3
	.type	TolerancePrimary, %object
	.size	TolerancePrimary, 8
TolerancePrimary:
	.word	2576980378
	.word	1068079513
	.global	ToleranceFinal
	.align	3
	.type	ToleranceFinal, %object
	.size	ToleranceFinal, 8
ToleranceFinal:
	.word	2576980378
	.word	1069128089
	.global	MaxOptStep
	.align	3
	.type	MaxOptStep, %object
	.size	MaxOptStep, 8
MaxOptStep:
	.word	0
	.word	1071644672
	.global	MinOptStep
	.align	3
	.type	MinOptStep, %object
	.size	MinOptStep, 8
MinOptStep:
	.word	2596056904
	.word	1048238066
	.global	GradientStep
	.align	3
	.type	GradientStep, %object
	.size	GradientStep, 8
GradientStep:
	.word	2596056904
	.word	1048238066
	.global	OptChangeThreshold
	.align	3
	.type	OptChangeThreshold, %object
	.size	OptChangeThreshold, 8
OptChangeThreshold:
	.word	3654794683
	.word	1037794527
	.comm	CenterOfSomething,24,8
	.global	DistanceFromCenter
	.bss
	.align	2
	.type	DistanceFromCenter, %object
	.size	DistanceFromCenter, 4
DistanceFromCenter:
	.space	4
	.global	verbose
	.align	2
	.type	verbose, %object
	.size	verbose, 4
verbose:
	.space	4
	.global	MaxOptCycles
	.data
	.align	2
	.type	MaxOptCycles, %object
	.size	MaxOptCycles, 4
MaxOptCycles:
	.word	200
	.global	OptChangeHits
	.align	2
	.type	OptChangeHits, %object
	.size	OptChangeHits, 4
OptChangeHits:
	.word	5
	.global	MaxAxisOrder
	.align	2
	.type	MaxAxisOrder, %object
	.size	MaxAxisOrder, 4
MaxAxisOrder:
	.word	20
	.global	AtomsCount
	.bss
	.align	2
	.type	AtomsCount, %object
	.size	AtomsCount, 4
AtomsCount:
	.space	4
	.global	Atoms
	.align	2
	.type	Atoms, %object
	.size	Atoms, 4
Atoms:
	.space	4
	.global	PlanesCount
	.align	2
	.type	PlanesCount, %object
	.size	PlanesCount, 4
PlanesCount:
	.space	4
	.global	Planes
	.align	2
	.type	Planes, %object
	.size	Planes, 4
Planes:
	.space	4
	.global	MolecularPlane
	.align	2
	.type	MolecularPlane, %object
	.size	MolecularPlane, 4
MolecularPlane:
	.space	4
	.global	InversionCentersCount
	.align	2
	.type	InversionCentersCount, %object
	.size	InversionCentersCount, 4
InversionCentersCount:
	.space	4
	.global	InversionCenters
	.align	2
	.type	InversionCenters, %object
	.size	InversionCenters, 4
InversionCenters:
	.space	4
	.global	NormalAxesCount
	.align	2
	.type	NormalAxesCount, %object
	.size	NormalAxesCount, 4
NormalAxesCount:
	.space	4
	.global	NormalAxes
	.align	2
	.type	NormalAxes, %object
	.size	NormalAxes, 4
NormalAxes:
	.space	4
	.global	ImproperAxesCount
	.align	2
	.type	ImproperAxesCount, %object
	.size	ImproperAxesCount, 4
ImproperAxesCount:
	.space	4
	.global	ImproperAxes
	.align	2
	.type	ImproperAxes, %object
	.size	ImproperAxes, 4
ImproperAxes:
	.space	4
	.global	NormalAxesCounts
	.align	2
	.type	NormalAxesCounts, %object
	.size	NormalAxesCounts, 4
NormalAxesCounts:
	.space	4
	.global	ImproperAxesCounts
	.align	2
	.type	ImproperAxesCounts, %object
	.size	ImproperAxesCounts, 4
ImproperAxesCounts:
	.space	4
	.global	BadOptimization
	.align	2
	.type	BadOptimization, %object
	.size	BadOptimization, 4
BadOptimization:
	.space	4
	.global	SymmetryCode
	.section	.rodata
	.align	2
.LC0:
	.ascii	"\000"
	.data
	.align	2
	.type	SymmetryCode, %object
	.size	SymmetryCode, 4
SymmetryCode:
	.word	.LC0
	.global	StatTotal
	.bss
	.align	2
	.type	StatTotal, %object
	.size	StatTotal, 4
StatTotal:
	.space	4
	.global	StatEarly
	.align	2
	.type	StatEarly, %object
	.size	StatEarly, 4
StatEarly:
	.space	4
	.global	StatPairs
	.align	2
	.type	StatPairs, %object
	.size	StatPairs, 4
StatPairs:
	.space	4
	.global	StatDups
	.align	2
	.type	StatDups, %object
	.size	StatDups, 4
StatDups:
	.space	4
	.global	StatOrder
	.align	2
	.type	StatOrder, %object
	.size	StatOrder, 4
StatOrder:
	.space	4
	.global	StatOpt
	.align	2
	.type	StatOpt, %object
	.size	StatOpt, 4
StatOpt:
	.space	4
	.global	StatAccept
	.align	2
	.type	StatAccept, %object
	.size	StatAccept, 4
StatAccept:
	.space	4
	.text
	.align	2
	.global	true
	.syntax unified
	.arm
	.fpu softvfp
	.type	true, %function
true:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	mov	r3, #1
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	true, .-true
	.global	PointGroups
	.section	.rodata
	.align	2
.LC1:
	.ascii	"C1\000"
	.align	2
.LC2:
	.ascii	"Cs\000"
	.align	2
.LC3:
	.ascii	"(sigma) \000"
	.align	2
.LC4:
	.ascii	"Ci\000"
	.align	2
.LC5:
	.ascii	"(i) \000"
	.align	2
.LC6:
	.ascii	"C2\000"
	.align	2
.LC7:
	.ascii	"(C2) \000"
	.align	2
.LC8:
	.ascii	"C3\000"
	.align	2
.LC9:
	.ascii	"(C3) \000"
	.align	2
.LC10:
	.ascii	"C4\000"
	.align	2
.LC11:
	.ascii	"(C4) (C2) \000"
	.align	2
.LC12:
	.ascii	"C5\000"
	.align	2
.LC13:
	.ascii	"(C5) \000"
	.align	2
.LC14:
	.ascii	"C6\000"
	.align	2
.LC15:
	.ascii	"(C6) (C3) (C2) \000"
	.align	2
.LC16:
	.ascii	"C7\000"
	.align	2
.LC17:
	.ascii	"(C7) \000"
	.align	2
.LC18:
	.ascii	"C8\000"
	.align	2
.LC19:
	.ascii	"(C8) (C4) (C2) \000"
	.align	2
.LC20:
	.ascii	"D2\000"
	.align	2
.LC21:
	.ascii	"3*(C2) \000"
	.align	2
.LC22:
	.ascii	"D3\000"
	.align	2
.LC23:
	.ascii	"(C3) 3*(C2) \000"
	.align	2
.LC24:
	.ascii	"D4\000"
	.align	2
.LC25:
	.ascii	"(C4) 5*(C2) \000"
	.align	2
.LC26:
	.ascii	"D5\000"
	.align	2
.LC27:
	.ascii	"(C5) 5*(C2) \000"
	.align	2
.LC28:
	.ascii	"D6\000"
	.align	2
.LC29:
	.ascii	"(C6) (C3) 7*(C2) \000"
	.align	2
.LC30:
	.ascii	"D7\000"
	.align	2
.LC31:
	.ascii	"(C7) 7*(C2) \000"
	.align	2
.LC32:
	.ascii	"D8\000"
	.align	2
.LC33:
	.ascii	"(C8) (C4) 9*(C2) \000"
	.align	2
.LC34:
	.ascii	"C2v\000"
	.align	2
.LC35:
	.ascii	"(C2) 2*(sigma) \000"
	.align	2
.LC36:
	.ascii	"C3v\000"
	.align	2
.LC37:
	.ascii	"(C3) 3*(sigma) \000"
	.align	2
.LC38:
	.ascii	"C4v\000"
	.align	2
.LC39:
	.ascii	"(C4) (C2) 4*(sigma) \000"
	.align	2
.LC40:
	.ascii	"C5v\000"
	.align	2
.LC41:
	.ascii	"(C5) 5*(sigma) \000"
	.align	2
.LC42:
	.ascii	"C6v\000"
	.align	2
.LC43:
	.ascii	"(C6) (C3) (C2) 6*(sigma) \000"
	.align	2
.LC44:
	.ascii	"C7v\000"
	.align	2
.LC45:
	.ascii	"(C7) 7*(sigma) \000"
	.align	2
.LC46:
	.ascii	"C8v\000"
	.align	2
.LC47:
	.ascii	"(C8) (C4) (C2) 8*(sigma) \000"
	.align	2
.LC48:
	.ascii	"C2h\000"
	.align	2
.LC49:
	.ascii	"(i) (C2) (sigma) \000"
	.align	2
.LC50:
	.ascii	"C3h\000"
	.align	2
.LC51:
	.ascii	"(C3) (S3) (sigma) \000"
	.align	2
.LC52:
	.ascii	"C4h\000"
	.align	2
.LC53:
	.ascii	"(i) (C4) (C2) (S4) (sigma) \000"
	.align	2
.LC54:
	.ascii	"C5h\000"
	.align	2
.LC55:
	.ascii	"(C5) (S5) (sigma) \000"
	.align	2
.LC56:
	.ascii	"C6h\000"
	.align	2
.LC57:
	.ascii	"(i) (C6) (C3) (C2) (S6) (S3) (sigma) \000"
	.align	2
.LC58:
	.ascii	"C7h\000"
	.align	2
.LC59:
	.ascii	"(C7) (S7) (sigma) \000"
	.align	2
.LC60:
	.ascii	"C8h\000"
	.align	2
.LC61:
	.ascii	"(i) (C8) (C4) (C2) (S8) (S4) (sigma) \000"
	.align	2
.LC62:
	.ascii	"D2h\000"
	.align	2
.LC63:
	.ascii	"(i) 3*(C2) 3*(sigma) \000"
	.align	2
.LC64:
	.ascii	"D3h\000"
	.align	2
.LC65:
	.ascii	"(C3) 3*(C2) (S3) 4*(sigma) \000"
	.align	2
.LC66:
	.ascii	"D4h\000"
	.align	2
.LC67:
	.ascii	"(i) (C4) 5*(C2) (S4) 5*(sigma) \000"
	.align	2
.LC68:
	.ascii	"D5h\000"
	.align	2
.LC69:
	.ascii	"(C5) 5*(C2) (S5) 6*(sigma) \000"
	.align	2
.LC70:
	.ascii	"D6h\000"
	.align	2
.LC71:
	.ascii	"(i) (C6) (C3) 7*(C2) (S6) (S3) 7*(sigma) \000"
	.align	2
.LC72:
	.ascii	"D7h\000"
	.align	2
.LC73:
	.ascii	"(C7) 7*(C2) (S7) 8*(sigma) \000"
	.align	2
.LC74:
	.ascii	"D8h\000"
	.align	2
.LC75:
	.ascii	"(i) (C8) (C4) 9*(C2) (S8) (S4) 9*(sigma) \000"
	.align	2
.LC76:
	.ascii	"D2d\000"
	.align	2
.LC77:
	.ascii	"3*(C2) (S4) 2*(sigma) \000"
	.align	2
.LC78:
	.ascii	"D3d\000"
	.align	2
.LC79:
	.ascii	"(i) (C3) 3*(C2) (S6) 3*(sigma) \000"
	.align	2
.LC80:
	.ascii	"D4d\000"
	.align	2
.LC81:
	.ascii	"(C4) 5*(C2) (S8) 4*(sigma) \000"
	.align	2
.LC82:
	.ascii	"D5d\000"
	.align	2
.LC83:
	.ascii	"(i) (C5) 5*(C2) (S10) 5*(sigma) \000"
	.align	2
.LC84:
	.ascii	"D6d\000"
	.align	2
.LC85:
	.ascii	"(C6) (C3) 7*(C2) (S12) (S4) 6*(sigma) \000"
	.align	2
.LC86:
	.ascii	"D7d\000"
	.align	2
.LC87:
	.ascii	"(i) (C7) 7*(C2) (S14) 7*(sigma) \000"
	.align	2
.LC88:
	.ascii	"D8d\000"
	.align	2
.LC89:
	.ascii	"(C8) (C4) 9*(C2) (S16) 8*(sigma) \000"
	.align	2
.LC90:
	.ascii	"S4\000"
	.align	2
.LC91:
	.ascii	"(C2) (S4) \000"
	.align	2
.LC92:
	.ascii	"S6\000"
	.align	2
.LC93:
	.ascii	"(i) (C3) (S6) \000"
	.align	2
.LC94:
	.ascii	"S8\000"
	.align	2
.LC95:
	.ascii	"(C4) (C2) (S8) \000"
	.align	2
.LC96:
	.ascii	"T\000"
	.align	2
.LC97:
	.ascii	"4*(C3) 3*(C2) \000"
	.align	2
.LC98:
	.ascii	"Th\000"
	.align	2
.LC99:
	.ascii	"(i) 4*(C3) 3*(C2) 4*(S6) 3*(sigma) \000"
	.align	2
.LC100:
	.ascii	"Td\000"
	.align	2
.LC101:
	.ascii	"4*(C3) 3*(C2) 3*(S4) 6*(sigma) \000"
	.align	2
.LC102:
	.ascii	"O\000"
	.align	2
.LC103:
	.ascii	"3*(C4) 4*(C3) 9*(C2) \000"
	.align	2
.LC104:
	.ascii	"Oh\000"
	.align	2
.LC105:
	.ascii	"(i) 3*(C4) 4*(C3) 9*(C2) 4*(S6) 3*(S4) 9*(sigma) \000"
	.align	2
.LC106:
	.ascii	"Cinfv\000"
	.align	2
.LC107:
	.ascii	"(Cinf) (sigma) \000"
	.align	2
.LC108:
	.ascii	"Dinfh\000"
	.align	2
.LC109:
	.ascii	"(i) (Cinf) (C2) 2*(sigma) \000"
	.align	2
.LC110:
	.ascii	"I\000"
	.align	2
.LC111:
	.ascii	"6*(C5) 10*(C3) 15*(C2) \000"
	.align	2
.LC112:
	.ascii	"Ih\000"
	.align	2
.LC113:
	.ascii	"(i) 6*(C5) 10*(C3) 15*(C2) 6*(S10) 10*(S6) 15*(sigm"
	.ascii	"a) \000"
	.align	2
.LC114:
	.ascii	"Kh\000"
	.align	2
.LC115:
	.ascii	"(i) (Cinf) (sigma) \000"
	.data
	.align	2
	.type	PointGroups, %object
	.size	PointGroups, 696
PointGroups:
	.word	.LC1
	.word	.LC0
	.word	true
	.word	.LC2
	.word	.LC3
	.word	true
	.word	.LC4
	.word	.LC5
	.word	true
	.word	.LC6
	.word	.LC7
	.word	true
	.word	.LC8
	.word	.LC9
	.word	true
	.word	.LC10
	.word	.LC11
	.word	true
	.word	.LC12
	.word	.LC13
	.word	true
	.word	.LC14
	.word	.LC15
	.word	true
	.word	.LC16
	.word	.LC17
	.word	true
	.word	.LC18
	.word	.LC19
	.word	true
	.word	.LC20
	.word	.LC21
	.word	true
	.word	.LC22
	.word	.LC23
	.word	true
	.word	.LC24
	.word	.LC25
	.word	true
	.word	.LC26
	.word	.LC27
	.word	true
	.word	.LC28
	.word	.LC29
	.word	true
	.word	.LC30
	.word	.LC31
	.word	true
	.word	.LC32
	.word	.LC33
	.word	true
	.word	.LC34
	.word	.LC35
	.word	true
	.word	.LC36
	.word	.LC37
	.word	true
	.word	.LC38
	.word	.LC39
	.word	true
	.word	.LC40
	.word	.LC41
	.word	true
	.word	.LC42
	.word	.LC43
	.word	true
	.word	.LC44
	.word	.LC45
	.word	true
	.word	.LC46
	.word	.LC47
	.word	true
	.word	.LC48
	.word	.LC49
	.word	true
	.word	.LC50
	.word	.LC51
	.word	true
	.word	.LC52
	.word	.LC53
	.word	true
	.word	.LC54
	.word	.LC55
	.word	true
	.word	.LC56
	.word	.LC57
	.word	true
	.word	.LC58
	.word	.LC59
	.word	true
	.word	.LC60
	.word	.LC61
	.word	true
	.word	.LC62
	.word	.LC63
	.word	true
	.word	.LC64
	.word	.LC65
	.word	true
	.word	.LC66
	.word	.LC67
	.word	true
	.word	.LC68
	.word	.LC69
	.word	true
	.word	.LC70
	.word	.LC71
	.word	true
	.word	.LC72
	.word	.LC73
	.word	true
	.word	.LC74
	.word	.LC75
	.word	true
	.word	.LC76
	.word	.LC77
	.word	true
	.word	.LC78
	.word	.LC79
	.word	true
	.word	.LC80
	.word	.LC81
	.word	true
	.word	.LC82
	.word	.LC83
	.word	true
	.word	.LC84
	.word	.LC85
	.word	true
	.word	.LC86
	.word	.LC87
	.word	true
	.word	.LC88
	.word	.LC89
	.word	true
	.word	.LC90
	.word	.LC91
	.word	true
	.word	.LC92
	.word	.LC93
	.word	true
	.word	.LC94
	.word	.LC95
	.word	true
	.word	.LC96
	.word	.LC97
	.word	true
	.word	.LC98
	.word	.LC99
	.word	true
	.word	.LC100
	.word	.LC101
	.word	true
	.word	.LC102
	.word	.LC103
	.word	true
	.word	.LC104
	.word	.LC105
	.word	true
	.word	.LC106
	.word	.LC107
	.word	true
	.word	.LC108
	.word	.LC109
	.word	true
	.word	.LC110
	.word	.LC111
	.word	true
	.word	.LC112
	.word	.LC113
	.word	true
	.word	.LC114
	.word	.LC115
	.word	true
	.global	PointGroupRejectionReason
	.bss
	.align	2
	.type	PointGroupRejectionReason, %object
	.size	PointGroupRejectionReason, 4
PointGroupRejectionReason:
	.space	4
	.global	__aeabi_dmul
	.text
	.align	2
	.global	pow2
	.syntax unified
	.arm
	.fpu softvfp
	.type	pow2, %function
pow2:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	pow2, .-pow2
	.section	.rodata
	.align	2
.LC116:
	.ascii	"Out of memory for tagging array in establish_pairs("
	.ascii	")\012\000"
	.align	2
.LC117:
	.ascii	"        looking for a pair for %d\012\000"
	.align	2
.LC118:
	.ascii	"        new coordinates are: (%g,%g,%g)\012\000"
	.global	__aeabi_dadd
	.global	__aeabi_dsub
	.align	2
.LC119:
	.ascii	"        distance to %d is %g\012\000"
	.global	__aeabi_dcmplt
	.global	__aeabi_dcmpgt
	.align	2
.LC120:
	.ascii	"        no pair for atom %d - best was %d with err "
	.ascii	"= %g\012\000"
	.align	2
.LC121:
	.ascii	"        atom %d transforms to the atom %d, err = %g"
	.ascii	"\012\000"
	.align	2
.LC122:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	establish_pairs
	.syntax unified
	.arm
	.fpu softvfp
	.type	establish_pairs, %function
establish_pairs:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #104
	str	r0, [fp, #-96]
	ldr	r3, .L31
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, .L31+4
	ldr	r3, [r3]
	mov	r1, #1
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	bne	.L6
	ldr	r3, .L31+8
	ldr	r3, [r3]
	mov	r2, #53
	mov	r1, #1
	ldr	r0, .L31+12
	bl	fwrite
	mov	r0, #1
	bl	exit
.L6:
	mov	r3, #0
	str	r3, [fp, #-88]
	b	.L7
.L24:
	ldr	r3, [fp, #-96]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-88]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, .L31+4
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L8
	ldr	r3, .L31+16
	ldr	r3, [r3]
	cmp	r3, #2
	ble	.L9
	ldr	r1, [fp, #-88]
	ldr	r0, .L31+20
	bl	printf
.L9:
	ldr	r3, [fp, #-96]
	ldr	r3, [r3]
	ldr	r2, .L31+24
	ldr	r1, [r2]
	ldr	r2, [fp, #-88]
	lsl	r2, r2, #5
	add	r1, r1, r2
	sub	r2, fp, #52
	ldr	r0, [fp, #-96]
	blx	r3
	ldr	r3, .L31+16
	ldr	r3, [r3]
	cmp	r3, #2
	ble	.L10
	sub	r5, fp, #44
	ldmia	r5, {r4-r5}
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	ldr	r0, .L31+28
	bl	printf
.L10:
	ldr	r3, [fp, #-88]
	str	r3, [fp, #-76]
	ldr	r3, .L31+32
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-84]
	b	.L11
.L19:
	ldr	r3, .L31+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-84]
	lsl	r3, r3, #5
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, [fp, #-52]
	cmp	r2, r3
	bne	.L30
	ldr	r3, [fp, #-84]
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L30
	mov	r3, #0
	str	r3, [fp, #-80]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	b	.L15
.L16:
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #40
	ldmia	r3, {r0-r1}
	ldr	r3, .L31+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-84]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
.L15:
	ldr	r3, [fp, #-80]
	cmp	r3, #2
	ble	.L16
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	ldr	r3, .L31+16
	ldr	r3, [r3]
	cmp	r3, #2
	ble	.L17
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-84]
	ldr	r0, .L31+36
	bl	printf
.L17:
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L14
	ldr	r3, [fp, #-84]
	str	r3, [fp, #-76]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	b	.L14
.L30:
	nop
.L14:
	ldr	r3, [fp, #-84]
	add	r3, r3, #1
	str	r3, [fp, #-84]
.L11:
	ldr	r3, .L31+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-84]
	cmp	r2, r3
	blt	.L19
	ldr	r3, .L31+32
	ldmia	r3, {r2-r3}
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L29
	ldr	r3, .L31+16
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L22
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldr	r2, [fp, #-76]
	ldr	r1, [fp, #-88]
	ldr	r0, .L31+40
	bl	printf
.L22:
	ldr	r0, [fp, #-72]
	bl	free
	mvn	r3, #0
	b	.L25
.L29:
	ldr	r3, [fp, #-96]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-88]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-76]
	str	r2, [r3]
	ldr	r3, [fp, #-76]
	ldr	r2, [fp, #-72]
	add	r3, r2, r3
	mov	r2, #1
	strb	r2, [r3]
	ldr	r3, .L31+16
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L8
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldr	r2, [fp, #-76]
	ldr	r1, [fp, #-88]
	ldr	r0, .L31+44
	bl	printf
.L8:
	ldr	r3, [fp, #-88]
	add	r3, r3, #1
	str	r3, [fp, #-88]
.L7:
	ldr	r3, .L31+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-88]
	cmp	r2, r3
	blt	.L24
	ldr	r0, [fp, #-72]
	bl	free
	mov	r3, #0
.L25:
	ldr	r2, .L31
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L26
	bl	__stack_chk_fail
.L26:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L32:
	.align	2
.L31:
	.word	.LC122
	.word	AtomsCount
	.word	stderr
	.word	.LC116
	.word	verbose
	.word	.LC117
	.word	Atoms
	.word	.LC118
	.word	TolerancePrimary
	.word	.LC119
	.word	.LC120
	.word	.LC121
	.size	establish_pairs, .-establish_pairs
	.section	.rodata
	.align	2
.LC123:
	.ascii	"        transform looped %d steps too early from at"
	.ascii	"om %d\012\000"
	.align	2
.LC124:
	.ascii	"        (improper) transform looped %d steps too ea"
	.ascii	"rly from atom %d\012\000"
	.align	2
.LC125:
	.ascii	"        transform failed to loop after %d steps fro"
	.ascii	"m atom %d\012\000"
	.text
	.align	2
	.global	check_transform_order
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_transform_order, %function
check_transform_order:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L34
.L49:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	beq	.L50
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, .L52
	cmp	r3, r2
	bne	.L37
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	beq	.L51
.L37:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	sub	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	b	.L38
.L42:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bne	.L39
	ldr	r3, .L52+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L40
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-12]
	ldr	r0, .L52+8
	bl	printf
.L40:
	mvn	r3, #0
	b	.L41
.L39:
	ldr	r3, [fp, #-12]
	sub	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-8]
.L38:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bgt	.L42
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	beq	.L43
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, .L52
	cmp	r3, r2
	bne	.L43
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-12]
	b	.L44
.L47:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bne	.L45
	ldr	r3, .L52+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L46
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-12]
	ldr	r0, .L52+12
	bl	printf
.L46:
	mvn	r3, #0
	b	.L41
.L45:
	ldr	r3, [fp, #-12]
	sub	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-8]
.L44:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bgt	.L47
.L43:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	beq	.L36
	ldr	r3, .L52+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L48
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-16]
	mov	r1, r3
	ldr	r0, .L52+16
	bl	printf
.L48:
	mvn	r3, #0
	b	.L41
.L50:
	nop
	b	.L36
.L51:
	nop
.L36:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L34:
	ldr	r3, .L52+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L49
	mov	r3, #0
.L41:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L53:
	.align	2
.L52:
	.word	rotate_reflect_atom
	.word	verbose
	.word	.LC123
	.word	.LC124
	.word	.LC125
	.word	AtomsCount
	.size	check_transform_order, .-check_transform_order
	.align	2
	.global	same_transform
	.syntax unified
	.arm
	.fpu softvfp
	.type	same_transform, %function
same_transform:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #8]
	cmp	r2, r3
	bne	.L55
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #12]
	cmp	r2, r3
	bne	.L55
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3]
	cmp	r2, r3
	beq	.L56
.L55:
	mov	r3, #0
	b	.L57
.L56:
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L58
.L61:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	ldr	r1, [r3, #4]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	cmp	r2, r3
	beq	.L59
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L60
.L59:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L58:
	ldr	r3, .L66
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L61
.L60:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L62
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	cmp	r3, #2
	ble	.L62
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L63
.L65:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-28]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	beq	.L64
	mov	r3, #0
	b	.L57
.L64:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L63:
	ldr	r3, .L66
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L65
	mov	r3, #1
	b	.L57
.L62:
	ldr	r3, [fp, #-12]
.L57:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L67:
	.align	2
.L66:
	.word	AtomsCount
	.size	same_transform, .-same_transform
	.section	.rodata
	.align	2
.LC126:
	.ascii	"Out of memory allocating symmetry element\012\000"
	.align	2
.LC127:
	.ascii	"Out of memory allocating transform table for symmet"
	.ascii	"ry element\012\000"
	.text
	.align	2
	.global	alloc_symmetry_element
	.syntax unified
	.arm
	.fpu softvfp
	.type	alloc_symmetry_element, %function
alloc_symmetry_element:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r1, #80
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L69
	ldr	r3, .L74
	ldr	r3, [r3]
	mov	r2, #42
	mov	r1, #1
	ldr	r0, .L74+4
	bl	fwrite
	mov	r0, #1
	bl	exit
.L69:
	ldr	r3, .L74+8
	ldr	r3, [r3]
	mov	r1, #4
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L70
	ldr	r3, .L74
	ldr	r3, [r3]
	mov	r2, #62
	mov	r1, #1
	ldr	r0, .L74+12
	bl	fwrite
	mov	r0, #1
	bl	exit
.L70:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L71
.L72:
	ldr	r3, .L74+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r1, [r3, #4]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L71:
	ldr	r3, .L74+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	blt	.L72
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L75:
	.align	2
.L74:
	.word	stderr
	.word	.LC126
	.word	AtomsCount
	.word	.LC127
	.size	alloc_symmetry_element, .-alloc_symmetry_element
	.align	2
	.global	destroy_symmetry_element
	.syntax unified
	.arm
	.fpu softvfp
	.type	destroy_symmetry_element, %function
destroy_symmetry_element:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L79
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L78
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	free
.L78:
	ldr	r0, [fp, #-8]
	bl	free
.L79:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	destroy_symmetry_element, .-destroy_symmetry_element
	.section	.rodata
	.align	2
.LC128:
	.ascii	"        distance to symmetric atom (%g) is too big "
	.ascii	"for %d\012\000"
	.align	2
.LC129:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	check_transform_quality
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_transform_quality, %function
check_transform_quality:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #88
	str	r0, [fp, #-80]
	ldr	r3, .L96
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-72]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	b	.L81
.L90:
	ldr	r3, [fp, #-80]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-72]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-80]
	ldr	r3, [r3]
	ldr	r2, .L96+4
	ldr	r1, [r2]
	ldr	r2, [fp, #-72]
	lsl	r2, r2, #5
	add	r1, r1, r2
	sub	r2, fp, #44
	ldr	r0, [fp, #-80]
	blx	r3
	mov	r3, #0
	str	r3, [fp, #-68]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	b	.L82
.L83:
	ldr	r3, [fp, #-68]
	add	r3, r3, #1
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #40
	ldmia	r3, {r0-r1}
	ldr	r3, .L96+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-64]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-68]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-68]
	add	r3, r3, #1
	str	r3, [fp, #-68]
.L82:
	ldr	r3, [fp, #-68]
	cmp	r3, #2
	ble	.L83
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	ldr	r3, .L96+8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L95
	ldr	r3, .L96+12
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L86
	ldr	r3, [fp, #-72]
	str	r3, [sp]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	ldr	r0, .L96+16
	bl	printf
.L86:
	mvn	r3, #0
	b	.L91
.L95:
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L88
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
.L88:
	ldr	r3, [fp, #-72]
	add	r3, r3, #1
	str	r3, [fp, #-72]
.L81:
	ldr	r3, .L96+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-72]
	cmp	r2, r3
	blt	.L90
	ldr	r1, [fp, #-80]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	str	r2, [r1, #16]
	str	r3, [r1, #20]
	mov	r3, #0
.L91:
	ldr	r2, .L96
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L92
	bl	__stack_chk_fail
.L92:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L97:
	.align	2
.L96:
	.word	.LC129
	.word	Atoms
	.word	ToleranceFinal
	.word	verbose
	.word	.LC128
	.word	AtomsCount
	.size	check_transform_quality, .-check_transform_quality
	.section	.rodata
	.align	2
.LC130:
	.ascii	"Normal collapced!\012\000"
	.global	__aeabi_ddiv
	.align	2
.LC131:
	.ascii	"Direction collapced!\012\000"
	.align	2
.LC132:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	eval_optimization_target_function
	.syntax unified
	.arm
	.fpu softvfp
	.type	eval_optimization_target_function, %function
eval_optimization_target_function:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #88
	str	r0, [fp, #-104]
	str	r1, [fp, #-108]
	ldr	r3, .L133
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	ldr	r3, [fp, #-104]
	ldr	r3, [r3, #12]
	cmp	r3, #3
	ble	.L99
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	b	.L100
.L101:
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L100:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L101
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-76]
	str	r1, [fp, #-72]
	ldr	r3, .L133+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L131
	ldr	r3, .L133+8
	ldr	r3, [r3]
	mov	r2, #18
	mov	r1, #1
	ldr	r0, .L133+12
	bl	fwrite
	mov	r0, #1
	bl	exit
.L131:
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L104
.L105:
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-104]
	ldr	r1, [fp, #-92]
	add	r1, r1, #4
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L104:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L105
	ldr	r3, [fp, #-104]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L99
	ldr	r3, [fp, #-104]
	add	r3, r3, #24
	ldmia	r3, {r2-r3}
	mov	r6, r2
	eor	r7, r3, #-2147483648
	ldr	r3, [fp, #-104]
	str	r6, [r3, #24]
	str	r7, [r3, #28]
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L107
.L108:
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r4, r2
	eor	r5, r3, #-2147483648
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	stm	r3, {r4-r5}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L107:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L108
.L99:
	ldr	r3, [fp, #-104]
	ldr	r3, [r3, #12]
	cmp	r3, #6
	ble	.L109
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	b	.L110
.L111:
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L110:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L111
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-76]
	str	r1, [fp, #-72]
	ldr	r3, .L133+4
	ldmia	r3, {r2-r3}
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L132
	ldr	r3, .L133+8
	ldr	r3, [r3]
	mov	r2, #21
	mov	r1, #1
	ldr	r0, .L133+16
	bl	fwrite
	mov	r0, #1
	bl	exit
.L132:
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L114
.L115:
	ldr	r2, [fp, #-104]
	ldr	r3, [fp, #-92]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-104]
	ldr	r1, [fp, #-92]
	add	r1, r1, #7
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L114:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L115
.L109:
	mov	r3, #0
	str	r3, [fp, #-96]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	b	.L116
.L121:
	ldr	r3, [fp, #-104]
	ldr	r3, [r3]
	ldr	r2, .L133+20
	ldr	r1, [r2]
	ldr	r2, [fp, #-96]
	lsl	r2, r2, #5
	add	r1, r1, r2
	sub	r2, fp, #60
	ldr	r0, [fp, #-104]
	blx	r3
	ldr	r3, [fp, #-104]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-88]
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	b	.L117
.L118:
	ldr	r3, .L133+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-88]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	sub	r2, fp, #20
	add	r3, r2, r3
	sub	r3, r3, #40
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L117:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L118
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L119
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
.L119:
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	ldr	r3, [fp, #-96]
	add	r3, r3, #1
	str	r3, [fp, #-96]
.L116:
	ldr	r3, .L133+24
	ldr	r3, [r3]
	ldr	r2, [fp, #-96]
	cmp	r2, r3
	blt	.L121
	ldr	r3, [fp, #-108]
	cmp	r3, #0
	beq	.L122
	ldr	r3, [fp, #-108]
	mov	r2, #0
	str	r2, [r3]
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	ldr	r3, .L133+28
	ldmia	r3, {r2-r3}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L122
	ldr	r3, [fp, #-108]
	mov	r2, #1
	str	r2, [r3]
.L122:
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	ldr	r1, .L133
	ldr	r0, [r1]
	ldr	r1, [fp, #-24]
	eors	r0, r1, r0
	mov	r1, #0
	beq	.L125
	bl	__stack_chk_fail
.L125:
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L134:
	.align	2
.L133:
	.word	.LC132
	.word	ToleranceSame
	.word	stderr
	.word	.LC130
	.word	.LC131
	.word	Atoms
	.word	AtomsCount
	.word	ToleranceFinal
	.size	eval_optimization_target_function, .-eval_optimization_target_function
	.align	2
	.global	get_params
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_params, %function
get_params:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r1, r3, #24
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	lsl	r3, r3, #3
	mov	r2, r3
	ldr	r0, [fp, #-12]
	bl	memcpy
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_params, .-get_params
	.align	2
	.global	set_params
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_params, %function
set_params:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r0, r3, #24
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	lsl	r3, r3, #3
	mov	r2, r3
	ldr	r1, [fp, #-12]
	bl	memcpy
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	set_params, .-set_params
	.section	.rodata
	.align	2
.LC133:
	.ascii	"Catastrophe in optimize_transformation_params()!\012"
	.ascii	"\000"
	.align	2
.LC134:
	.ascii	"            function value = %g\012\000"
	.align	2
.LC135:
	.ascii	"        function value is small enough\000"
	.align	2
.LC136:
	.ascii	"        no progress is made, stop optimization\000"
	.align	2
.LC137:
	.ascii	"        i = %d, grad = %12.6e, force = %12.6e\012\000"
	.align	2
.LC138:
	.ascii	"        interpolation base points: %g, %g, %g\012\000"
	.align	2
.LC139:
	.ascii	"        linear interpolation coefficients %g, %g\012"
	.ascii	"\000"
	.align	2
.LC140:
	.ascii	"        interpolated: %g\012\000"
	.global	__aeabi_dcmple
	.align	2
.LC141:
	.ascii	"        maximum number of optimization cycles made\000"
	.align	2
.LC142:
	.ascii	"        optimization completed after %d cycles with"
	.ascii	" f = %g\012\000"
	.align	2
.LC143:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	optimize_transformation_params
	.syntax unified
	.arm
	.fpu softvfp
	.type	optimize_transformation_params, %function
optimize_transformation_params:
	@ args = 0, pretend = 0, frame = 360
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #376
	str	r0, [fp, #-368]
	ldr	r3, .L221+112
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	mov	r3,#0
	ldr	r3, [fp, #-368]
	ldr	r3, [r3, #12]
	str	r3, [fp, #-344]
	mov	r3, #0
	str	r3, [fp, #-356]
	mov	r3, #0
	str	r3, [fp, #-348]
	ldr	r3, [fp, #-344]
	cmp	r3, #7
	ble	.L138
	ldr	r3, .L221
	ldr	r3, [r3]
	mov	r2, #49
	mov	r1, #1
	ldr	r0, .L221+4
	bl	fwrite
	mov	r0, #1
	bl	exit
.L138:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-340]
	str	r3, [fp, #-336]
.L197:
	sub	r3, fp, #340
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-316]
	str	r3, [fp, #-312]
	sub	r3, fp, #360
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	eval_optimization_target_function
	str	r0, [fp, #-340]
	str	r1, [fp, #-336]
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L139
	sub	r3, fp, #340
	ldmia	r3, {r2-r3}
	ldr	r0, .L221+8
	bl	printf
.L139:
	ldr	r3, [fp, #-360]
	cmp	r3, #0
	beq	.L140
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L217
	ldr	r0, .L221+12
	bl	puts
	b	.L217
.L140:
	ldr	r3, [fp, #-356]
	cmp	r3, #0
	ble	.L143
	sub	r3, fp, #316
	ldmia	r3, {r2-r3}
	sub	r1, fp, #340
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-380]
	bic	r3, r3, #-2147483648
	str	r3, [fp, #-376]
	ldr	r3, .L221+16
	ldmia	r3, {r2-r3}
	sub	r1, fp, #380
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L215
	mov	r3, #0
	str	r3, [fp, #-348]
	b	.L146
.L215:
	ldr	r3, [fp, #-348]
	add	r3, r3, #1
	str	r3, [fp, #-348]
.L146:
	ldr	r3, .L221+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-348]
	cmp	r2, r3
	blt	.L143
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L218
	ldr	r0, .L221+24
	bl	puts
	b	.L218
.L143:
	sub	r3, fp, #260
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	get_params
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L148
.L150:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r0-r1}
	ldr	r3, .L221+28
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	sub	r3, fp, #260
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	set_params
	mov	r1, #0
	ldr	r0, [fp, #-368]
	bl	eval_optimization_target_function
	str	r0, [fp, #-276]
	str	r1, [fp, #-272]
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r4-r5}
	ldr	r3, .L221+28
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	sub	r3, fp, #260
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	set_params
	mov	r1, #0
	ldr	r0, [fp, #-368]
	bl	eval_optimization_target_function
	str	r0, [fp, #-268]
	str	r1, [fp, #-264]
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r0-r1}
	ldr	r3, .L221+28
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	sub	r3, fp, #276
	ldmia	r3, {r2-r3}
	sub	r1, fp, #268
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, .L221+28
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #176
	stm	r1, {r2-r3}
	sub	r3, fp, #276
	ldmia	r3, {r2-r3}
	sub	r1, fp, #268
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #340
	ldmia	r1, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, .L221+28
	ldmia	r3, {r0-r1}
	ldr	r3, .L221+28
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #120
	stm	r1, {r2-r3}
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L149
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #176
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #120
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	ldr	r0, .L221+32
	bl	printf
.L149:
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L148:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L150
	mov	r3, #0
	str	r3, [fp, #-352]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-332]
	str	r3, [fp, #-328]
	b	.L151
.L158:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #120
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L152
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #120
	ldmia	r3, {r2-r3}
	mov	r8, r2
	eor	r9, r3, #-2147483648
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #120
	stm	r3, {r8-r9}
.L152:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #120
	ldmia	r3, {r0-r1}
	ldr	r2, .L221+36
	ldr	r3, .L221+40
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L154
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r1, r3, #120
	ldr	r2, .L221+36
	ldr	r3, .L221+40
	stm	r1, {r2-r3}
.L154:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #120
	ldmia	r3, {r0-r1}
	mov	r2, #0
	ldr	r3, .L221+44
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L156
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r1, r3, #120
	mov	r2, #0
	ldr	r3, .L221+44
	stm	r1, {r2-r3}
.L156:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #176
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-388]
	eor	r3, r3, #-2147483648
	str	r3, [fp, #-384]
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #120
	ldmia	r3, {r2-r3}
	sub	r1, fp, #388
	ldmia	r1, {r0-r1}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #64
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-332]
	str	r3, [fp, #-328]
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L151:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L158
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-332]
	str	r1, [fp, #-328]
	ldr	r3, .L221+48
	ldmia	r3, {r2-r3}
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L170
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L161
.L162:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r4-r5}
	ldr	r3, .L221+48
	ldmia	r3, {r0-r1}
	sub	r3, fp, #332
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #64
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L161:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L162
	ldr	r3, .L221+48
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-332]
	str	r3, [fp, #-328]
.L170:
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L163
.L164:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L163:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L164
	sub	r3, fp, #260
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	set_params
	mov	r1, #0
	ldr	r0, [fp, #-368]
	bl	eval_optimization_target_function
	str	r0, [fp, #-308]
	str	r1, [fp, #-304]
	sub	r3, fp, #340
	ldmia	r3, {r2-r3}
	sub	r1, fp, #308
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	bne	.L219
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L168
.L169:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #64
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L168:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L169
	sub	r3, fp, #260
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	set_params
	mov	r2, #0
	mov	r3, #1073741824
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-332]
	str	r3, [fp, #-328]
	ldr	r3, .L221+88
	ldmia	r3, {r2-r3}
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L170
	b	.L167
.L219:
	nop
.L167:
	ldr	r3, .L221+88
	ldmia	r3, {r2-r3}
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L171
	ldr	r3, .L221+48
	ldmia	r3, {r0-r1}
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L171
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L174
.L175:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L174:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L175
	sub	r3, fp, #260
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	set_params
	mov	r1, #0
	ldr	r0, [fp, #-368]
	bl	eval_optimization_target_function
	str	r0, [fp, #-300]
	str	r1, [fp, #-296]
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L176
	sub	r3, fp, #300
	ldmia	r3, {r2-r3}
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #308
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #340
	ldmia	r3, {r2-r3}
	ldr	r0, .L221+52
	bl	printf
.L176:
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L177
.L178:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L177:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L178
	mov	r2, #0
	ldr	r3, .L221+56
	sub	r1, fp, #340
	ldmia	r1, {r0-r1}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	sub	r3, fp, #300
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	mov	r2, #0
	ldr	r3, .L221+60
	sub	r1, fp, #308
	ldmia	r1, {r0-r1}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-292]
	str	r3, [fp, #-288]
	sub	r3, fp, #300
	ldmia	r3, {r2-r3}
	sub	r1, fp, #340
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #308
	ldmia	r1, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-324]
	str	r3, [fp, #-320]
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L179
	sub	r3, fp, #324
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #292
	ldmia	r3, {r2-r3}
	ldr	r0, .L221+64
	bl	printf
.L179:
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #324
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L180
	ldr	r6, [fp, #-292]
	ldr	r3, [fp, #-288]
	eor	r7, r3, #-2147483648
	sub	r1, fp, #324
	ldmia	r1, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-284]
	str	r3, [fp, #-280]
	ldr	r2, .L221+68
	ldr	r3, .L221+72
	sub	r1, fp, #284
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L182
	ldr	r2, .L221+76
	ldr	r3, .L221+80
	sub	r1, fp, #284
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L182
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L185
	sub	r3, fp, #284
	ldmia	r3, {r2-r3}
	ldr	r0, .L221+84
	bl	printf
.L185:
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L186
.L187:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r0-r1}
	sub	r3, fp, #284
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L186:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L187
	b	.L180
.L182:
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-324]
	str	r3, [fp, #-320]
.L180:
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #324
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	beq	.L188
	sub	r3, fp, #308
	ldmia	r3, {r2-r3}
	sub	r1, fp, #300
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L216
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L192
.L193:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L192:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L193
	b	.L188
.L216:
	mov	r3, #0
	str	r3, [fp, #-352]
	b	.L194
.L222:
	.align	2
.L221:
	.word	stderr
	.word	.LC133
	.word	.LC134
	.word	.LC135
	.word	OptChangeThreshold
	.word	OptChangeHits
	.word	.LC136
	.word	GradientStep
	.word	.LC137
	.word	-755914244
	.word	1062232653
	.word	1083129856
	.word	MaxOptStep
	.word	.LC138
	.word	1074790400
	.word	1074266112
	.word	.LC139
	.word	-1717986918
	.word	1070176665
	.word	-858993459
	.word	1073532108
	.word	.LC140
	.word	MinOptStep
	.word	BadOptimization
	.word	verbose
	.word	MaxOptCycles
	.word	.LC141
	.word	.LC142
	.word	.LC143
.L195:
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #232
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-352]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-352]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #232
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-352]
	add	r3, r3, #1
	str	r3, [fp, #-352]
.L194:
	ldr	r2, [fp, #-352]
	ldr	r3, [fp, #-344]
	cmp	r2, r3
	blt	.L195
.L188:
	sub	r3, fp, #260
	mov	r1, r3
	ldr	r0, [fp, #-368]
	bl	set_params
.L171:
	ldr	r3, .L221+88
	ldmia	r3, {r2-r3}
	sub	r1, fp, #332
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L142
	ldr	r3, [fp, #-356]
	add	r3, r3, #1
	str	r3, [fp, #-356]
	ldr	r3, .L221+100
	ldr	r3, [r3]
	ldr	r2, [fp, #-356]
	cmp	r2, r3
	blt	.L197
	b	.L142
.L217:
	nop
	b	.L142
.L218:
	nop
.L142:
	mov	r1, #0
	ldr	r0, [fp, #-368]
	bl	eval_optimization_target_function
	str	r0, [fp, #-340]
	str	r1, [fp, #-336]
	ldr	r3, .L221+100
	ldr	r3, [r3]
	ldr	r2, [fp, #-356]
	cmp	r2, r3
	blt	.L198
	ldr	r3, .L221+92
	mov	r2, #1
	str	r2, [r3]
.L198:
	ldr	r3, .L221+96
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L220
	ldr	r3, .L221+100
	ldr	r3, [r3]
	ldr	r2, [fp, #-356]
	cmp	r2, r3
	blt	.L200
	ldr	r0, .L221+104
	bl	puts
.L200:
	sub	r3, fp, #340
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-356]
	ldr	r0, .L221+108
	bl	printf
.L220:
	nop
	ldr	r3, .L221+112
	ldr	r2, [r3]
	ldr	r3, [fp, #-32]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L201
	bl	__stack_chk_fail
.L201:
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
	.size	optimize_transformation_params, .-optimize_transformation_params
	.section	.rodata
	.align	2
.LC144:
	.ascii	"        no transformation correspondence table can "
	.ascii	"be constructed\000"
	.align	2
.LC145:
	.ascii	"        transformation is identical to plane %d\012"
	.ascii	"\000"
	.align	2
.LC146:
	.ascii	"        transformation is identical to inversion ce"
	.ascii	"nter %d\012\000"
	.align	2
.LC147:
	.ascii	"        transformation is identical to normal axis "
	.ascii	"%d\012\000"
	.align	2
.LC148:
	.ascii	"        transformation is identical to improper axi"
	.ascii	"s %d\012\000"
	.align	2
.LC149:
	.ascii	"        incorrect transformation order\000"
	.align	2
.LC150:
	.ascii	"        refined transformation does not pass the nu"
	.ascii	"meric threshold\000"
	.text
	.align	2
	.global	refine_symmetry_element
	.syntax unified
	.arm
	.fpu softvfp
	.type	refine_symmetry_element, %function
refine_symmetry_element:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L224
	ldr	r0, [fp, #-16]
	bl	establish_pairs
	mov	r3, r0
	cmp	r3, #0
	bge	.L224
	ldr	r3, .L247
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247
	str	r3, [r2]
	ldr	r3, .L247+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L225
	ldr	r0, .L247+8
	bl	puts
.L225:
	mvn	r3, #0
	b	.L226
.L224:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L227
.L230:
	ldr	r3, .L247+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	same_transform
	mov	r3, r0
	cmp	r3, #0
	beq	.L228
	ldr	r3, .L247+16
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247+16
	str	r3, [r2]
	ldr	r3, .L247+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L229
	ldr	r1, [fp, #-8]
	ldr	r0, .L247+20
	bl	printf
.L229:
	mvn	r3, #0
	b	.L226
.L228:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L227:
	ldr	r3, .L247+24
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L230
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L231
.L234:
	ldr	r3, .L247+28
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	same_transform
	mov	r3, r0
	cmp	r3, #0
	beq	.L232
	ldr	r3, .L247+16
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247+16
	str	r3, [r2]
	ldr	r3, .L247+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L233
	ldr	r1, [fp, #-8]
	ldr	r0, .L247+32
	bl	printf
.L233:
	mvn	r3, #0
	b	.L226
.L232:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L231:
	ldr	r3, .L247+36
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L234
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L235
.L238:
	ldr	r3, .L247+40
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	same_transform
	mov	r3, r0
	cmp	r3, #0
	beq	.L236
	ldr	r3, .L247+16
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247+16
	str	r3, [r2]
	ldr	r3, .L247+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L237
	ldr	r1, [fp, #-8]
	ldr	r0, .L247+44
	bl	printf
.L237:
	mvn	r3, #0
	b	.L226
.L236:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L235:
	ldr	r3, .L247+48
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L238
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L239
.L242:
	ldr	r3, .L247+52
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	same_transform
	mov	r3, r0
	cmp	r3, #0
	beq	.L240
	ldr	r3, .L247+16
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247+16
	str	r3, [r2]
	ldr	r3, .L247+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L241
	ldr	r1, [fp, #-8]
	ldr	r0, .L247+56
	bl	printf
.L241:
	mvn	r3, #0
	b	.L226
.L240:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L239:
	ldr	r3, .L247+60
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L242
	ldr	r0, [fp, #-16]
	bl	check_transform_order
	mov	r3, r0
	cmp	r3, #0
	bge	.L243
	ldr	r3, .L247+64
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247+64
	str	r3, [r2]
	ldr	r3, .L247+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L244
	ldr	r0, .L247+68
	bl	puts
.L244:
	mvn	r3, #0
	b	.L226
.L243:
	ldr	r0, [fp, #-16]
	bl	optimize_transformation_params
	ldr	r0, [fp, #-16]
	bl	check_transform_quality
	mov	r3, r0
	cmp	r3, #0
	bge	.L245
	ldr	r3, .L247+72
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247+72
	str	r3, [r2]
	ldr	r3, .L247+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L246
	ldr	r0, .L247+76
	bl	puts
.L246:
	mvn	r3, #0
	b	.L226
.L245:
	ldr	r3, .L247+80
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L247+80
	str	r3, [r2]
	mov	r3, #0
.L226:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L248:
	.align	2
.L247:
	.word	StatPairs
	.word	verbose
	.word	.LC144
	.word	Planes
	.word	StatDups
	.word	.LC145
	.word	PlanesCount
	.word	InversionCenters
	.word	.LC146
	.word	InversionCentersCount
	.word	NormalAxes
	.word	.LC147
	.word	NormalAxesCount
	.word	ImproperAxes
	.word	.LC148
	.word	ImproperAxesCount
	.word	StatOrder
	.word	.LC149
	.word	StatOpt
	.word	.LC150
	.word	StatAccept
	.size	refine_symmetry_element, .-refine_symmetry_element
	.align	2
	.global	mirror_atom
	.syntax unified
	.arm
	.fpu softvfp
	.type	mirror_atom, %function
mirror_atom:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	add	r3, r3, #24
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	b	.L250
.L251:
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L250:
	ldr	r3, [fp, #-24]
	cmp	r3, #2
	ble	.L251
	ldr	r3, [fp, #-36]
	ldr	r2, [r3]
	ldr	r3, [fp, #-40]
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L252
.L253:
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r4-r5}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-40]
	ldr	r1, [fp, #-24]
	add	r1, r1, #1
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L252:
	ldr	r3, [fp, #-24]
	cmp	r3, #2
	ble	.L253
	nop
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	mirror_atom, .-mirror_atom
	.section	.rodata
	.align	2
.LC151:
	.ascii	"Trying mirror plane for atoms %d,%d\012\000"
	.align	2
.LC152:
	.ascii	"Atoms %d and %d coincide (r = %g)\012\000"
	.align	2
.LC153:
	.ascii	"    initial plane is at %g from the origin\012\000"
	.align	2
.LC154:
	.ascii	"    refinement failed for the plane\000"
	.align	2
.LC155:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	init_mirror_plane
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_mirror_plane, %function
init_mirror_plane:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #96
	str	r0, [fp, #-104]
	str	r1, [fp, #-108]
	ldr	r3, .L275
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	bl	alloc_symmetry_element
	str	r0, [fp, #-96]
	ldr	r3, .L275+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L255
	ldr	r2, [fp, #-108]
	ldr	r1, [fp, #-104]
	ldr	r0, .L275+8
	bl	printf
.L255:
	ldr	r3, .L275+12
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L275+12
	str	r3, [r2]
	ldr	r3, [fp, #-96]
	ldr	r2, .L275+16
	str	r2, [r3]
	ldr	r3, [fp, #-96]
	mov	r2, #2
	str	r2, [r3, #8]
	ldr	r3, [fp, #-96]
	mov	r2, #4
	str	r2, [r3, #12]
	mov	r3, #0
	str	r3, [fp, #-100]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-92]
	str	r3, [fp, #-88]
	b	.L256
.L257:
	ldr	r3, .L275+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-104]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L275+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-100]
	lsl	r1, r1, #3
	sub	r0, fp, #20
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, .L275+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-104]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L275+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-100]
	lsl	r1, r1, #3
	sub	r0, fp, #20
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #3
	sub	r2, fp, #20
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #3
	sub	r2, fp, #20
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-92]
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	str	r3, [fp, #-100]
.L256:
	ldr	r3, [fp, #-100]
	cmp	r3, #2
	ble	.L257
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-92]
	str	r1, [fp, #-88]
	ldr	r3, .L275+24
	ldmia	r3, {r2-r3}
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L274
	ldr	r3, .L275+28
	ldr	r0, [r3]
	sub	r3, fp, #92
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	ldr	r3, [fp, #-108]
	ldr	r2, [fp, #-104]
	ldr	r1, .L275+32
	bl	fprintf
	mov	r0, #1
	bl	exit
.L274:
	mov	r3, #0
	str	r3, [fp, #-100]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	b	.L260
.L261:
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #3
	sub	r2, fp, #20
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r0-r1}
	sub	r3, fp, #92
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-96]
	ldr	r1, [fp, #-100]
	add	r1, r1, #4
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #3
	sub	r2, fp, #20
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-100]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	str	r3, [fp, #-100]
.L260:
	ldr	r3, [fp, #-100]
	cmp	r3, #2
	ble	.L261
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L262
	ldr	r4, [fp, #-84]
	ldr	r3, [fp, #-80]
	eor	r5, r3, #-2147483648
	str	r4, [fp, #-84]
	str	r5, [fp, #-80]
	mov	r3, #0
	str	r3, [fp, #-100]
	b	.L264
.L265:
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-100]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r6, r2
	eor	r7, r3, #-2147483648
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-100]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	stm	r3, {r6-r7}
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	str	r3, [fp, #-100]
.L264:
	ldr	r3, [fp, #-100]
	cmp	r3, #2
	ble	.L265
.L262:
	ldr	r1, [fp, #-96]
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	str	r2, [r1, #24]
	str	r3, [r1, #28]
	ldr	r3, .L275+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L266
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	ldr	r0, .L275+36
	bl	printf
.L266:
	mov	r1, #1
	ldr	r0, [fp, #-96]
	bl	refine_symmetry_element
	mov	r3, r0
	cmp	r3, #0
	bge	.L267
	ldr	r3, .L275+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L268
	ldr	r0, .L275+40
	bl	puts
.L268:
	ldr	r0, [fp, #-96]
	bl	destroy_symmetry_element
	mov	r3, #0
	b	.L270
.L267:
	ldr	r3, [fp, #-96]
.L270:
	ldr	r2, .L275
	ldr	r1, [r2]
	ldr	r2, [fp, #-24]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L271
	bl	__stack_chk_fail
.L271:
	mov	r0, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L276:
	.align	2
.L275:
	.word	.LC155
	.word	verbose
	.word	.LC151
	.word	StatTotal
	.word	mirror_atom
	.word	Atoms
	.word	ToleranceSame
	.word	stderr
	.word	.LC152
	.word	.LC153
	.word	.LC154
	.size	init_mirror_plane, .-init_mirror_plane
	.section	.rodata
	.align	2
.LC156:
	.ascii	"Trying whole-molecule mirror plane\000"
	.global	__aeabi_dcmpge
	.align	2
.LC157:
	.ascii	"Catastrophe in init_ultimate_plane(): %g, %g and %g"
	.ascii	" have no ordering!\012\000"
	.align	2
.LC158:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	init_ultimate_plane
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_ultimate_plane, %function
init_ultimate_plane:
	@ args = 0, pretend = 0, frame = 160
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #176
	ldr	r3, .L329
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	bl	alloc_symmetry_element
	str	r0, [fp, #-152]
	ldr	r3, .L329+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L278
	ldr	r0, .L329+8
	bl	puts
.L278:
	ldr	r3, .L329+12
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L329+12
	str	r3, [r2]
	ldr	r3, [fp, #-152]
	ldr	r2, .L329+16
	str	r2, [r3]
	ldr	r3, [fp, #-152]
	mov	r2, #1
	str	r2, [r3, #8]
	ldr	r3, [fp, #-152]
	mov	r2, #4
	str	r2, [r3, #12]
	mov	r3, #0
	str	r3, [fp, #-156]
	b	.L279
.L280:
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r1, r3, #56
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-156]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #80
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-156]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #104
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L279:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L280
	mov	r2, #0
	ldr	r3, .L329+20
	str	r2, [fp, #-116]
	str	r3, [fp, #-112]
	mov	r2, #0
	ldr	r3, .L329+20
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	mov	r2, #0
	ldr	r3, .L329+20
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	mov	r3, #1
	str	r3, [fp, #-164]
	b	.L281
.L290:
	mov	r3, #0
	str	r3, [fp, #-160]
	b	.L282
.L289:
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-148]
	str	r3, [fp, #-144]
	b	.L283
.L284:
	ldr	r3, .L329+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-164]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L329+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-160]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-156]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #148
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-148]
	str	r3, [fp, #-144]
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L283:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L284
	sub	r1, fp, #148
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-148]
	str	r1, [fp, #-144]
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-132]
	str	r3, [fp, #-128]
	sub	r3, fp, #132
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-140]
	str	r3, [fp, #-136]
	b	.L285
.L286:
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #148
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-156]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #104
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #140
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-140]
	str	r3, [fp, #-136]
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #132
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-132]
	str	r3, [fp, #-128]
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L285:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L286
	mov	r3, #0
	str	r3, [fp, #-156]
	b	.L287
.L288:
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #104
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #140
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-156]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #104
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #132
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-156]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #80
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-156]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L287:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L288
	ldr	r3, [fp, #-160]
	add	r3, r3, #1
	str	r3, [fp, #-160]
.L282:
	ldr	r2, [fp, #-160]
	ldr	r3, [fp, #-164]
	cmp	r2, r3
	blt	.L289
	ldr	r3, [fp, #-164]
	add	r3, r3, #1
	str	r3, [fp, #-164]
.L281:
	ldr	r3, .L329+28
	ldr	r3, [r3]
	ldr	r2, [fp, #-164]
	cmp	r2, r3
	blt	.L290
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-132]
	str	r3, [fp, #-128]
	sub	r3, fp, #132
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-140]
	str	r3, [fp, #-136]
	b	.L291
.L292:
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #104
	ldmia	r3, {r2-r3}
	sub	r1, fp, #140
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-140]
	str	r3, [fp, #-136]
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	sub	r1, fp, #132
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-132]
	str	r3, [fp, #-128]
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L291:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L292
	mov	r3, #0
	str	r3, [fp, #-168]
	sub	r3, fp, #132
	ldmia	r3, {r2-r3}
	sub	r1, fp, #140
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpge
	mov	r3, r0
	cmp	r3, #0
	beq	.L293
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	sub	r1, fp, #140
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpge
	mov	r3, r0
	cmp	r3, #0
	beq	.L293
	sub	r3, fp, #116
	str	r3, [fp, #-168]
.L293:
	sub	r3, fp, #140
	ldmia	r3, {r2-r3}
	sub	r1, fp, #132
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpge
	mov	r3, r0
	cmp	r3, #0
	beq	.L296
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	sub	r1, fp, #132
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpge
	mov	r3, r0
	cmp	r3, #0
	beq	.L296
	sub	r3, fp, #92
	str	r3, [fp, #-168]
.L296:
	sub	r3, fp, #140
	ldmia	r3, {r2-r3}
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpge
	mov	r3, r0
	cmp	r3, #0
	beq	.L299
	sub	r3, fp, #132
	ldmia	r3, {r2-r3}
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpge
	mov	r3, r0
	cmp	r3, #0
	beq	.L299
	sub	r3, fp, #68
	str	r3, [fp, #-168]
.L299:
	ldr	r3, [fp, #-168]
	cmp	r3, #0
	bne	.L302
	ldr	r3, .L329+32
	ldr	r0, [r3]
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	sub	r3, fp, #132
	ldmia	r3, {r2-r3}
	stm	sp, {r2-r3}
	sub	r3, fp, #140
	ldmia	r3, {r2-r3}
	ldr	r1, .L329+36
	bl	fprintf
	mov	r0, #1
	bl	exit
.L302:
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-148]
	str	r3, [fp, #-144]
	b	.L303
.L304:
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-168]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-168]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #148
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-148]
	str	r3, [fp, #-144]
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L303:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L304
	sub	r1, fp, #148
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-148]
	str	r1, [fp, #-144]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #148
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L328
	mov	r3, #0
	str	r3, [fp, #-156]
	b	.L307
.L308:
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-168]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #148
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-152]
	ldr	r1, [fp, #-156]
	add	r1, r1, #4
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L307:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L308
	b	.L309
.L328:
	mov	r3, #1
	str	r3, [fp, #-156]
	b	.L310
.L311:
	ldr	r2, [fp, #-152]
	ldr	r3, [fp, #-156]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r1, r2, r3
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L310:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L311
	ldr	r1, [fp, #-152]
	mov	r2, #0
	ldr	r3, .L329+20
	str	r2, [r1, #32]
	str	r3, [r1, #36]
.L309:
	mov	r3, #0
	str	r3, [fp, #-156]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-148]
	str	r3, [fp, #-144]
	b	.L312
.L313:
	ldr	r2, .L329+40
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-152]
	ldr	r3, [fp, #-156]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #148
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-148]
	str	r3, [fp, #-144]
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L312:
	ldr	r3, [fp, #-156]
	cmp	r3, #2
	ble	.L313
	ldr	r1, [fp, #-152]
	sub	r3, fp, #148
	ldmia	r3, {r2-r3}
	str	r2, [r1, #24]
	str	r3, [r1, #28]
	mov	r3, #0
	str	r3, [fp, #-156]
	b	.L314
.L315:
	ldr	r3, [fp, #-152]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-156]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-156]
	str	r2, [r3]
	ldr	r3, [fp, #-156]
	add	r3, r3, #1
	str	r3, [fp, #-156]
.L314:
	ldr	r3, .L329+28
	ldr	r3, [r3]
	ldr	r2, [fp, #-156]
	cmp	r2, r3
	blt	.L315
	mov	r1, #0
	ldr	r0, [fp, #-152]
	bl	refine_symmetry_element
	mov	r3, r0
	cmp	r3, #0
	bge	.L316
	ldr	r3, .L329+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L317
	ldr	r0, .L329+44
	bl	puts
.L317:
	ldr	r0, [fp, #-152]
	bl	destroy_symmetry_element
	mov	r3, #0
	b	.L319
.L316:
	ldr	r3, [fp, #-152]
.L319:
	ldr	r2, .L329
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L320
	bl	__stack_chk_fail
.L320:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L330:
	.align	2
.L329:
	.word	.LC158
	.word	verbose
	.word	.LC156
	.word	StatTotal
	.word	mirror_atom
	.word	1072693248
	.word	Atoms
	.word	AtomsCount
	.word	stderr
	.word	.LC157
	.word	CenterOfSomething
	.word	.LC154
	.size	init_ultimate_plane, .-init_ultimate_plane
	.align	2
	.global	invert_atom
	.syntax unified
	.arm
	.fpu softvfp
	.type	invert_atom, %function
invert_atom:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L332
.L333:
	ldr	r3, [fp, #-16]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-24]
	ldr	r1, [fp, #-8]
	add	r1, r1, #1
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L332:
	ldr	r3, [fp, #-8]
	cmp	r3, #2
	ble	.L333
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	invert_atom, .-invert_atom
	.section	.rodata
	.align	2
.LC159:
	.ascii	"Trying inversion center at the center of something\000"
	.align	2
.LC160:
	.ascii	"    initial inversion center is at %g from the orig"
	.ascii	"in\012\000"
	.align	2
.LC161:
	.ascii	"    refinement failed for the inversion center\000"
	.text
	.align	2
	.global	init_inversion_center
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_inversion_center, %function
init_inversion_center:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	bl	alloc_symmetry_element
	str	r0, [fp, #-16]
	ldr	r3, .L351
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L335
	ldr	r0, .L351+4
	bl	puts
.L335:
	ldr	r3, .L351+8
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L351+8
	str	r3, [r2]
	ldr	r3, [fp, #-16]
	ldr	r2, .L351+12
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	mov	r2, #2
	str	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	mov	r2, #4
	str	r2, [r3, #12]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	b	.L336
.L337:
	ldr	r2, .L351+16
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L351+16
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L336:
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	ble	.L337
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L350
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L340
.L341:
	ldr	r2, .L351+16
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-16]
	ldr	r1, [fp, #-20]
	add	r1, r1, #4
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L340:
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	ble	.L341
	b	.L342
.L350:
	ldr	r1, [fp, #-16]
	mov	r2, #0
	ldr	r3, .L351+20
	str	r2, [r1, #32]
	str	r3, [r1, #36]
	mov	r3, #1
	str	r3, [fp, #-20]
	b	.L343
.L344:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r1, r2, r3
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L343:
	ldr	r3, [fp, #-20]
	cmp	r3, #2
	ble	.L344
.L342:
	ldr	r1, [fp, #-16]
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	str	r2, [r1, #24]
	str	r3, [r1, #28]
	ldr	r3, .L351
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L345
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	ldr	r0, .L351+24
	bl	printf
.L345:
	mov	r1, #1
	ldr	r0, [fp, #-16]
	bl	refine_symmetry_element
	mov	r3, r0
	cmp	r3, #0
	bge	.L346
	ldr	r3, .L351
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L347
	ldr	r0, .L351+28
	bl	puts
.L347:
	ldr	r0, [fp, #-16]
	bl	destroy_symmetry_element
	mov	r3, #0
	b	.L348
.L346:
	ldr	r3, [fp, #-16]
.L348:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L352:
	.align	2
.L351:
	.word	verbose
	.word	.LC159
	.word	StatTotal
	.word	invert_atom
	.word	CenterOfSomething
	.word	1072693248
	.word	.LC160
	.word	.LC161
	.size	init_inversion_center, .-init_inversion_center
	.global	__aeabi_i2d
	.section	.rodata
	.align	2
.LC162:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	rotate_atom
	.syntax unified
	.arm
	.fpu softvfp
	.type	rotate_atom, %function
rotate_atom:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #184
	str	r0, [fp, #-184]
	str	r1, [fp, #-188]
	str	r2, [fp, #-192]
	ldr	r3, .L369
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-184]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	beq	.L354
	ldr	r3, [fp, #-184]
	ldr	r3, [r3, #8]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L369+4
	ldr	r1, .L369+8
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	b	.L355
.L354:
	mov	r2, #0
	ldr	r3, .L369+12
.L355:
	str	r2, [fp, #-164]
	str	r3, [fp, #-160]
	sub	r1, fp, #164
	ldmia	r1, {r0-r1}
	bl	sin
	str	r0, [fp, #-156]
	str	r1, [fp, #-152]
	sub	r1, fp, #164
	ldmia	r1, {r0-r1}
	bl	cos
	str	r0, [fp, #-148]
	str	r1, [fp, #-144]
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L356
.L357:
	ldr	r2, [fp, #-188]
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-184]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #128
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L356:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L357
	mov	r3, #0
	str	r3, [fp, #-176]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-172]
	str	r3, [fp, #-168]
	b	.L358
.L359:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #128
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #172
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-172]
	str	r3, [fp, #-168]
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L358:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L359
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L360
.L361:
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #172
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #80
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L360:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L361
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L362
.L363:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #128
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L362:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L363
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #72
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #72
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L364
.L365:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r0-r1}
	sub	r3, fp, #148
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #156
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #104
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L364:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L365
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L366
.L367:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #104
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-184]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-192]
	ldr	r1, [fp, #-176]
	add	r1, r1, #1
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L366:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L367
	ldr	r3, [fp, #-188]
	ldr	r2, [r3]
	ldr	r3, [fp, #-192]
	str	r2, [r3]
	nop
	ldr	r3, .L369
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L368
	bl	__stack_chk_fail
.L368:
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L370:
	.align	2
.L369:
	.word	.LC162
	.word	1413754136
	.word	1075388923
	.word	1072693248
	.size	rotate_atom, .-rotate_atom
	.section	.rodata
	.align	2
.LC163:
	.ascii	"Trying infinity axis\000"
	.align	2
.LC164:
	.ascii	"    refinement failed for the infinity axis\000"
	.align	2
.LC165:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	init_ultimate_axis
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_ultimate_axis, %function
init_ultimate_axis:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	ldr	r3, .L417
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	bl	alloc_symmetry_element
	str	r0, [fp, #-72]
	ldr	r3, .L417+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L372
	ldr	r0, .L417+8
	bl	puts
.L372:
	ldr	r3, .L417+12
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L417+12
	str	r3, [r2]
	ldr	r3, [fp, #-72]
	ldr	r2, .L417+16
	str	r2, [r3]
	ldr	r3, [fp, #-72]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-72]
	mov	r2, #7
	str	r2, [r3, #12]
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L373
.L374:
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r1, r3, #56
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L373:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L374
	mov	r3, #0
	str	r3, [fp, #-80]
	b	.L375
.L385:
	mov	r3, #0
	str	r3, [fp, #-76]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	b	.L376
.L377:
	ldr	r3, .L417+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-80]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L417+24
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-76]
	lsl	r1, r1, #3
	sub	r0, fp, #4
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L376:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L377
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpge
	mov	r3, r0
	cmp	r3, #0
	beq	.L414
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L380
.L381:
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-76]
	lsl	r1, r1, #3
	sub	r0, fp, #4
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L380:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L381
	b	.L382
.L414:
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L383
.L384:
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-76]
	lsl	r1, r1, #3
	sub	r0, fp, #4
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L383:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L384
.L382:
	ldr	r3, [fp, #-80]
	add	r3, r3, #1
	str	r3, [fp, #-80]
.L375:
	ldr	r3, .L417+28
	ldr	r3, [r3]
	ldr	r2, [fp, #-80]
	cmp	r2, r3
	blt	.L385
	mov	r3, #0
	str	r3, [fp, #-76]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	b	.L386
.L387:
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L386:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L387
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L415
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L390
.L391:
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r0-r1}
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-76]
	lsl	r1, r1, #3
	sub	r0, fp, #4
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L390:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L391
	b	.L392
.L415:
	mov	r2, #0
	ldr	r3, .L417+32
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
.L392:
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L393
.L394:
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-72]
	ldr	r1, [fp, #-76]
	add	r1, r1, #7
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L393:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L394
	mov	r3, #0
	str	r3, [fp, #-76]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	b	.L395
.L396:
	ldr	r2, .L417+24
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L395:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L396
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L416
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L399
.L400:
	ldr	r2, .L417+24
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-72]
	ldr	r1, [fp, #-76]
	add	r1, r1, #4
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L399:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L400
	b	.L401
.L416:
	mov	r3, #1
	str	r3, [fp, #-76]
	b	.L402
.L403:
	ldr	r2, [fp, #-72]
	ldr	r3, [fp, #-76]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r1, r2, r3
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L402:
	ldr	r3, [fp, #-76]
	cmp	r3, #2
	ble	.L403
	ldr	r1, [fp, #-72]
	mov	r2, #0
	ldr	r3, .L417+32
	str	r2, [r1, #32]
	str	r3, [r1, #36]
.L401:
	ldr	r1, [fp, #-72]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	str	r2, [r1, #24]
	str	r3, [r1, #28]
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L404
.L405:
	ldr	r3, [fp, #-72]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-76]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-76]
	str	r2, [r3]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L404:
	ldr	r3, .L417+28
	ldr	r3, [r3]
	ldr	r2, [fp, #-76]
	cmp	r2, r3
	blt	.L405
	mov	r1, #0
	ldr	r0, [fp, #-72]
	bl	refine_symmetry_element
	mov	r3, r0
	cmp	r3, #0
	bge	.L406
	ldr	r3, .L417+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L407
	ldr	r0, .L417+36
	bl	puts
.L407:
	ldr	r0, [fp, #-72]
	bl	destroy_symmetry_element
	mov	r3, #0
	b	.L409
.L406:
	ldr	r3, [fp, #-72]
.L409:
	ldr	r2, .L417
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L410
	bl	__stack_chk_fail
.L410:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L418:
	.align	2
.L417:
	.word	.LC165
	.word	verbose
	.word	.LC163
	.word	StatTotal
	.word	rotate_atom
	.word	Atoms
	.word	CenterOfSomething
	.word	AtomsCount
	.word	1072693248
	.word	.LC164
	.size	init_ultimate_axis, .-init_ultimate_axis
	.section	.rodata
	.align	2
.LC166:
	.ascii	"Trying c2 axis for the pair (%d,%d) with the suppor"
	.ascii	"t (%g,%g,%g)\012\000"
	.align	2
.LC167:
	.ascii	"    Support can't actually define a rotation axis\000"
	.align	2
.LC168:
	.ascii	"    c2 is underdefined, but there is a molecular pl"
	.ascii	"ane\000"
	.align	2
.LC169:
	.ascii	"    c2 is underdefined, trying random direction\000"
	.align	2
.LC170:
	.ascii	"    refinement failed for the c2 axis\000"
	.align	2
.LC171:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	init_c2_axis
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_c2_axis, %function
init_c2_axis:
	@ args = 0, pretend = 0, frame = 104
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #128
	str	r0, [fp, #-96]
	str	r1, [fp, #-100]
	str	r2, [fp, #-104]
	ldr	r3, .L469
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	mov	r3,#0
	ldr	r3, .L469+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L420
	ldr	r3, [fp, #-104]
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-104]
	add	r3, r3, #8
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-104]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	str	r2, [sp, #16]
	str	r3, [sp, #20]
	str	r4, [sp, #8]
	str	r5, [sp, #12]
	stm	sp, {r0-r1}
	ldr	r2, [fp, #-100]
	ldr	r1, [fp, #-96]
	ldr	r0, .L469+8
	bl	printf
.L420:
	ldr	r3, .L469+12
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L469+12
	str	r3, [r2]
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	b	.L421
.L422:
	ldr	r3, .L469+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-104]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	ldr	r3, .L469+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-104]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L421:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L422
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-84]
	str	r1, [fp, #-80]
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-76]
	str	r1, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	bic	r7, r3, #-2147483648
	ldr	r3, .L469+20
	ldmia	r3, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L465
	ldr	r3, .L469+24
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L469+24
	str	r3, [r2]
	ldr	r3, .L469+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L425
	ldr	r0, .L469+28
	bl	puts
.L425:
	mov	r3, #0
	b	.L459
.L465:
	bl	alloc_symmetry_element
	str	r0, [fp, #-88]
	ldr	r3, [fp, #-88]
	ldr	r2, .L469+32
	str	r2, [r3]
	ldr	r3, [fp, #-88]
	mov	r2, #2
	str	r2, [r3, #8]
	ldr	r3, [fp, #-88]
	mov	r2, #7
	str	r2, [r3, #12]
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	b	.L427
.L428:
	ldr	r2, .L469+36
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L469+36
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L427:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L428
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L466
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L431
.L432:
	ldr	r2, .L469+36
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-88]
	ldr	r1, [fp, #-92]
	add	r1, r1, #4
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L431:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L432
	b	.L433
.L466:
	ldr	r1, [fp, #-88]
	mov	r2, #0
	ldr	r3, .L469+40
	str	r2, [r1, #32]
	str	r3, [r1, #36]
	mov	r3, #1
	str	r3, [fp, #-92]
	b	.L434
.L435:
	ldr	r2, [fp, #-88]
	ldr	r3, [fp, #-92]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r1, r2, r3
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L434:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L435
.L433:
	ldr	r1, [fp, #-88]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	str	r2, [r1, #24]
	str	r3, [r1, #28]
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	b	.L436
.L437:
	ldr	r3, .L469+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L469+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-104]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-92]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L436:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L437
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	ldr	r3, .L469+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	beq	.L467
	ldr	r3, .L469+44
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L440
	ldr	r3, .L469+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L441
	ldr	r0, .L469+48
	bl	puts
.L441:
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L442
.L443:
	ldr	r3, .L469+44
	ldr	r2, [r3]
	ldr	r3, [fp, #-92]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	ldr	r0, [fp, #-88]
	ldr	r1, [fp, #-92]
	add	r1, r1, #7
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L442:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L443
	b	.L444
.L440:
	ldr	r3, .L469+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L445
	ldr	r0, .L469+52
	bl	puts
.L445:
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L446
.L447:
	ldr	r3, .L469+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L469+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-92]
	lsl	r1, r1, #3
	sub	r0, fp, #28
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L446:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L447
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-116]
	bic	r3, r3, #-2147483648
	str	r3, [fp, #-112]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-124]
	bic	r3, r3, #-2147483648
	str	r3, [fp, #-120]
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	sub	r1, fp, #116
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r3, .L469+56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L468
	ldr	r1, [fp, #-88]
	mov	r2, #0
	mov	r3, #0
	str	r2, [r1, #56]
	str	r3, [r1, #60]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-88]
	str	r2, [r1, #64]
	str	r3, [r1, #68]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-132]
	eor	r3, r3, #-2147483648
	str	r3, [fp, #-128]
	ldr	r3, [fp, #-88]
	sub	r2, fp, #132
	ldmia	r2, {r1-r2}
	str	r1, [r3, #72]
	str	r2, [r3, #76]
	b	.L450
.L468:
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	mov	r8, r2
	eor	r9, r3, #-2147483648
	ldr	r3, [fp, #-88]
	str	r8, [r3, #56]
	str	r9, [r3, #60]
	ldr	r1, [fp, #-88]
	mov	r2, #0
	mov	r3, #0
	str	r2, [r1, #64]
	str	r3, [r1, #68]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-88]
	str	r2, [r1, #72]
	str	r3, [r1, #76]
.L450:
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	b	.L451
.L452:
	ldr	r2, [fp, #-88]
	ldr	r3, [fp, #-92]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-88]
	ldr	r3, [fp, #-92]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L451:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L452
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L453
.L454:
	ldr	r2, [fp, #-88]
	ldr	r3, [fp, #-92]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-88]
	ldr	r1, [fp, #-92]
	add	r1, r1, #7
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L453:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L454
	b	.L444
.L467:
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L455
.L456:
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	sub	r2, fp, #28
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-88]
	ldr	r1, [fp, #-92]
	add	r1, r1, #7
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L455:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L456
.L444:
	mov	r1, #1
	ldr	r0, [fp, #-88]
	bl	refine_symmetry_element
	mov	r3, r0
	cmp	r3, #0
	bge	.L457
	ldr	r3, .L469+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L458
	ldr	r0, .L469+60
	bl	puts
.L458:
	ldr	r0, [fp, #-88]
	bl	destroy_symmetry_element
	mov	r3, #0
	b	.L459
.L457:
	ldr	r3, [fp, #-88]
.L459:
	ldr	r2, .L469
	ldr	r1, [r2]
	ldr	r2, [fp, #-32]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L460
	bl	__stack_chk_fail
.L460:
	mov	r0, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L470:
	.align	2
.L469:
	.word	.LC171
	.word	verbose
	.word	.LC166
	.word	StatTotal
	.word	Atoms
	.word	TolerancePrimary
	.word	StatEarly
	.word	.LC167
	.word	rotate_atom
	.word	CenterOfSomething
	.word	1072693248
	.word	MolecularPlane
	.word	.LC168
	.word	.LC169
	.word	ToleranceSame
	.word	.LC170
	.size	init_c2_axis, .-init_c2_axis
	.section	.rodata
	.align	2
.LC172:
	.ascii	"    points are not on a sphere\000"
	.align	2
.LC173:
	.ascii	"    points can't be rotation-equivalent\000"
	.align	2
.LC174:
	.ascii	"    rotation is underdefined by these points\000"
	.align	2
.LC175:
	.ascii	"    rotation angle is %f\012\000"
	.align	2
.LC176:
	.ascii	"    atoms are too close to a straight line\000"
	.global	__aeabi_d2iz
	.align	2
.LC177:
	.ascii	"    rotation axis order (%d) is not from 3 to %d\012"
	.ascii	"\000"
	.align	2
.LC178:
	.ascii	"    axis origin is at (%g,%g,%g)\012\000"
	.align	2
.LC179:
	.ascii	"    axis is in the direction (%g,%g,%g)\012\000"
	.text
	.align	2
	.global	init_axis_parameters
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_axis_parameters, %function
init_axis_parameters:
	@ args = 0, pretend = 0, frame = 120
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #136
	str	r0, [fp, #-112]
	str	r1, [fp, #-116]
	str	r2, [fp, #-120]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	sub	r3, fp, #68
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-92]
	str	r3, [fp, #-88]
	mov	r3, #0
	str	r3, [fp, #-108]
	b	.L472
.L473:
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-112]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r2, r3, #3
	ldr	r3, [fp, #-112]
	add	r3, r3, r2
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-92]
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-116]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r2, r3, #3
	ldr	r3, [fp, #-116]
	add	r3, r3, r2
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-84]
	str	r3, [fp, #-80]
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-120]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r2, r3, #3
	ldr	r3, [fp, #-120]
	add	r3, r3, r2
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L472:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L473
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-92]
	str	r1, [fp, #-88]
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-84]
	str	r1, [fp, #-80]
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-76]
	str	r1, [fp, #-72]
	sub	r3, fp, #84
	ldmia	r3, {r2-r3}
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	bic	r5, r3, #-2147483648
	ldr	r3, .L535
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L474
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	sub	r1, fp, #92
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-132]
	bic	r3, r3, #-2147483648
	str	r3, [fp, #-128]
	ldr	r3, .L535
	ldmia	r3, {r2-r3}
	sub	r1, fp, #132
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L474
	sub	r3, fp, #76
	ldmia	r3, {r2-r3}
	sub	r1, fp, #84
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-140]
	bic	r3, r3, #-2147483648
	str	r3, [fp, #-136]
	ldr	r3, .L535
	ldmia	r3, {r2-r3}
	sub	r1, fp, #140
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L528
.L474:
	ldr	r3, .L535+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L535+4
	str	r3, [r2]
	ldr	r3, .L535+8
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L477
	ldr	r0, .L535+12
	bl	puts
.L477:
	mov	r3, #0
	b	.L478
.L528:
	mov	r3, #0
	str	r3, [fp, #-108]
	b	.L479
.L480:
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-112]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-116]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-112]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-116]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-112]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-120]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-112]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-120]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-120]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-116]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-120]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-116]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-60]
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L479:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L480
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-68]
	str	r1, [fp, #-64]
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-52]
	str	r1, [fp, #-48]
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-60]
	str	r1, [fp, #-56]
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-148]
	bic	r3, r3, #-2147483648
	str	r3, [fp, #-144]
	ldr	r3, .L535
	ldmia	r3, {r2-r3}
	sub	r1, fp, #148
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L529
	ldr	r3, .L535+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L535+4
	str	r3, [r2]
	ldr	r3, .L535+8
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L483
	ldr	r0, .L535+16
	bl	puts
.L483:
	mov	r3, #0
	b	.L478
.L529:
	ldr	r3, .L535+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	bne	.L484
	ldr	r3, .L535+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	bne	.L484
	ldr	r3, .L535+20
	ldmia	r3, {r2-r3}
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	beq	.L530
.L484:
	ldr	r3, .L535+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L535+4
	str	r3, [r2]
	ldr	r3, .L535+8
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L487
	ldr	r0, .L535+24
	bl	puts
.L487:
	mov	r3, #0
	b	.L478
.L530:
	sub	r3, fp, #60
	ldmia	r3, {r2-r3}
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-68]
	str	r3, [fp, #-64]
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	asin
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L535+28
	ldr	r1, .L535+32
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	ldr	r3, .L535+8
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L488
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, .L535+36
	bl	printf
.L488:
	ldr	r6, [fp, #-36]
	ldr	r3, [fp, #-32]
	bic	r7, r3, #-2147483648
	ldr	r3, .L535+40
	ldr	r3, [r3]
	add	r3, r3, #1
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L535+28
	ldr	r1, .L535+32
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	beq	.L531
	ldr	r3, .L535+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L535+4
	str	r3, [r2]
	ldr	r3, .L535+8
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L491
	ldr	r0, .L535+44
	bl	puts
.L491:
	mov	r3, #0
	b	.L478
.L531:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r0, .L535+28
	ldr	r1, .L535+48
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	ldr	r3, .L535+52
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	floor
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2iz
	mov	r3, r0
	str	r3, [fp, #-100]
	ldr	r3, [fp, #-100]
	cmp	r3, #2
	ble	.L492
	ldr	r3, .L535+40
	ldr	r3, [r3]
	ldr	r2, [fp, #-100]
	cmp	r2, r3
	ble	.L493
.L492:
	ldr	r3, .L535+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L535+4
	str	r3, [r2]
	ldr	r3, .L535+8
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L494
	ldr	r3, .L535+40
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, [fp, #-100]
	ldr	r0, .L535+56
	bl	printf
.L494:
	mov	r3, #0
	b	.L478
.L493:
	bl	alloc_symmetry_element
	str	r0, [fp, #-96]
	ldr	r3, [fp, #-96]
	ldr	r2, [fp, #-100]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-96]
	mov	r2, #7
	str	r2, [r3, #12]
	mov	r3, #0
	str	r3, [fp, #-108]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L495
.L496:
	ldr	r2, .L535+60
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L535+60
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L495:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L496
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r2, #0
	mov	r3, #0
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L532
	mov	r3, #0
	str	r3, [fp, #-108]
	b	.L499
.L500:
	ldr	r2, .L535+60
	ldr	r3, [fp, #-108]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-96]
	ldr	r1, [fp, #-108]
	add	r1, r1, #4
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L499:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L500
	b	.L501
.L532:
	ldr	r1, [fp, #-96]
	mov	r2, #0
	ldr	r3, .L535+64
	str	r2, [r1, #32]
	str	r3, [r1, #36]
	mov	r3, #1
	str	r3, [fp, #-108]
	b	.L502
.L503:
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-108]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r1, r2, r3
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L502:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L503
.L501:
	ldr	r1, [fp, #-96]
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	str	r2, [r1, #24]
	str	r3, [r1, #28]
	ldr	r3, [fp, #-116]
	add	r3, r3, #8
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-112]
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-120]
	add	r3, r3, #16
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-116]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-116]
	add	r3, r3, #16
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-112]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	mov	r7, r3
	ldr	r3, [fp, #-120]
	add	r3, r3, #8
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-116]
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-96]
	str	r2, [r1, #56]
	str	r3, [r1, #60]
	ldr	r3, [fp, #-116]
	add	r3, r3, #16
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-112]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-120]
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-116]
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-116]
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-112]
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	mov	r7, r3
	ldr	r3, [fp, #-120]
	add	r3, r3, #16
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-116]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-96]
	str	r2, [r1, #64]
	str	r3, [r1, #68]
	ldr	r3, [fp, #-116]
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-112]
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-120]
	add	r3, r3, #8
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-116]
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-116]
	add	r3, r3, #8
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-112]
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	mov	r7, r3
	ldr	r3, [fp, #-120]
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-116]
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-96]
	str	r2, [r1, #72]
	str	r3, [r1, #76]
	mov	r3, #0
	str	r3, [fp, #-104]
	ldr	r3, [fp, #-96]
	add	r1, r3, #56
	ldmia	r1, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	beq	.L504
	ldr	r3, [fp, #-96]
	add	r1, r3, #56
	ldmia	r1, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L533
	mov	r3, #1
	str	r3, [fp, #-104]
	b	.L504
.L533:
	ldr	r3, [fp, #-96]
	add	r1, r3, #64
	ldmia	r1, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	beq	.L504
	ldr	r3, [fp, #-96]
	add	r1, r3, #64
	ldmia	r1, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L534
	mov	r3, #1
	str	r3, [fp, #-104]
	b	.L504
.L534:
	ldr	r3, [fp, #-96]
	add	r1, r3, #72
	ldmia	r1, {r0-r1}
	mov	r2, #0
	mov	r3, #0
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L504
	mov	r3, #1
	str	r3, [fp, #-104]
.L504:
	ldr	r3, [fp, #-104]
	cmp	r3, #0
	beq	.L512
	mov	r3, #0
	str	r3, [fp, #-108]
	b	.L513
.L514:
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-108]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r8, r2
	eor	r9, r3, #-2147483648
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-108]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	stm	r3, {r8-r9}
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L513:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L514
.L512:
	mov	r3, #0
	str	r3, [fp, #-108]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	b	.L515
.L516:
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-108]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-108]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L515:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L516
	sub	r1, fp, #44
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-44]
	str	r1, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-108]
	b	.L517
.L518:
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-108]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #44
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-96]
	ldr	r1, [fp, #-108]
	add	r1, r1, #7
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-108]
	add	r3, r3, #1
	str	r3, [fp, #-108]
.L517:
	ldr	r3, [fp, #-108]
	cmp	r3, #2
	ble	.L518
	ldr	r3, .L535+8
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L519
	ldr	r3, [fp, #-96]
	add	r1, r3, #32
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-96]
	add	r3, r3, #24
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	mov	r7, r3
	ldr	r3, [fp, #-96]
	add	r1, r3, #40
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-96]
	add	r3, r3, #24
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-96]
	add	r1, r3, #48
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-96]
	add	r3, r3, #24
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	stm	sp, {r4-r5}
	mov	r2, r6
	mov	r3, r7
	ldr	r0, .L535+68
	bl	printf
	ldr	r3, [fp, #-96]
	add	r5, r3, #56
	ldmia	r5, {r4-r5}
	ldr	r3, [fp, #-96]
	add	r3, r3, #64
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-96]
	add	r1, r1, #72
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	ldr	r0, .L535+72
	bl	printf
.L519:
	ldr	r3, [fp, #-96]
.L478:
	mov	r0, r3
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L536:
	.align	2
.L535:
	.word	TolerancePrimary
	.word	StatEarly
	.word	verbose
	.word	.LC172
	.word	.LC173
	.word	ToleranceSame
	.word	.LC174
	.word	1413754136
	.word	1074340347
	.word	.LC175
	.word	MaxAxisOrder
	.word	.LC176
	.word	1075388923
	.word	1071644672
	.word	.LC177
	.word	CenterOfSomething
	.word	1072693248
	.word	.LC178
	.word	.LC179
	.size	init_axis_parameters, .-init_axis_parameters
	.section	.rodata
	.align	2
.LC180:
	.ascii	"Trying cn axis for the triplet (%d,%d,%d)\012\000"
	.align	2
.LC181:
	.ascii	"    no coherrent axis is defined by the points\000"
	.align	2
.LC182:
	.ascii	"    refinement failed for the c%d axis\012\000"
	.align	2
.LC183:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	init_higher_axis
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_higher_axis, %function
init_higher_axis:
	@ args = 0, pretend = 0, frame = 104
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #104
	str	r0, [fp, #-96]
	str	r1, [fp, #-100]
	str	r2, [fp, #-104]
	ldr	r3, .L548
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L548+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L538
	ldr	r3, [fp, #-104]
	ldr	r2, [fp, #-100]
	ldr	r1, [fp, #-96]
	ldr	r0, .L548+8
	bl	printf
.L538:
	ldr	r3, .L548+12
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L548+12
	str	r3, [r2]
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L539
.L540:
	ldr	r3, .L548+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L548+20
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-92]
	lsl	r1, r1, #3
	sub	r0, fp, #4
	add	r1, r0, r1
	sub	r1, r1, #80
	stm	r1, {r2-r3}
	ldr	r3, .L548+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L548+20
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-92]
	lsl	r1, r1, #3
	sub	r0, fp, #4
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, .L548+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-104]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L548+20
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-92]
	lsl	r1, r1, #3
	sub	r0, fp, #4
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L539:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L540
	sub	r2, fp, #36
	sub	r1, fp, #60
	sub	r3, fp, #84
	mov	r0, r3
	bl	init_axis_parameters
	str	r0, [fp, #-88]
	ldr	r3, [fp, #-88]
	cmp	r3, #0
	bne	.L541
	ldr	r3, .L548+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L542
	ldr	r0, .L548+24
	bl	puts
.L542:
	mov	r3, #0
	b	.L546
.L541:
	ldr	r3, [fp, #-88]
	ldr	r2, .L548+28
	str	r2, [r3]
	mov	r1, #1
	ldr	r0, [fp, #-88]
	bl	refine_symmetry_element
	mov	r3, r0
	cmp	r3, #0
	bge	.L544
	ldr	r3, .L548+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L545
	ldr	r3, [fp, #-88]
	ldr	r3, [r3, #8]
	mov	r1, r3
	ldr	r0, .L548+32
	bl	printf
.L545:
	ldr	r0, [fp, #-88]
	bl	destroy_symmetry_element
	mov	r3, #0
	b	.L546
.L544:
	ldr	r3, [fp, #-88]
.L546:
	ldr	r2, .L548
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L547
	bl	__stack_chk_fail
.L547:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L549:
	.align	2
.L548:
	.word	.LC183
	.word	verbose
	.word	.LC180
	.word	StatTotal
	.word	Atoms
	.word	CenterOfSomething
	.word	.LC181
	.word	rotate_atom
	.word	.LC182
	.size	init_higher_axis, .-init_higher_axis
	.section	.rodata
	.align	2
.LC184:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	rotate_reflect_atom
	.syntax unified
	.arm
	.fpu softvfp
	.type	rotate_reflect_atom, %function
rotate_reflect_atom:
	@ args = 0, pretend = 0, frame = 184
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #184
	str	r0, [fp, #-184]
	str	r1, [fp, #-188]
	str	r2, [fp, #-192]
	ldr	r3, .L564
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, [fp, #-184]
	ldr	r3, [r3, #8]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L564+4
	ldr	r1, .L564+8
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-164]
	str	r3, [fp, #-160]
	sub	r1, fp, #164
	ldmia	r1, {r0-r1}
	bl	sin
	str	r0, [fp, #-156]
	str	r1, [fp, #-152]
	sub	r1, fp, #164
	ldmia	r1, {r0-r1}
	bl	cos
	str	r0, [fp, #-148]
	str	r1, [fp, #-144]
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L551
.L552:
	ldr	r2, [fp, #-188]
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-184]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #128
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L551:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L552
	mov	r3, #0
	str	r3, [fp, #-176]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-172]
	str	r3, [fp, #-168]
	b	.L553
.L554:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #128
	ldmia	r3, {r0-r1}
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #172
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-172]
	str	r3, [fp, #-168]
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L553:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L554
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L555
.L556:
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #7
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	sub	r3, fp, #172
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #80
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L555:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L556
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L557
.L558:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #128
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L557:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L558
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #72
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-44]
	str	r3, [fp, #-40]
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #72
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-36]
	str	r3, [fp, #-32]
	sub	r1, fp, #68
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #64
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	sub	r1, fp, #60
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-184]
	add	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L559
.L560:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r0-r1}
	sub	r3, fp, #148
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #156
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-176]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #104
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L559:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L560
	mov	r3, #0
	str	r3, [fp, #-176]
	b	.L561
.L562:
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #104
	ldmia	r3, {r4-r5}
	ldr	r3, [fp, #-184]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r2, [fp, #-184]
	ldr	r3, [fp, #-176]
	add	r3, r3, #4
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r0, [fp, #-192]
	ldr	r1, [fp, #-176]
	add	r1, r1, #1
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-176]
	add	r3, r3, #1
	str	r3, [fp, #-176]
.L561:
	ldr	r3, [fp, #-176]
	cmp	r3, #2
	ble	.L562
	ldr	r3, [fp, #-188]
	ldr	r2, [r3]
	ldr	r3, [fp, #-192]
	str	r2, [r3]
	nop
	ldr	r3, .L564
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L563
	bl	__stack_chk_fail
.L563:
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L565:
	.align	2
.L564:
	.word	.LC184
	.word	1413754136
	.word	1075388923
	.size	rotate_reflect_atom, .-rotate_reflect_atom
	.section	.rodata
	.align	2
.LC185:
	.ascii	"Trying sn axis for the triplet (%d,%d,%d)\012\000"
	.align	2
.LC186:
	.ascii	"    atoms can not define improper axis of the order"
	.ascii	" more than 2\000"
	.align	2
.LC187:
	.ascii	"    no coherrent improper axis is defined by the po"
	.ascii	"ints\000"
	.align	2
.LC188:
	.ascii	"    refinement failed for the s%d axis\012\000"
	.align	2
.LC189:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	init_improper_axis
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_improper_axis, %function
init_improper_axis:
	@ args = 0, pretend = 0, frame = 136
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #136
	str	r0, [fp, #-136]
	str	r1, [fp, #-140]
	str	r2, [fp, #-144]
	ldr	r3, .L590
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, .L590+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L567
	ldr	r3, [fp, #-144]
	ldr	r2, [fp, #-140]
	ldr	r1, [fp, #-136]
	ldr	r0, .L590+8
	bl	printf
.L567:
	ldr	r3, .L590+12
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L590+12
	str	r3, [r2]
	mov	r3, #0
	str	r3, [fp, #-132]
	b	.L568
.L569:
	ldr	r3, .L590+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-136]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L590+20
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-132]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #104
	stm	r1, {r2-r3}
	ldr	r3, .L590+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-140]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L590+20
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-132]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #80
	stm	r1, {r2-r3}
	ldr	r3, .L590+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-144]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L590+20
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-132]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #56
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L568:
	ldr	r3, [fp, #-132]
	cmp	r3, #2
	ble	.L569
	mov	r3, #0
	str	r3, [fp, #-132]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	b	.L570
.L571:
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #104
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #56
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-132]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L570:
	ldr	r3, [fp, #-132]
	cmp	r3, #2
	ble	.L571
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-124]
	str	r1, [fp, #-120]
	ldr	r3, .L590+24
	ldmia	r3, {r2-r3}
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmple
	mov	r3, r0
	cmp	r3, #0
	beq	.L589
	ldr	r3, .L590+28
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L590+28
	str	r3, [r2]
	ldr	r3, .L590+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L574
	ldr	r0, .L590+32
	bl	puts
.L574:
	mov	r3, #0
	b	.L586
.L589:
	mov	r3, #0
	str	r3, [fp, #-132]
	b	.L576
.L577:
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	sub	r3, fp, #124
	ldmia	r3, {r2-r3}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-132]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L576:
	ldr	r3, [fp, #-132]
	cmp	r3, #2
	ble	.L577
	mov	r3, #0
	str	r3, [fp, #-132]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	b	.L578
.L579:
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-124]
	str	r3, [fp, #-120]
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L578:
	ldr	r3, [fp, #-132]
	cmp	r3, #2
	ble	.L579
	mov	r3, #0
	str	r3, [fp, #-132]
	b	.L580
.L581:
	sub	r1, fp, #124
	ldmia	r1, {r0-r1}
	mov	r2, r0
	mov	r3, r1
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	ldr	r3, [fp, #-132]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #80
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-132]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #80
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L580:
	ldr	r3, [fp, #-132]
	cmp	r3, #2
	ble	.L581
	sub	r2, fp, #68
	sub	r1, fp, #92
	sub	r3, fp, #116
	mov	r0, r3
	bl	init_axis_parameters
	str	r0, [fp, #-128]
	ldr	r3, [fp, #-128]
	cmp	r3, #0
	bne	.L582
	ldr	r3, .L590+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L583
	ldr	r0, .L590+36
	bl	puts
.L583:
	mov	r3, #0
	b	.L586
.L582:
	ldr	r3, [fp, #-128]
	ldr	r2, .L590+40
	str	r2, [r3]
	mov	r1, #1
	ldr	r0, [fp, #-128]
	bl	refine_symmetry_element
	mov	r3, r0
	cmp	r3, #0
	bge	.L584
	ldr	r3, .L590+4
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L585
	ldr	r3, [fp, #-128]
	ldr	r3, [r3, #8]
	mov	r1, r3
	ldr	r0, .L590+44
	bl	printf
.L585:
	ldr	r0, [fp, #-128]
	bl	destroy_symmetry_element
	mov	r3, #0
	b	.L586
.L584:
	ldr	r3, [fp, #-128]
.L586:
	ldr	r2, .L590
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L587
	bl	__stack_chk_fail
.L587:
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L591:
	.align	2
.L590:
	.word	.LC189
	.word	verbose
	.word	.LC185
	.word	StatTotal
	.word	Atoms
	.word	CenterOfSomething
	.word	ToleranceSame
	.word	StatEarly
	.word	.LC186
	.word	.LC187
	.word	rotate_reflect_atom
	.word	.LC188
	.size	init_improper_axis, .-init_improper_axis
	.section	.rodata
	.align	2
.LC190:
	.ascii	"Center of something is at %15.10f, %15.10f, %15.10f"
	.ascii	"\012\000"
	.align	2
.LC191:
	.ascii	"Unable to allocate array for the distances\012\000"
	.align	2
.LC192:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	find_center_of_something
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_center_of_something, %function
find_center_of_something:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #64
	ldr	r3, .L608
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L593
.L594:
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r1, r3, #32
	mov	r2, #0
	mov	r3, #0
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L593:
	ldr	r3, [fp, #-56]
	cmp	r3, #2
	ble	.L594
	mov	r3, #0
	str	r3, [fp, #-60]
	b	.L595
.L598:
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L596
.L597:
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r3, .L608+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-56]
	lsl	r1, r1, #3
	sub	r0, fp, #12
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L596:
	ldr	r3, [fp, #-56]
	cmp	r3, #2
	ble	.L597
	ldr	r3, [fp, #-60]
	add	r3, r3, #1
	str	r3, [fp, #-60]
.L595:
	ldr	r3, .L608+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-60]
	cmp	r2, r3
	blt	.L598
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L599
.L600:
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #3
	sub	r2, fp, #12
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r4-r5}
	ldr	r3, .L608+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L608+12
	ldr	r1, [fp, #-56]
	lsl	r1, r1, #3
	add	r1, r0, r1
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L599:
	ldr	r3, [fp, #-56]
	cmp	r3, #2
	ble	.L600
	ldr	r3, .L608+16
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L601
	ldr	r3, .L608+12
	ldmia	r3, {r4-r5}
	ldr	r3, .L608+12
	add	r3, r3, #8
	ldmia	r3, {r2-r3}
	ldr	r1, .L608+12
	add	r1, r1, #16
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	ldr	r0, .L608+20
	bl	printf
.L601:
	ldr	r3, .L608+8
	ldr	r3, [r3]
	mov	r1, #8
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L608+24
	str	r2, [r3]
	ldr	r3, .L608+24
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L602
	ldr	r3, .L608+28
	ldr	r3, [r3]
	mov	r2, #43
	mov	r1, #1
	ldr	r0, .L608+32
	bl	fwrite
	mov	r0, #1
	bl	exit
.L602:
	mov	r3, #0
	str	r3, [fp, #-60]
	b	.L603
.L606:
	mov	r3, #0
	str	r3, [fp, #-56]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	b	.L604
.L605:
	ldr	r3, .L608+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r2, .L608+12
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #52
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-52]
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L604:
	ldr	r3, [fp, #-56]
	cmp	r3, #2
	ble	.L605
	ldr	r3, .L608+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #3
	add	r1, r2, r3
	sub	r3, fp, #52
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-60]
	add	r3, r3, #1
	str	r3, [fp, #-60]
.L603:
	ldr	r3, .L608+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-60]
	cmp	r2, r3
	blt	.L606
	nop
	ldr	r3, .L608
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L607
	bl	__stack_chk_fail
.L607:
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L609:
	.align	2
.L608:
	.word	.LC192
	.word	Atoms
	.word	AtomsCount
	.word	CenterOfSomething
	.word	verbose
	.word	.LC190
	.word	DistanceFromCenter
	.word	stderr
	.word	.LC191
	.size	find_center_of_something, .-find_center_of_something
	.section	.rodata
	.align	2
.LC193:
	.ascii	"Out of memory in find_planes\000"
	.text
	.align	2
	.global	find_planes
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_planes, %function
find_planes:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	bl	init_ultimate_plane
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L611
	ldr	r2, .L621
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	ldr	r3, .L621+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L621+4
	str	r3, [r2]
	ldr	r3, .L621+8
	ldr	r3, [r3]
	ldr	r2, .L621+4
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L621+8
	str	r3, [r2]
	ldr	r3, .L621+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L612
	ldr	r0, .L621+12
	bl	perror
	mov	r0, #1
	bl	exit
.L612:
	ldr	r3, .L621+8
	ldr	r2, [r3]
	ldr	r3, .L621+4
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	str	r2, [r3]
.L611:
	mov	r3, #1
	str	r3, [fp, #-16]
	b	.L613
.L619:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L614
.L618:
	ldr	r3, .L621+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #5
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, .L621+16
	ldr	r1, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #5
	add	r3, r1, r3
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L620
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	init_mirror_plane
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L616
	ldr	r3, .L621+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L621+4
	str	r3, [r2]
	ldr	r3, .L621+8
	ldr	r3, [r3]
	ldr	r2, .L621+4
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L621+8
	str	r3, [r2]
	ldr	r3, .L621+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L617
	ldr	r0, .L621+12
	bl	perror
	mov	r0, #1
	bl	exit
.L617:
	ldr	r3, .L621+8
	ldr	r2, [r3]
	ldr	r3, .L621+4
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	b	.L616
.L620:
	nop
.L616:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L614:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L618
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L613:
	ldr	r3, .L621+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L619
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L622:
	.align	2
.L621:
	.word	MolecularPlane
	.word	PlanesCount
	.word	Planes
	.word	.LC193
	.word	Atoms
	.word	AtomsCount
	.size	find_planes, .-find_planes
	.align	2
	.global	find_inversion_centers
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_inversion_centers, %function
find_inversion_centers:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	init_inversion_center
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L625
	mov	r1, #4
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L626
	str	r2, [r3]
	ldr	r3, .L626
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r3, .L626+4
	mov	r2, #1
	str	r2, [r3]
.L625:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L627:
	.align	2
.L626:
	.word	InversionCenters
	.word	InversionCentersCount
	.size	find_inversion_centers, .-find_inversion_centers
	.section	.rodata
	.align	2
.LC194:
	.ascii	"Out of memory in find_infinity_axes()\000"
	.text
	.align	2
	.global	find_infinity_axis
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_infinity_axis, %function
find_infinity_axis:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	init_ultimate_axis
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L631
	ldr	r3, .L632
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L632
	str	r3, [r2]
	ldr	r3, .L632+4
	ldr	r3, [r3]
	ldr	r2, .L632
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L632+4
	str	r3, [r2]
	ldr	r3, .L632+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L630
	ldr	r0, .L632+8
	bl	perror
	mov	r0, #1
	bl	exit
.L630:
	ldr	r3, .L632+4
	ldr	r2, [r3]
	ldr	r3, .L632
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	str	r2, [r3]
.L631:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L633:
	.align	2
.L632:
	.word	NormalAxesCount
	.word	NormalAxes
	.word	.LC194
	.size	find_infinity_axis, .-find_infinity_axis
	.section	.rodata
	.align	2
.LC195:
	.ascii	"Out of memory in find_c2_axes()\012\000"
	.align	2
.LC196:
	.ascii	"Out of memory in find_c2_axes\000"
	.align	2
.LC197:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	find_c2_axes
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_c2_axes, %function
find_c2_axes:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	add	fp, sp, #32
	sub	sp, sp, #76
	ldr	r3, .L678
	ldr	r3, [r3]
	str	r3, [fp, #-40]
	mov	r3,#0
	ldr	r3, .L678+4
	ldr	r3, [r3]
	mov	r1, #8
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-84]
	ldr	r3, [fp, #-84]
	cmp	r3, #0
	bne	.L635
	ldr	r3, .L678+8
	ldr	r3, [r3]
	mov	r2, #32
	mov	r1, #1
	ldr	r0, .L678+12
	bl	fwrite
	mov	r0, #1
	bl	exit
.L635:
	mov	r3, #1
	str	r3, [fp, #-104]
	b	.L636
.L669:
	mov	r3, #0
	str	r3, [fp, #-100]
	b	.L637
.L668:
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-104]
	lsl	r3, r3, #5
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, .L678+16
	ldr	r1, [r3]
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #5
	add	r3, r1, r3
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L673
	ldr	r3, .L678+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-104]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L678+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	bic	r5, r3, #-2147483648
	ldr	r3, .L678+24
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L674
	mov	r3, #0
	str	r3, [fp, #-96]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	b	.L642
.L643:
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-104]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-96]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-100]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-96]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-96]
	lsl	r1, r1, #3
	sub	r0, fp, #36
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #3
	sub	r2, fp, #36
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r0-r1}
	ldr	r2, .L678+28
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-96]
	add	r3, r3, #1
	str	r3, [fp, #-96]
.L642:
	ldr	r3, [fp, #-96]
	cmp	r3, #2
	ble	.L643
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	sqrt
	str	r0, [fp, #-76]
	str	r1, [fp, #-72]
	ldr	r3, .L678+24
	ldmia	r3, {r0-r1}
	mov	r2, #0
	ldr	r3, .L678+32
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L672
	ldr	r2, .L678+28
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	init_c2_axis
	str	r0, [fp, #-80]
	ldr	r3, [fp, #-80]
	cmp	r3, #0
	beq	.L675
	ldr	r3, .L678+36
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L678+36
	str	r3, [r2]
	ldr	r3, .L678+40
	ldr	r3, [r3]
	ldr	r2, .L678+36
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L678+40
	str	r3, [r2]
	ldr	r3, .L678+40
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L647
	ldr	r0, .L678+44
	bl	perror
	mov	r0, #1
	bl	exit
.L647:
	ldr	r3, .L678+40
	ldr	r2, [r3]
	ldr	r3, .L678+36
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-80]
	str	r2, [r3]
	b	.L675
.L672:
	mov	r3, #0
	str	r3, [fp, #-96]
	b	.L648
.L651:
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r3, r2, r3
	add	r3, r3, #8
	mov	r2, r3
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	init_c2_axis
	str	r0, [fp, #-80]
	ldr	r3, [fp, #-80]
	cmp	r3, #0
	beq	.L649
	ldr	r3, .L678+36
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L678+36
	str	r3, [r2]
	ldr	r3, .L678+40
	ldr	r3, [r3]
	ldr	r2, .L678+36
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L678+40
	str	r3, [r2]
	ldr	r3, .L678+40
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L650
	ldr	r0, .L678+44
	bl	perror
	mov	r0, #1
	bl	exit
.L650:
	ldr	r3, .L678+40
	ldr	r2, [r3]
	ldr	r3, .L678+36
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-80]
	str	r2, [r3]
.L649:
	ldr	r3, [fp, #-96]
	add	r3, r3, #1
	str	r3, [fp, #-96]
.L648:
	ldr	r3, .L678+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-96]
	cmp	r2, r3
	blt	.L651
	mov	r3, #0
	str	r3, [fp, #-96]
	b	.L652
.L655:
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	b	.L653
.L654:
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	sub	r2, fp, #36
	add	r3, r2, r3
	sub	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	pow2
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-76]
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L653:
	ldr	r3, [fp, #-92]
	cmp	r3, #2
	ble	.L654
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-84]
	add	r10, r2, r3
	sub	r1, fp, #76
	ldmia	r1, {r0-r1}
	bl	sqrt
	mov	r2, r0
	mov	r3, r1
	stm	r10, {r2-r3}
	ldr	r3, [fp, #-96]
	add	r3, r3, #1
	str	r3, [fp, #-96]
.L652:
	ldr	r3, .L678+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-96]
	cmp	r2, r3
	blt	.L655
	mov	r3, #0
	str	r3, [fp, #-96]
	b	.L656
.L667:
	mov	r3, #0
	str	r3, [fp, #-92]
	b	.L657
.L666:
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, .L678+16
	ldr	r1, [r3]
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #5
	add	r3, r1, r3
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L676
	ldr	r3, .L678+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L678+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	bic	r7, r3, #-2147483648
	ldr	r3, .L678+24
	ldmia	r3, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L677
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-84]
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-84]
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r8, r2
	bic	r9, r3, #-2147483648
	ldr	r3, .L678+24
	ldmia	r3, {r2-r3}
	mov	r0, r8
	mov	r1, r9
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L677
	mov	r3, #0
	str	r3, [fp, #-88]
	b	.L663
.L664:
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-96]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-88]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L678+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-92]
	lsl	r3, r3, #5
	add	r2, r2, r3
	ldr	r3, [fp, #-88]
	add	r3, r3, #1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	mov	r3, #1073741824
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-88]
	lsl	r1, r1, #3
	sub	r0, fp, #36
	add	r1, r0, r1
	sub	r1, r1, #32
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-88]
	add	r3, r3, #1
	str	r3, [fp, #-88]
.L663:
	ldr	r3, [fp, #-88]
	cmp	r3, #2
	ble	.L664
	sub	r3, fp, #68
	mov	r2, r3
	ldr	r1, [fp, #-100]
	ldr	r0, [fp, #-104]
	bl	init_c2_axis
	str	r0, [fp, #-80]
	ldr	r3, [fp, #-80]
	cmp	r3, #0
	beq	.L659
	ldr	r3, .L678+36
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L678+36
	str	r3, [r2]
	ldr	r3, .L678+40
	ldr	r3, [r3]
	ldr	r2, .L678+36
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L678+40
	str	r3, [r2]
	ldr	r3, .L678+40
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L665
	ldr	r0, .L678+44
	bl	perror
	mov	r0, #1
	bl	exit
.L665:
	ldr	r3, .L678+40
	ldr	r2, [r3]
	ldr	r3, .L678+36
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-80]
	str	r2, [r3]
	b	.L659
.L676:
	nop
	b	.L659
.L677:
	nop
.L659:
	ldr	r3, [fp, #-92]
	add	r3, r3, #1
	str	r3, [fp, #-92]
.L657:
	ldr	r3, .L678+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-92]
	cmp	r2, r3
	blt	.L666
	ldr	r3, [fp, #-96]
	add	r3, r3, #1
	str	r3, [fp, #-96]
.L656:
	ldr	r3, .L678+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-96]
	cmp	r2, r3
	blt	.L667
	b	.L639
.L673:
	nop
	b	.L639
.L674:
	nop
	b	.L639
.L675:
	nop
.L639:
	ldr	r3, [fp, #-100]
	add	r3, r3, #1
	str	r3, [fp, #-100]
.L637:
	ldr	r2, [fp, #-100]
	ldr	r3, [fp, #-104]
	cmp	r2, r3
	blt	.L668
	ldr	r3, [fp, #-104]
	add	r3, r3, #1
	str	r3, [fp, #-104]
.L636:
	ldr	r3, .L678+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-104]
	cmp	r2, r3
	blt	.L669
	ldr	r0, [fp, #-84]
	bl	free
	nop
	ldr	r3, .L678
	ldr	r2, [r3]
	ldr	r3, [fp, #-40]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L670
	bl	__stack_chk_fail
.L670:
	sub	sp, fp, #32
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L679:
	.align	2
.L678:
	.word	.LC197
	.word	AtomsCount
	.word	stderr
	.word	.LC195
	.word	Atoms
	.word	DistanceFromCenter
	.word	TolerancePrimary
	.word	CenterOfSomething
	.word	1075052544
	.word	NormalAxesCount
	.word	NormalAxes
	.word	.LC196
	.size	find_c2_axes, .-find_c2_axes
	.section	.rodata
	.align	2
.LC198:
	.ascii	"Out of memory in find_higher_axes\000"
	.text
	.align	2
	.global	find_higher_axes
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_higher_axes, %function
find_higher_axes:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, fp, lr}
	add	fp, sp, #28
	sub	sp, sp, #16
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L681
.L696:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-40]
	b	.L682
.L695:
	ldr	r3, .L701
	ldr	r2, [r3]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #5
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, .L701
	ldr	r1, [r3]
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #5
	add	r3, r1, r3
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L697
	ldr	r3, .L701+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L701+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	bic	r5, r3, #-2147483648
	ldr	r3, .L701+8
	ldmia	r3, {r2-r3}
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L698
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L687
.L694:
	ldr	r3, .L701
	ldr	r2, [r3]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #5
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, .L701
	ldr	r1, [r3]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #5
	add	r3, r1, r3
	ldr	r3, [r3]
	cmp	r2, r3
	bne	.L699
	ldr	r3, .L701+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L701+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	bic	r7, r3, #-2147483648
	ldr	r3, .L701+8
	ldmia	r3, {r2-r3}
	mov	r0, r6
	mov	r1, r7
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L700
	ldr	r3, .L701+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r0-r1}
	ldr	r3, .L701+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r8, r2
	bic	r9, r3, #-2147483648
	ldr	r3, .L701+8
	ldmia	r3, {r2-r3}
	mov	r0, r8
	mov	r1, r9
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L700
	ldr	r2, [fp, #-36]
	ldr	r1, [fp, #-40]
	ldr	r0, [fp, #-44]
	bl	init_higher_axis
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L689
	ldr	r3, .L701+12
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L701+12
	str	r3, [r2]
	ldr	r3, .L701+16
	ldr	r3, [r3]
	ldr	r2, .L701+12
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L701+16
	str	r3, [r2]
	ldr	r3, .L701+16
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L693
	ldr	r0, .L701+20
	bl	perror
	mov	r0, #1
	bl	exit
.L693:
	ldr	r3, .L701+16
	ldr	r2, [r3]
	ldr	r3, .L701+12
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-32]
	str	r2, [r3]
	b	.L689
.L699:
	nop
	b	.L689
.L700:
	nop
.L689:
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L687:
	ldr	r3, .L701+24
	ldr	r3, [r3]
	ldr	r2, [fp, #-36]
	cmp	r2, r3
	blt	.L694
	b	.L684
.L697:
	nop
	b	.L684
.L698:
	nop
.L684:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L682:
	ldr	r3, .L701+24
	ldr	r3, [r3]
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	blt	.L695
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L681:
	ldr	r3, .L701+24
	ldr	r3, [r3]
	ldr	r2, [fp, #-44]
	cmp	r2, r3
	blt	.L696
	nop
	nop
	sub	sp, fp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp, pc}
.L702:
	.align	2
.L701:
	.word	Atoms
	.word	DistanceFromCenter
	.word	TolerancePrimary
	.word	NormalAxesCount
	.word	NormalAxes
	.word	.LC198
	.word	AtomsCount
	.size	find_higher_axes, .-find_higher_axes
	.align	2
	.global	find_improper_axes
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_improper_axes, %function
find_improper_axes:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L704
.L711:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	b	.L705
.L710:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L706
.L709:
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	init_improper_axis
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L707
	ldr	r3, .L712
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L712
	str	r3, [r2]
	ldr	r3, .L712+4
	ldr	r3, [r3]
	ldr	r2, .L712
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r1, r2
	mov	r0, r3
	bl	realloc
	mov	r3, r0
	ldr	r2, .L712+4
	str	r3, [r2]
	ldr	r3, .L712+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L708
	ldr	r0, .L712+8
	bl	perror
	mov	r0, #1
	bl	exit
.L708:
	ldr	r3, .L712+4
	ldr	r2, [r3]
	ldr	r3, .L712
	ldr	r3, [r3]
	sub	r3, r3, #-1073741823
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	str	r2, [r3]
.L707:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L706:
	ldr	r3, .L712+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	blt	.L709
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L705:
	ldr	r3, .L712+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L710
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L704:
	ldr	r3, .L712+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L711
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L713:
	.align	2
.L712:
	.word	ImproperAxesCount
	.word	ImproperAxes
	.word	.LC198
	.word	AtomsCount
	.size	find_improper_axes, .-find_improper_axes
	.section	.rodata
	.align	2
.LC199:
	.ascii	"There are no planes of symmetry in the molecule\000"
	.align	2
.LC200:
	.ascii	"There is a plane of symmetry in the molecule\000"
	.align	2
.LC201:
	.ascii	"There are %d planes of symmetry in the molecule\012"
	.ascii	"\000"
	.align	2
.LC202:
	.ascii	"     Residual          Direction of the normal     "
	.ascii	"      Distance\000"
	.align	2
.LC203:
	.ascii	"%3d %8.4e \000"
	.align	2
.LC204:
	.ascii	"(%11.8f,%11.8f,%11.8f) \000"
	.align	2
.LC205:
	.ascii	"%14.8f\012\000"
	.text
	.align	2
	.global	report_planes
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_planes, %function
report_planes:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #24
	ldr	r3, .L722
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L715
	ldr	r0, .L722+4
	bl	puts
	b	.L721
.L715:
	ldr	r3, .L722
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L717
	ldr	r0, .L722+8
	bl	puts
	b	.L718
.L717:
	ldr	r3, .L722
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L722+12
	bl	printf
.L718:
	ldr	r0, .L722+16
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L719
.L720:
	ldr	r3, .L722+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-16]
	ldr	r0, .L722+24
	bl	printf
	ldr	r3, .L722+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r5, r3, #32
	ldmia	r5, {r4-r5}
	ldr	r3, .L722+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #40
	ldmia	r3, {r2-r3}
	ldr	r1, .L722+20
	ldr	r0, [r1]
	ldr	r1, [fp, #-16]
	lsl	r1, r1, #2
	add	r1, r0, r1
	ldr	r1, [r1]
	add	r1, r1, #48
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	ldr	r0, .L722+28
	bl	printf
	ldr	r3, .L722+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #24
	ldmia	r3, {r2-r3}
	ldr	r0, .L722+32
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L719:
	ldr	r3, .L722
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L720
.L721:
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L723:
	.align	2
.L722:
	.word	PlanesCount
	.word	.LC199
	.word	.LC200
	.word	.LC201
	.word	.LC202
	.word	Planes
	.word	.LC203
	.word	.LC204
	.word	.LC205
	.size	report_planes, .-report_planes
	.section	.rodata
	.align	2
.LC206:
	.ascii	"There is no inversion center in the molecule\000"
	.align	2
.LC207:
	.ascii	"There in an inversion center in the molecule\000"
	.align	2
.LC208:
	.ascii	"     Residual                      Position\000"
	.align	2
.LC209:
	.ascii	"   %8.4e \000"
	.align	2
.LC210:
	.ascii	"(%14.8f,%14.8f,%14.8f)\012\000"
	.text
	.align	2
	.global	report_inversion_centers
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_inversion_centers, %function
report_inversion_centers:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	ldr	r3, .L728
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L725
	ldr	r0, .L728+4
	bl	puts
	b	.L727
.L725:
	ldr	r0, .L728+8
	bl	puts
	ldr	r0, .L728+12
	bl	puts
	ldr	r3, .L728+16
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	ldr	r0, .L728+20
	bl	printf
	ldr	r3, .L728+16
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L728+16
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	mov	r7, r3
	ldr	r3, .L728+16
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L728+16
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #40
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, .L728+16
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L728+16
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #48
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	stm	sp, {r4-r5}
	mov	r2, r6
	mov	r3, r7
	ldr	r0, .L728+24
	bl	printf
.L727:
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L729:
	.align	2
.L728:
	.word	InversionCentersCount
	.word	.LC206
	.word	.LC207
	.word	.LC208
	.word	InversionCenters
	.word	.LC209
	.word	.LC210
	.size	report_inversion_centers, .-report_inversion_centers
	.section	.rodata
	.align	2
.LC211:
	.ascii	"There are no normal axes in the molecule\000"
	.align	2
.LC212:
	.ascii	"There is a normal axis in the molecule\000"
	.align	2
.LC213:
	.ascii	"There are %d normal axes in the molecule\012\000"
	.align	2
.LC214:
	.ascii	"     Residual  Order         Direction of the axis "
	.ascii	"                        Supporting point\000"
	.align	2
.LC215:
	.ascii	"Inf \000"
	.align	2
.LC216:
	.ascii	"%3d \000"
	.text
	.align	2
	.global	report_axes
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_axes, %function
report_axes:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #24
	ldr	r3, .L740
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L731
	ldr	r0, .L740+4
	bl	puts
	b	.L739
.L731:
	ldr	r3, .L740
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L733
	ldr	r0, .L740+8
	bl	puts
	b	.L734
.L733:
	ldr	r3, .L740
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L740+12
	bl	printf
.L734:
	ldr	r0, .L740+16
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L735
.L738:
	ldr	r3, .L740+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-24]
	ldr	r0, .L740+24
	bl	printf
	ldr	r3, .L740+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bne	.L736
	ldr	r0, .L740+28
	bl	printf
	b	.L737
.L736:
	ldr	r3, .L740+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	mov	r1, r3
	ldr	r0, .L740+32
	bl	printf
.L737:
	ldr	r3, .L740+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r5, r3, #56
	ldmia	r5, {r4-r5}
	ldr	r3, .L740+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #64
	ldmia	r3, {r2-r3}
	ldr	r1, .L740+20
	ldr	r0, [r1]
	ldr	r1, [fp, #-24]
	lsl	r1, r1, #2
	add	r1, r0, r1
	ldr	r1, [r1]
	add	r1, r1, #72
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	ldr	r0, .L740+36
	bl	printf
	ldr	r3, .L740+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L740+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	mov	r7, r3
	ldr	r3, .L740+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L740+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #40
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, .L740+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L740+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #48
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	stm	sp, {r4-r5}
	mov	r2, r6
	mov	r3, r7
	ldr	r0, .L740+40
	bl	printf
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L735:
	ldr	r3, .L740
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L738
.L739:
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L741:
	.align	2
.L740:
	.word	NormalAxesCount
	.word	.LC211
	.word	.LC212
	.word	.LC213
	.word	.LC214
	.word	NormalAxes
	.word	.LC203
	.word	.LC215
	.word	.LC216
	.word	.LC204
	.word	.LC210
	.size	report_axes, .-report_axes
	.section	.rodata
	.align	2
.LC217:
	.ascii	"There are no improper axes in the molecule\000"
	.align	2
.LC218:
	.ascii	"There is an improper axis in the molecule\000"
	.align	2
.LC219:
	.ascii	"There are %d improper axes in the molecule\012\000"
	.text
	.align	2
	.global	report_improper_axes
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_improper_axes, %function
report_improper_axes:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #24
	ldr	r3, .L752
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L743
	ldr	r0, .L752+4
	bl	puts
	b	.L751
.L743:
	ldr	r3, .L752
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L745
	ldr	r0, .L752+8
	bl	puts
	b	.L746
.L745:
	ldr	r3, .L752
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L752+12
	bl	printf
.L746:
	ldr	r0, .L752+16
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L747
.L750:
	ldr	r3, .L752+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-24]
	ldr	r0, .L752+24
	bl	printf
	ldr	r3, .L752+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bne	.L748
	ldr	r0, .L752+28
	bl	printf
	b	.L749
.L748:
	ldr	r3, .L752+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	mov	r1, r3
	ldr	r0, .L752+32
	bl	printf
.L749:
	ldr	r3, .L752+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r5, r3, #56
	ldmia	r5, {r4-r5}
	ldr	r3, .L752+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #64
	ldmia	r3, {r2-r3}
	ldr	r1, .L752+20
	ldr	r0, [r1]
	ldr	r1, [fp, #-24]
	lsl	r1, r1, #2
	add	r1, r0, r1
	ldr	r1, [r1]
	add	r1, r1, #72
	ldmia	r1, {r0-r1}
	str	r0, [sp, #8]
	str	r1, [sp, #12]
	stm	sp, {r2-r3}
	mov	r2, r4
	mov	r3, r5
	ldr	r0, .L752+36
	bl	printf
	ldr	r3, .L752+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L752+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #32
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r6, r2
	mov	r7, r3
	ldr	r3, .L752+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L752+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #40
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r4, r2
	mov	r5, r3
	ldr	r3, .L752+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r1, r3, #24
	ldmia	r1, {r0-r1}
	ldr	r3, .L752+20
	ldr	r3, [r3]
	ldr	r3, [r3]
	add	r3, r3, #48
	ldmia	r3, {r2-r3}
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	stm	sp, {r4-r5}
	mov	r2, r6
	mov	r3, r7
	ldr	r0, .L752+40
	bl	printf
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L747:
	ldr	r3, .L752
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L750
.L751:
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L753:
	.align	2
.L752:
	.word	ImproperAxesCount
	.word	.LC217
	.word	.LC218
	.word	.LC219
	.word	.LC214
	.word	ImproperAxes
	.word	.LC203
	.word	.LC215
	.word	.LC216
	.word	.LC204
	.word	.LC210
	.size	report_improper_axes, .-report_improper_axes
	.section	.rodata
	.align	2
.LC220:
	.ascii	"  %10ld candidates examined\012  %10ld removed earl"
	.ascii	"y\012  %10ld removed during initial mating stage\012"
	.ascii	"  %10ld removed as duplicates\012  %10ld removed be"
	.ascii	"cause of the wrong transformation order\012  %10ld "
	.ascii	"removed after unsuccessful optimization\012  %10ld "
	.ascii	"accepted\012\000"
	.text
	.align	2
	.global	report_and_reset_counters
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_and_reset_counters, %function
report_and_reset_counters:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	ldr	r3, .L755
	ldr	ip, [r3]
	ldr	r3, .L755+4
	ldr	lr, [r3]
	ldr	r3, .L755+8
	ldr	r4, [r3]
	ldr	r3, .L755+12
	ldr	r3, [r3]
	ldr	r2, .L755+16
	ldr	r2, [r2]
	ldr	r1, .L755+20
	ldr	r1, [r1]
	ldr	r0, .L755+24
	ldr	r0, [r0]
	str	r0, [sp, #12]
	str	r1, [sp, #8]
	str	r2, [sp, #4]
	str	r3, [sp]
	mov	r3, r4
	mov	r2, lr
	mov	r1, ip
	ldr	r0, .L755+28
	bl	printf
	ldr	r3, .L755+24
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L755+24
	ldr	r3, [r3]
	ldr	r2, .L755+20
	str	r3, [r2]
	ldr	r3, .L755+20
	ldr	r3, [r3]
	ldr	r2, .L755+16
	str	r3, [r2]
	ldr	r3, .L755+16
	ldr	r3, [r3]
	ldr	r2, .L755+12
	str	r3, [r2]
	ldr	r3, .L755+12
	ldr	r3, [r3]
	ldr	r2, .L755+8
	str	r3, [r2]
	ldr	r3, .L755+8
	ldr	r3, [r3]
	ldr	r2, .L755+4
	str	r3, [r2]
	ldr	r3, .L755+4
	ldr	r3, [r3]
	ldr	r2, .L755
	str	r3, [r2]
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L756:
	.align	2
.L755:
	.word	StatTotal
	.word	StatEarly
	.word	StatPairs
	.word	StatDups
	.word	StatOrder
	.word	StatOpt
	.word	StatAccept
	.word	.LC220
	.size	report_and_reset_counters, .-report_and_reset_counters
	.align	2
	.global	find_symmetry_elements
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_symmetry_elements, %function
find_symmetry_elements:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	find_center_of_something
	bl	find_inversion_centers
	bl	find_planes
	bl	find_infinity_axis
	bl	find_c2_axes
	bl	find_higher_axes
	bl	find_improper_axes
	nop
	pop	{fp, pc}
	.size	find_symmetry_elements, .-find_symmetry_elements
	.align	2
	.global	compare_axes
	.syntax unified
	.arm
	.fpu softvfp
	.type	compare_axes, %function
compare_axes:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L759
	ldr	r3, .L771
	str	r3, [fp, #-24]
.L759:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L760
	ldr	r3, .L771
	str	r3, [fp, #-20]
.L760:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L761
	ldr	r3, [fp, #-8]
	b	.L762
.L761:
	ldr	r3, [fp, #-16]
	add	r1, r3, #16
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-12]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	bl	__aeabi_dcmpgt
	mov	r3, r0
	cmp	r3, #0
	beq	.L769
	mvn	r3, #0
	b	.L762
.L769:
	ldr	r3, [fp, #-16]
	add	r1, r3, #16
	ldmia	r1, {r0-r1}
	ldr	r3, [fp, #-12]
	add	r3, r3, #16
	ldmia	r3, {r2-r3}
	bl	__aeabi_dcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L770
	mov	r3, #1
	b	.L762
.L770:
	mov	r3, #0
.L762:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L772:
	.align	2
.L771:
	.word	10000
	.size	compare_axes, .-compare_axes
	.align	2
	.global	sort_symmetry_elements
	.syntax unified
	.arm
	.fpu softvfp
	.type	sort_symmetry_elements, %function
sort_symmetry_elements:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L778
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L774
	ldr	r3, .L778+4
	ldr	r0, [r3]
	ldr	r3, .L778
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r3, .L778+8
	mov	r2, #4
	bl	qsort
.L774:
	ldr	r3, .L778+12
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L775
	ldr	r3, .L778+16
	ldr	r0, [r3]
	ldr	r3, .L778+12
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r3, .L778+8
	mov	r2, #4
	bl	qsort
.L775:
	ldr	r3, .L778+20
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L777
	ldr	r3, .L778+24
	ldr	r0, [r3]
	ldr	r3, .L778+20
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r3, .L778+8
	mov	r2, #4
	bl	qsort
.L777:
	nop
	pop	{fp, pc}
.L779:
	.align	2
.L778:
	.word	PlanesCount
	.word	Planes
	.word	compare_axes
	.word	NormalAxesCount
	.word	NormalAxes
	.word	ImproperAxesCount
	.word	ImproperAxes
	.size	sort_symmetry_elements, .-sort_symmetry_elements
	.align	2
	.global	report_symmetry_elements_verbose
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_symmetry_elements_verbose, %function
report_symmetry_elements_verbose:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	report_inversion_centers
	bl	report_axes
	bl	report_improper_axes
	bl	report_planes
	nop
	pop	{fp, pc}
	.size	report_symmetry_elements_verbose, .-report_symmetry_elements_verbose
	.align	2
	.global	summarize_symmetry_elements
	.syntax unified
	.arm
	.fpu softvfp
	.type	summarize_symmetry_elements, %function
summarize_symmetry_elements:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L786
	ldr	r3, [r3]
	add	r3, r3, #1
	mov	r1, #4
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L786+4
	str	r2, [r3]
	ldr	r3, .L786
	ldr	r3, [r3]
	add	r3, r3, #1
	mov	r1, #4
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L786+8
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L782
.L783:
	ldr	r3, .L786+4
	ldr	r2, [r3]
	ldr	r3, .L786+12
	ldr	r1, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	add	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L782:
	ldr	r3, .L786+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L783
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L784
.L785:
	ldr	r3, .L786+8
	ldr	r2, [r3]
	ldr	r3, .L786+20
	ldr	r1, [r3]
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	add	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L784:
	ldr	r3, .L786+24
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L785
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L787:
	.align	2
.L786:
	.word	MaxAxisOrder
	.word	NormalAxesCounts
	.word	ImproperAxesCounts
	.word	NormalAxes
	.word	NormalAxesCount
	.word	ImproperAxes
	.word	ImproperAxesCount
	.size	summarize_symmetry_elements, .-summarize_symmetry_elements
	.section	.rodata
	.align	2
.LC221:
	.ascii	"(Cinf) \000"
	.align	2
.LC222:
	.ascii	"(C%d) \000"
	.align	2
.LC223:
	.ascii	"%d*(C%d) \000"
	.align	2
.LC224:
	.ascii	"(S%d) \000"
	.align	2
.LC225:
	.ascii	"%d*(S%d) \000"
	.align	2
.LC226:
	.ascii	"%d*(sigma) \000"
	.align	2
.LC227:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	report_symmetry_elements_brief
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_symmetry_elements_brief, %function
report_symmetry_elements_brief:
	@ args = 0, pretend = 0, frame = 112
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #112
	ldr	r3, .L804
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L804+4
	ldr	r2, [r3]
	ldr	r3, .L804+8
	ldr	r3, [r3]
	add	r2, r2, r3
	ldr	r3, .L804+12
	ldr	r3, [r3]
	add	r2, r2, r3
	ldr	r3, .L804+16
	ldr	r3, [r3]
	add	r3, r2, r3
	add	r2, r3, #2
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	mov	r1, r3
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-112]
	ldr	r3, [fp, #-112]
	cmp	r3, #0
	bne	.L789
	mov	r0, #1
	bl	exit
.L789:
	ldr	r3, .L804+4
	ldr	r2, [r3]
	ldr	r3, .L804+8
	ldr	r3, [r3]
	add	r2, r2, r3
	ldr	r3, .L804+12
	ldr	r3, [r3]
	add	r2, r2, r3
	ldr	r3, .L804+16
	ldr	r3, [r3]
	add	r3, r2, r3
	cmp	r3, #0
	beq	.L790
	ldr	r3, .L804+16
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L791
	ldr	r0, [fp, #-112]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-112]
	add	r3, r3, r2
	ldr	r2, .L804+20
	mov	r0, r3
	mov	r1, r2
	mov	r3, #5
	mov	r2, r3
	bl	memcpy
.L791:
	ldr	r3, .L804+24
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L792
	ldr	r0, [fp, #-112]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-112]
	add	r3, r3, r2
	ldr	r2, .L804+28
	mov	r0, r3
	mov	r1, r2
	mov	r3, #8
	mov	r2, r3
	bl	memcpy
.L792:
	ldr	r3, .L804+24
	ldr	r3, [r3]
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L793
	sub	r3, fp, #108
	mov	r1, r3
	ldr	r0, [fp, #-112]
	bl	strcat
.L793:
	ldr	r3, .L804+32
	ldr	r3, [r3]
	str	r3, [fp, #-116]
	b	.L794
.L797:
	ldr	r3, .L804+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-116]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L795
	sub	r3, fp, #108
	ldr	r2, [fp, #-116]
	ldr	r1, .L804+36
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #108
	mov	r1, r3
	ldr	r0, [fp, #-112]
	bl	strcat
.L795:
	ldr	r3, .L804+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-116]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L796
	ldr	r3, .L804+24
	ldr	r2, [r3]
	ldr	r3, [fp, #-116]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	sub	r0, fp, #108
	ldr	r3, [fp, #-116]
	ldr	r1, .L804+40
	bl	sprintf
	sub	r3, fp, #108
	mov	r1, r3
	ldr	r0, [fp, #-112]
	bl	strcat
.L796:
	ldr	r3, [fp, #-116]
	sub	r3, r3, #1
	str	r3, [fp, #-116]
.L794:
	ldr	r3, [fp, #-116]
	cmp	r3, #1
	bgt	.L797
	ldr	r3, .L804+32
	ldr	r3, [r3]
	str	r3, [fp, #-116]
	b	.L798
.L801:
	ldr	r3, .L804+44
	ldr	r2, [r3]
	ldr	r3, [fp, #-116]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L799
	sub	r3, fp, #108
	ldr	r2, [fp, #-116]
	ldr	r1, .L804+48
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #108
	mov	r1, r3
	ldr	r0, [fp, #-112]
	bl	strcat
.L799:
	ldr	r3, .L804+44
	ldr	r2, [r3]
	ldr	r3, [fp, #-116]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L800
	ldr	r3, .L804+44
	ldr	r2, [r3]
	ldr	r3, [fp, #-116]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [r3]
	sub	r0, fp, #108
	ldr	r3, [fp, #-116]
	ldr	r1, .L804+52
	bl	sprintf
	sub	r3, fp, #108
	mov	r1, r3
	ldr	r0, [fp, #-112]
	bl	strcat
.L800:
	ldr	r3, [fp, #-116]
	sub	r3, r3, #1
	str	r3, [fp, #-116]
.L798:
	ldr	r3, [fp, #-116]
	cmp	r3, #1
	bgt	.L801
	ldr	r3, .L804+4
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L802
	ldr	r0, [fp, #-112]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-112]
	add	r3, r3, r2
	ldr	r2, .L804+56
	mov	r0, r3
	mov	r1, r2
	mov	r3, #9
	mov	r2, r3
	bl	memcpy
.L802:
	ldr	r3, .L804+4
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L790
	ldr	r3, .L804+4
	ldr	r2, [r3]
	sub	r3, fp, #108
	ldr	r1, .L804+60
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #108
	mov	r1, r3
	ldr	r0, [fp, #-112]
	bl	strcat
.L790:
	ldr	r2, .L804+64
	ldr	r3, [fp, #-112]
	str	r3, [r2]
	nop
	ldr	r3, .L804
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L803
	bl	__stack_chk_fail
.L803:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L805:
	.align	2
.L804:
	.word	.LC227
	.word	PlanesCount
	.word	NormalAxesCount
	.word	ImproperAxesCount
	.word	InversionCentersCount
	.word	.LC5
	.word	NormalAxesCounts
	.word	.LC221
	.word	MaxAxisOrder
	.word	.LC222
	.word	.LC223
	.word	ImproperAxesCounts
	.word	.LC224
	.word	.LC225
	.word	.LC3
	.word	.LC226
	.word	SymmetryCode
	.size	report_symmetry_elements_brief, .-report_symmetry_elements_brief
	.section	.rodata
	.align	2
.LC228:
	.ascii	"It looks very much like %s, but it is not since %s\012"
	.ascii	"\000"
	.align	2
.LC229:
	.ascii	"    %s\012\000"
	.text
	.align	2
	.global	identify_point_group
	.syntax unified
	.arm
	.fpu softvfp
	.type	identify_point_group, %function
identify_point_group:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mvn	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L807
.L810:
	ldr	r3, .L817
	ldr	r0, [r3]
	ldr	r1, .L817+4
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r1, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L808
	ldr	r1, .L817+4
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r3, r3, #8
	ldr	r3, [r3]
	blx	r3
	mov	r3, r0
	cmp	r3, #1
	bne	.L809
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
	b	.L808
.L809:
	ldr	r3, .L817+8
	ldr	r3, [r3]
	cmn	r3, #1
	blt	.L808
	ldr	r1, .L817+4
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r2, .L817+12
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L817+16
	bl	printf
.L808:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L807:
	ldr	r3, [fp, #-16]
	cmp	r3, #57
	bls	.L810
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	ble	.L811
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L812
.L814:
	ldr	r3, .L817
	ldr	r0, [r3]
	ldr	r1, .L817+4
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r1, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L813
	ldr	r1, .L817+4
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	add	r3, r3, #8
	ldr	r3, [r3]
	blx	r3
	mov	r3, r0
	cmp	r3, #1
	bne	.L813
	ldr	r1, .L817+4
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L817+20
	bl	printf
.L813:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L812:
	ldr	r3, [fp, #-16]
	cmp	r3, #57
	bls	.L814
.L811:
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	bne	.L816
	ldr	r1, .L817+4
	ldr	r2, [fp, #-12]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L817+24
	str	r2, [r3]
	ldr	r3, .L817+24
	ldr	r0, [r3]
	ldr	r1, .L817+4
	ldr	r2, [fp, #-12]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	mov	r1, r3
	bl	strcpy
.L816:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L818:
	.align	2
.L817:
	.word	SymmetryCode
	.word	PointGroups
	.word	verbose
	.word	PointGroupRejectionReason
	.word	.LC228
	.word	.LC229
	.word	pgroup
	.size	identify_point_group, .-identify_point_group
	.section	.rodata
	.align	2
.LC230:
	.ascii	"\012\000"
	.align	2
.LC231:
	.ascii	"%d\000"
	.align	2
.LC232:
	.ascii	"%d %lg %lg %lg\012\000"
	.align	2
.LC233:
	.ascii	"Error reading description of the atom %d\012\000"
	.text
	.align	2
	.global	read_coordinates
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_coordinates, %function
read_coordinates:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r1, .L824
	ldr	r0, [fp, #-16]
	bl	strtok
	str	r0, [fp, #-8]
	ldr	r2, .L824+4
	ldr	r1, .L824+8
	ldr	r0, [fp, #-8]
	bl	__isoc99_sscanf
	ldr	r3, .L824+4
	ldr	r3, [r3]
	mov	r1, #32
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L824+12
	str	r2, [r3]
	ldr	r1, .L824
	mov	r0, #0
	bl	strtok
	str	r0, [fp, #-8]
	b	.L820
.L823:
	ldr	r3, .L824+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #5
	add	r3, r2, r3
	mov	ip, r3
	ldr	r3, .L824+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #5
	add	r3, r2, r3
	add	r0, r3, #8
	ldr	r3, .L824+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #5
	add	r3, r2, r3
	add	r3, r3, #16
	ldr	r2, .L824+12
	ldr	r1, [r2]
	ldr	r2, [fp, #-12]
	lsl	r2, r2, #5
	add	r2, r1, r2
	add	r2, r2, #24
	str	r2, [sp, #4]
	str	r3, [sp]
	mov	r3, r0
	mov	r2, ip
	ldr	r1, .L824+16
	ldr	r0, [fp, #-8]
	bl	__isoc99_sscanf
	mov	r3, r0
	cmp	r3, #4
	beq	.L821
	ldr	r3, .L824+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, .L824+24
	mov	r0, r3
	bl	fprintf
	mvn	r3, #0
	b	.L822
.L821:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r1, .L824
	mov	r0, #0
	bl	strtok
	str	r0, [fp, #-8]
.L820:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L823
	mov	r3, #0
.L822:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L825:
	.align	2
.L824:
	.word	.LC230
	.word	AtomsCount
	.word	.LC231
	.word	Atoms
	.word	.LC232
	.word	stderr
	.word	.LC233
	.size	read_coordinates, .-read_coordinates
	.section	.rodata
	.align	2
.LC234:
	.ascii	"Error reading in atomic coordinates\012\000"
	.align	2
.LC235:
	.ascii	"Refinement of some symmetry elements was terminated"
	.ascii	" before convergence was reached.\012Some symmetry e"
	.ascii	"lements may remain unidentified.\000"
	.text
	.align	2
	.global	symmetry
	.syntax unified
	.arm
	.fpu softvfp
	.type	symmetry, %function
symmetry:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	read_coordinates
	mov	r3, r0
	cmp	r3, #0
	bge	.L827
	ldr	r3, .L830
	ldr	r3, [r3]
	mov	r2, #36
	mov	r1, #1
	ldr	r0, .L830+4
	bl	fwrite
	mov	r0, #1
	bl	exit
.L827:
	bl	find_symmetry_elements
	bl	sort_symmetry_elements
	bl	summarize_symmetry_elements
	ldr	r3, .L830+8
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L828
	ldr	r0, .L830+12
	bl	puts
.L828:
	bl	report_symmetry_elements_brief
	bl	identify_point_group
	ldr	r3, .L830+16
	ldr	r3, [r3]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L831:
	.align	2
.L830:
	.word	stderr
	.word	.LC234
	.word	BadOptimization
	.word	.LC235
	.word	pgroup
	.size	symmetry, .-symmetry
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
