// File: /workspace/github_c_makefile_star2_O0/georgeweigt[P]eigenmath/eigenmath.c
// Function: cmp_factors
int
cmp_factors(struct atom *p1, struct atom *p2)
{
	int a, b, c;
	struct atom *base1, *base2, *expo1, *expo2;

	a = order_factor(p1);
	b = order_factor(p2);

	if (a < b)
		return -1;

	if (a > b)
		return 1;

	if (car(p1) == symbol(POWER)) {
		base1 = cadr(p1);
		expo1 = caddr(p1);
	} else {
		base1 = p1;
		expo1 = one;
	}

	if (car(p2) == symbol(POWER)) {
		base2 = cadr(p2);
		expo2 = caddr(p2);
	} else {
		base2 = p2;
		expo2 = one;
	}

	c = cmp(base1, base2);

	if (c == 0)
		c = cmp(expo2, expo1); // swapped to reverse sort order

	return c;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x27310
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rdi
callq 0x27310
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0xdccf
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xe148
movl -0x1c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jle 0xdce3
movl $0x1, -0x4(%rbp)
jmp 0xe148
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdcfd
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0xdd08
movq 0x50cfc(%rip), %rax     # 0x5ea00
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq 0x5359d(%rip), %rax     # 0x612b0
jne 0xdecd
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdd34
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0xdd3f
movq 0x50cc5(%rip), %rax     # 0x5ea00
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdd7f
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdd67
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0xdd72
movq 0x50c92(%rip), %rax     # 0x5ea00
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0xdd8a
movq 0x50c7a(%rip), %rax     # 0x5ea00
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xddad
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0xddb8
movq 0x50c4c(%rip), %rax     # 0x5ea00
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xddf9
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdde0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x78(%rbp)
jmp 0xddeb
movq 0x50c19(%rip), %rax     # 0x5ea00
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x80(%rbp)
jmp 0xde04
movq 0x50c00(%rip), %rax     # 0x5ea00
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdeb2
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xde33
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x88(%rbp)
jmp 0xde41
movq 0x50bc6(%rip), %rax     # 0x5ea00
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xde91
movq -0x10(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xde6f
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x90(%rbp)
jmp 0xde7d
movq 0x50b8a(%rip), %rax     # 0x5ea00
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
jmp 0xde9f
movq 0x50b68(%rip), %rax     # 0x5ea00
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
jmp 0xdec0
movq 0x50b47(%rip), %rax     # 0x5ea00
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0xdee0
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq 0x116bfc(%rip), %rax    # 0x124ad8
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdefd
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
jmp 0xdf0b
movq 0x50afc(%rip), %rax     # 0x5ea00
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
cmpq 0x53397(%rip), %rax     # 0x612b0
jne 0xe109
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdf3d
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb0(%rbp)
jmp 0xdf4b
movq 0x50abc(%rip), %rax     # 0x5ea00
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdf9a
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdf79
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb8(%rbp)
jmp 0xdf87
movq 0x50a80(%rip), %rax     # 0x5ea00
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xc0(%rbp)
jmp 0xdfa8
movq 0x50a5f(%rip), %rax     # 0x5ea00
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xdfd1
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xc8(%rbp)
jmp 0xdfdf
movq 0x50a28(%rip), %rax     # 0x5ea00
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xe02f
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xe00d
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xd0(%rbp)
jmp 0xe01b
movq 0x509ec(%rip), %rax     # 0x5ea00
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xd8(%rbp)
jmp 0xe03d
movq 0x509ca(%rip), %rax     # 0x5ea00
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xe0ee
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xe06f
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xe0(%rbp)
jmp 0xe07d
movq 0x5098a(%rip), %rax     # 0x5ea00
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xe0cd
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0xe0ab
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xe8(%rbp)
jmp 0xe0b9
movq 0x5094e(%rip), %rax     # 0x5ea00
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xf0(%rbp)
jmp 0xe0db
movq 0x5092c(%rip), %rax     # 0x5ea00
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xf8(%rbp)
jmp 0xe0fc
movq 0x5090b(%rip), %rax     # 0x5ea00
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0xe11c
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq 0x1169c0(%rip), %rax    # 0x124ad8
movq %rax, -0x48(%rbp)
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x93b0
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jne 0xe142
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x93b0
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
nopw %cs:(%rax,%rax)