// File: /workspace/github_c_makefile_star2_O1/georgeweigt[P]eigenmath/eigenmath.c
// Function: static_reciprocate
void
static_reciprocate(void)
{
	struct atom *p1, *p2;

	p2 = pop();
	p1 = pop();

	// save divide by zero error for runtime

	if (iszero(p2)) {
		push(p1);
		push_symbol(POWER);
		push(p2);
		push_integer(-1);
		list(3);
		return;
	}

	if (isnum(p1) && isnum(p2)) {
		push(p1);
		push(p2);
		divide();
		return;
	}

	if (!isrational(p1) || !isequaln(p1, 1))
		push(p1); // p1 != 1

	if (isnum(p2)) {
		push(p2);
		reciprocate();
		return;
	}

	if (car(p2) == symbol(POWER) && isnum(caddr(p2))) {
		push_symbol(POWER);
		push(cadr(p2));
		push(caddr(p2));
		negate();
		list(3);
		return;
	}

	push_symbol(POWER);
	push(p2);
	push_integer(-1);
	list(3);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
callq 0x8b78
movq %rax, %r14
movq %rax, %rbx
callq 0x8b78
movq %rax, %r15
movq %r14, %rdi
callq 0xaece
testl %eax, %eax
je 0x25578
movq %r15, %rdi
callq 0x8b01
movq 0x1dd65(%rip), %rdi     # 0x432b0
callq 0x8b01
movq %rbx, %rdi
callq 0x8b01
movq 0xebe91(%rip), %rdi     # 0x1113f0
callq 0x8b01
movl $0x3, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8ad9
movb 0x10(%r15), %al
movl %eax, %ecx
andb $-0x2, %cl
cmpb $0x4, %cl
jne 0x255c6
movb 0x10(%rbx), %cl
andb $-0x2, %cl
cmpb $0x4, %cl
jne 0x255c6
movq %r15, %rdi
callq 0x8b01
movq %rbx, %rdi
callq 0x8b01
movq 0xebe48(%rip), %rdi     # 0x1113f0
callq 0x8b01
callq 0xa234
movl $0x2, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xa8bb
cmpb $0x4, %al
jne 0x255e0
movq %r15, %rdi
movl $0x1, %esi
movl $0x1, %edx
callq 0xcb82
testl %eax, %eax
jne 0x255e8
movq %r15, %rdi
callq 0x8b01
movb 0x10(%rbx), %al
movzbl %al, %ecx
leal -0x4(%rcx), %edx
cmpl $0x2, %edx
jae 0x25619
movq %rbx, %rdi
callq 0x8b01
movq 0xebdeb(%rip), %rdi     # 0x1113f0
callq 0x8b01
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xa234
movq %rbx, %rdx
cmpl $0x1, %ecx
je 0x25628
leaq 0x1b3d8(%rip), %rdx     # 0x40a00
movq 0x1dc81(%rip), %rdi     # 0x432b0
cmpq %rdi, (%rdx)
jne 0x2554b
addq $0x8, %r14
cmpb $0x1, %al
leaq 0x1b3bb(%rip), %rdx     # 0x40a00
movq %rdx, %rax
cmoveq %r14, %rax
movq (%rax), %rax
movb 0x10(%rax), %cl
addq $0x8, %rax
cmpb $0x1, %cl
movq %rdx, %rsi
cmoveq %rax, %rsi
movq (%rsi), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x2567a
cmpb $0x1, %cl
leaq 0x1b38d(%rip), %rdx     # 0x40a00
cmoveq %rax, %rdx
movq (%rdx), %rdx
movq (%rdx), %rdx
cmpb $0x4, 0x10(%rdx)
je 0x256bb
cmpb $0x1, %cl
leaq 0x1b373(%rip), %rdx     # 0x40a00
movq %rdx, %rsi
cmoveq %rax, %rsi
movq (%rsi), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x256ae
cmpb $0x1, %cl
leaq 0x1b359(%rip), %rcx     # 0x40a00
cmoveq %rax, %rcx
movq (%rcx), %rdx
movq (%rdx), %rax
cmpb $0x5, 0x10(%rax)
jne 0x2554b
callq 0x8b01
cmpb $0x1, 0x10(%rbx)
leaq 0x1b335(%rip), %r15     # 0x40a00
movq %r15, %rax
cmoveq %r14, %rax
movq (%rax), %rax
cmpb $0x1, 0x10(%rax)
cmovneq %r15, %rax
movq (%rax), %rdi
callq 0x8b01
cmpb $0x1, 0x10(%rbx)
cmovneq %r15, %r14
movq (%r14), %rax
movb 0x10(%rax), %cl
addq $0x8, %rax
cmpb $0x1, %cl
movq %r15, %rdx
cmoveq %rax, %rdx
movq (%rdx), %rdx
cmpb $0x1, 0x10(%rdx)
jne 0x2571b
cmpb $0x1, %cl
leaq 0x1b2ec(%rip), %rcx     # 0x40a00
cmoveq %rax, %rcx
movq (%rcx), %r15
movq (%r15), %rdi
callq 0x8b01
movq 0xebcc6(%rip), %rdi     # 0x1113f0
callq 0x8b01
movl $0x2, %edi
callq 0xa8bb
jmp 0x25564