// File: /workspace/github_cpp_makefile_star2_O3/dannycalegari[P]circle_pack/./Trigonometry_routine.cc
// Function: HTR(double)
Matrix HTR(double dist){	// translation in hyperbolic plane along x axis
	// returns matrix c=cosh(dist), s=sinh(dist)
	// (c  0  s)
	// (0  1  0)
	// (s  0  c)
	Matrix M;
	vector<double> row;
	row.clear();
	row.push_back(cosh(dist));
	row.push_back(0.0);
	row.push_back(sinh(dist));
	M.e.push_back(row);
	row.clear();
	row.push_back(0.0);
	row.push_back(1.0);
	row.push_back(0.0);
	M.e.push_back(row);
	row.clear();
	row.push_back(sinh(dist));
	row.push_back(0.0);
	row.push_back(cosh(dist));
	M.e.push_back(row);
	return(M);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
xorl %eax, %eax
movq %rax, 0x10(%rdi)
xorps %xmm1, %xmm1
movups %xmm1, (%rdi)
leaq 0x10(%rsp), %r14
movq %rax, 0x10(%r14)
movaps %xmm1, (%r14)
movsd %xmm0, 0x30(%rsp)
callq 0x2290
leaq 0x8(%rsp), %rdx
movsd %xmm0, (%rdx)
movq %r14, %rdi
xorl %esi, %esi
callq 0x94a6
movq 0x18(%rsp), %rsi
movq $0x0, 0x8(%rsp)
cmpq 0x20(%rsp), %rsi
je 0x3134
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x3143
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
movsd 0x30(%rsp), %xmm0
callq 0x21b0
movsd %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x316f
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x317e
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x8dc8
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rsi
cmpq %rax, %rsi
je 0x31a2
movq %rax, 0x18(%rsp)
movq %rax, %rsi
movq $0x0, 0x8(%rsp)
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x31c7
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x31e0
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movabsq $0x3ff0000000000000, %rcx # imm = 0x3FF0000000000000
movq %rcx, 0x8(%rsp)
cmpq %rax, %rsi
je 0x3202
movq %rcx, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x321b
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movq $0x0, 0x8(%rsp)
cmpq %rax, %rsi
je 0x323b
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x324a
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x8dc8
movq 0x10(%rsp), %rax
cmpq %rax, 0x18(%rsp)
je 0x3268
movq %rax, 0x18(%rsp)
movsd 0x30(%rsp), %xmm0
callq 0x21b0
movsd %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x3297
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x32b0
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movq $0x0, 0x8(%rsp)
cmpq %rax, %rsi
je 0x32d0
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x32df
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
movsd 0x30(%rsp), %xmm0
callq 0x2290
movsd %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x330b
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x331a
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x94a6
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x8dc8
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x333e
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r14
retq
jmp 0x335b
jmp 0x335b
jmp 0x335b
jmp 0x335b
jmp 0x335b
jmp 0x335b
jmp 0x335b
jmp 0x335b
jmp 0x335b
movq %rax, %r14
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3375
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x9106
movq %r14, %rdi
callq 0x23b0