// File: /workspace/github_c_makefile_star2_O0/georgeweigt[P]eigenmath/eigenmath.c
// Function: power_natural_number
void
power_natural_number(struct atom *EXPO)
{
	double x, y;

	// exp(x + i y) = exp(x) (cos(y) + i sin(y))

	if (isdoublez(EXPO)) {
		if (car(EXPO) == symbol(ADD)) {
			x = cadr(EXPO)->u.d;
			y = cadaddr(EXPO)->u.d;
		} else {
			x = 0.0;
			y = cadr(EXPO)->u.d;
		}
		push_double(exp(x));
		push_double(y);
		cosfunc();
		push(imaginaryunit);
		push_double(y);
		sinfunc();
		multiply();
		add();
		multiply();
		return;
	}

	// e^log(expr) = expr

	if (car(EXPO) == symbol(LOG)) {
		push(cadr(EXPO));
		return;
	}

	if (isdenormalpolar(EXPO)) {
		normalize_polar(EXPO);
		return;
	}

	push_symbol(POWER);
	push_symbol(EXP1);
	push(EXPO);
	list(3);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xf370
cmpl $0x0, %eax
je 0x2a4c8
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29dbb
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x29dc6
movq 0x34c3e(%rip), %rax     # 0x5ea00
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq 0x374cf(%rip), %rax     # 0x612a0
jne 0x2a3da
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29df2
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x29dfd
movq 0x34c07(%rip), %rax     # 0x5ea00
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29e3d
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29e25
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x29e30
movq 0x34bd4(%rip), %rax     # 0x5ea00
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0x29e48
movq 0x34bbc(%rip), %rax     # 0x5ea00
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29e70
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x29e7b
movq 0x34b89(%rip), %rax     # 0x5ea00
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29ebc
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29ea3
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0x29eae
movq 0x34b56(%rip), %rax     # 0x5ea00
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x29ec7
movq 0x34b3d(%rip), %rax     # 0x5ea00
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29f53
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29eef
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0x29efa
movq 0x34b0a(%rip), %rax     # 0x5ea00
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29f3b
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29f22
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x29f2d
movq 0x34ad7(%rip), %rax     # 0x5ea00
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0x29f46
movq 0x34abe(%rip), %rax     # 0x5ea00
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x29f5e
movq 0x34aa6(%rip), %rax     # 0x5ea00
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a0ba
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29f8a
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x78(%rbp)
jmp 0x29f95
movq 0x34a6f(%rip), %rax     # 0x5ea00
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29fd9
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x29fbd
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x80(%rbp)
jmp 0x29fc8
movq 0x34a3c(%rip), %rax     # 0x5ea00
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x88(%rbp)
jmp 0x29fe7
movq 0x34a20(%rip), %rax     # 0x5ea00
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a098
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a019
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x90(%rbp)
jmp 0x2a027
movq 0x349e0(%rip), %rax     # 0x5ea00
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a077
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a055
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
jmp 0x2a063
movq 0x349a4(%rip), %rax     # 0x5ea00
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xa0(%rbp)
jmp 0x2a085
movq 0x34982(%rip), %rax     # 0x5ea00
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
jmp 0x2a0a6
movq 0x34961(%rip), %rax     # 0x5ea00
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb0(%rbp)
jmp 0x2a0c8
movq 0x3493f(%rip), %rax     # 0x5ea00
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a3b7
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a0fa
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb8(%rbp)
jmp 0x2a108
movq 0x348ff(%rip), %rax     # 0x5ea00
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a158
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a136
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xc0(%rbp)
jmp 0x2a144
movq 0x348c3(%rip), %rax     # 0x5ea00
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xc8(%rbp)
jmp 0x2a166
movq 0x348a1(%rip), %rax     # 0x5ea00
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a217
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a198
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xd0(%rbp)
jmp 0x2a1a6
movq 0x34861(%rip), %rax     # 0x5ea00
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a1f6
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a1d4
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xd8(%rbp)
jmp 0x2a1e2
movq 0x34825(%rip), %rax     # 0x5ea00
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xe0(%rbp)
jmp 0x2a204
movq 0x34803(%rip), %rax     # 0x5ea00
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xe8(%rbp)
jmp 0x2a225
movq 0x347e2(%rip), %rax     # 0x5ea00
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a396
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a257
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xf0(%rbp)
jmp 0x2a265
movq 0x347a2(%rip), %rax     # 0x5ea00
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a2b5
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a293
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xf8(%rbp)
jmp 0x2a2a1
movq 0x34766(%rip), %rax     # 0x5ea00
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x100(%rbp)
jmp 0x2a2c3
movq 0x34744(%rip), %rax     # 0x5ea00
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a374
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a2f5
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x108(%rbp)
jmp 0x2a303
movq 0x34704(%rip), %rax     # 0x5ea00
movq %rax, -0x108(%rbp)
movq -0x108(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a353
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a331
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x110(%rbp)
jmp 0x2a33f
movq 0x346c8(%rip), %rax     # 0x5ea00
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x118(%rbp)
jmp 0x2a361
movq 0x346a6(%rip), %rax     # 0x5ea00
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x120(%rbp)
jmp 0x2a382
movq 0x34685(%rip), %rax     # 0x5ea00
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x128(%rbp)
jmp 0x2a3a4
movq 0x34663(%rip), %rax     # 0x5ea00
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x130(%rbp)
jmp 0x2a3c5
movq 0x34642(%rip), %rax     # 0x5ea00
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
jmp 0x2a47b
xorps %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a400
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x138(%rbp)
jmp 0x2a40e
movq 0x345f9(%rip), %rax     # 0x5ea00
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a45d
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a43c
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x140(%rbp)
jmp 0x2a44a
movq 0x345bd(%rip), %rax     # 0x5ea00
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x148(%rbp)
jmp 0x2a46b
movq 0x3459c(%rip), %rax     # 0x5ea00
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
callq 0x7370
callq 0xe5e0
movsd -0x18(%rbp), %xmm0
callq 0xe5e0
callq 0x141f0
movq 0xfa640(%rip), %rdi     # 0x124ae0
callq 0x9110
movsd -0x18(%rbp), %xmm0
callq 0xe5e0
callq 0x14de0
callq 0xc280
callq 0xc660
callq 0xc280
jmp 0x2a5e2
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a4e5
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x150(%rbp)
jmp 0x2a4f3
movq 0x34514(%rip), %rax     # 0x5ea00
movq %rax, -0x150(%rbp)
movq -0x150(%rbp), %rax
cmpq 0x33ecf(%rip), %rax     # 0x5e3d0
jne 0x2a59e
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a525
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x158(%rbp)
jmp 0x2a533
movq 0x344d4(%rip), %rax     # 0x5ea00
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a582
movq -0x8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x2a561
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x160(%rbp)
jmp 0x2a56f
movq 0x34498(%rip), %rax     # 0x5ea00
movq %rax, -0x160(%rbp)
movq -0x160(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x168(%rbp)
jmp 0x2a590
movq 0x34477(%rip), %rax     # 0x5ea00
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rdi
callq 0x9110
jmp 0x2a5e2
movq -0x8(%rbp), %rdi
callq 0x2b250
cmpl $0x0, %eax
je 0x2a5b7
movq -0x8(%rbp), %rdi
callq 0x2b360
jmp 0x2a5e2
movq 0x36cf2(%rip), %rdi     # 0x612b0
callq 0x9110
movq 0x36cfe(%rip), %rdi     # 0x612c8
callq 0x9110
movq -0x8(%rbp), %rdi
callq 0x9110
movl $0x3, %edi
callq 0x90d0
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
nopl (%rax,%rax)