// File: /workspace/github_cpp_makefile_star2_O1/dannycalegari[P]circle_pack/./Trigonometry_routine.cc
// Function: XZ_ROT(double)
Matrix XZ_ROT(double angle){	// rotation in xz-plane
	// returns matrix C=cos(angle), S=sin(angle)
	// (C  0 -S)
	// (0  1  0)
	// (S  0  C)
	Matrix M;
	M.e.clear();
	vector<double> row;
	row.clear();
	row.push_back(cos(angle));
	row.push_back(0.0);
	row.push_back(-sin(angle));
	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(sin(angle));
	row.push_back(0.0);
	row.push_back(cos(angle));
	M.e.push_back(row);
	return(M);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x38, %rsp
movsd %xmm0, 0x30(%rsp)
movq %rdi, %rbx
xorl %r14d, %r14d
movq %r14, 0x10(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
xorl %esi, %esi
callq 0x9c0c
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq %r14, 0x20(%rsp)
cmpq %r14, 0x18(%rsp)
je 0x2bbf
movq $0x0, 0x18(%rsp)
movsd 0x30(%rsp), %xmm0
callq 0x23d0
movsd %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2beb
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2bfa
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
movq $0x0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2c21
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2c30
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
movsd 0x30(%rsp), %xmm0
callq 0x2060
xorps 0x847e(%rip), %xmm0     # 0xb0c0
movlps %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2c62
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2c71
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x9130
movq 0x10(%rsp), %rax
cmpq %rax, 0x18(%rsp)
je 0x2c8f
movq %rax, 0x18(%rsp)
movq $0x0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2cb6
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2cc5
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2cee
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2cfd
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
movq $0x0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2d24
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2d33
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x9130
movq 0x10(%rsp), %rax
cmpq %rax, 0x18(%rsp)
je 0x2d51
movq %rax, 0x18(%rsp)
movsd 0x30(%rsp), %xmm0
callq 0x2060
movsd %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2d7d
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2d8c
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
movq $0x0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2db3
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2dc2
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
movsd 0x30(%rsp), %xmm0
callq 0x23d0
movsd %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x2dee
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x2dfd
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x982a
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x9130
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2e21
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r14
retq
jmp 0x2e3e
jmp 0x2e3e
jmp 0x2e3e
jmp 0x2e3e
jmp 0x2e3e
jmp 0x2e3e
jmp 0x2e3e
jmp 0x2e3e
jmp 0x2e3e
movq %rax, %r14
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2e58
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x9496
movq %r14, %rdi
callq 0x23b0