// File: /workspace/github_c_makefile_star2_O3/georgeweigt[P]eigenmath/eigenmath.c
// Function: fmt_update_superscript
void
fmt_update_superscript(void)
{
	int d, dx, dy, h, w, y;
	struct atom *p1, *p2;

	p2 = pop(); // exponent
	p1 = pop(); // base

	h = HEIGHT(p2);
	d = DEPTH(p2);
	w = WIDTH(p2);

	// y is distance from baseline to bottom of superscript

	y = HEIGHT(p1) - d - 1;

	y = MAX(y, 1);

	dx = 0;
	dy = -(y + d);

	h = y + h + d;
	d = 0;

	if (OPCODE(p1) == EMIT_SUBSCRIPT) {
		dx = -WIDTH(p1);
		w = MAX(0, w - WIDTH(p1));
	}

	push(p1); // base

	push_double(EMIT_SUPERSCRIPT);
	push_double(h);
	push_double(d);
	push_double(w);
	push_double(dx);
	push_double(dy);
	push(p2);

	list(7);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl 0x19d20(%rip), %eax     # 0x3f2b8
movl $0xfffe795f, %ecx       # imm = 0xFFFE795F
leal (%rax,%rcx), %edx
cmpl %ecx, %edx
jbe 0x259c7
leal -0x1(%rax), %ecx
movl %ecx, 0x19d07(%rip)     # 0x3f2b8
cmpl $0x1, %eax
jbe 0x259c7
leaq 0x22fff(%rip), %rsi     # 0x485c0
movq (%rsi,%rcx,8), %rbx
addl $-0x2, %eax
movl %eax, 0x19cea(%rip)     # 0x3f2b8
cmpb $0x1, 0x10(%rbx)
leaq 0x8(%rbx), %rcx
leaq 0x20423(%rip), %rdx     # 0x45a00
cmovneq %rdx, %rcx
movq (%rsi,%rax,8), %rdi
movq (%rcx), %rcx
movb 0x10(%rcx), %sil
cmpb $0x1, %sil
jne 0x25642
movq (%rcx), %rax
movq 0x8(%rcx), %r8
movsd (%rax), %xmm0
cmpb $0x1, 0x10(%r8)
leaq 0x203f7(%rip), %rax     # 0x45a00
movq %rax, %r9
cmoveq %r8, %r9
movq (%r9), %r9
movsd (%r9), %xmm1
jne 0x25691
movq 0x8(%r8), %r8
cmpb $0x1, 0x10(%r8)
jne 0x256aa
cmpb $0x1, %sil
jne 0x25674
movq 0x8(%rcx), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x2569e
addq $0x8, %rcx
movq %rcx, %rax
jmp 0x25688
movq 0x203b7(%rip), %rax     # 0x45a00
movsd (%rax), %xmm0
cmpb $0x1, 0x10(%rax)
jne 0x256a3
movq (%rax), %rax
movsd (%rax), %xmm1
movq 0x2039f(%rip), %rax     # 0x45a00
cmpb $0x1, 0x10(%rax)
jne 0x256a7
movq 0x8(%rax), %rax
cmpb $0x1, 0x10(%rax)
movq %rdx, %rax
jne 0x256aa
leaq 0x20385(%rip), %rax     # 0x45a00
movq 0x2037e(%rip), %rcx     # 0x45a00
cmpb $0x1, 0x10(%rcx)
jne 0x2569e
movq (%rax), %rax
addq $0x8, %rax
jmp 0x2569e
movq 0x20368(%rip), %rcx     # 0x45a00
cmpb $0x1, 0x10(%rcx)
jne 0x256aa
movq (%rax), %rax
jmp 0x256aa
movapd %xmm0, %xmm1
movq %rdx, %rax
movq (%rax), %rax
cvttsd2si (%rax), %r14d
leaq 0x8(%rdi), %rax
cmpb $0x1, 0x10(%rdi)
cmovneq %rdx, %rax
movq (%rax), %rax
movq %rdx, %rsi
cmoveq %rdi, %rsi
movb 0x10(%rax), %cl
cmpb $0x1, %cl
cmoveq %rax, %rdx
movq (%rsi), %rsi
cvttsd2si (%rsi), %esi
movq (%rdx), %rdx
movsd (%rdx), %xmm2
cmpl $0x5, %esi
jne 0x25707
cmpb $0x1, %cl
jne 0x25710
movq 0x8(%rax), %rdx
cmpb $0x1, 0x10(%rdx)
jne 0x25736
movq 0x8(%rdx), %rdx
cmpb $0x1, 0x10(%rdx)
je 0x25743
leaq 0x202fb(%rip), %rdx     # 0x45a00
jmp 0x25765
xorpd %xmm3, %xmm3
jmp 0x258ac
movq 0x202e9(%rip), %rdx     # 0x45a00
cmpb $0x1, 0x10(%rdx)
jne 0x25753
movq 0x8(%rdx), %rdx
cmpb $0x1, 0x10(%rdx)
movq 0x202d4(%rip), %rdx     # 0x45a00
je 0x25747
cvttsd2si (%rdx), %edx
negl %edx
jmp 0x25773
movq 0x202c3(%rip), %rdx     # 0x45a00
cmpb $0x1, 0x10(%rdx)
jne 0x25799
movq 0x8(%rax), %rdx
cmpb $0x1, 0x10(%rdx)
jne 0x2575b
addq $0x8, %rdx
jmp 0x25762
cvttsd2si (%rdx), %edx
negl %edx
jmp 0x257cf
leaq 0x2029e(%rip), %rdx     # 0x45a00
movq (%rdx), %rdx
movq (%rdx), %rdx
cvttsd2si (%rdx), %edx
negl %edx
cmpb $0x1, %cl
je 0x257a6
movq 0x20286(%rip), %r8      # 0x45a00
leaq 0x2027f(%rip), %rsi     # 0x45a00
cmpb $0x1, 0x10(%r8)
jne 0x2580d
movq 0x8(%r8), %r8
cmpb $0x1, 0x10(%r8)
je 0x257ee
jmp 0x2580d
movq 0x20260(%rip), %rdx     # 0x45a00
cvttsd2si (%rdx), %edx
negl %edx
movq 0x8(%rax), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x257d8
movq 0x8(%rsi), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x257cf
cmpb $0x1, %cl
jne 0x257ee
movq 0x8(%rax), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x257e5
leaq 0x8(%rax), %rsi
jmp 0x25803
leaq 0x2022a(%rip), %rsi     # 0x45a00
jmp 0x2580d
movq 0x20221(%rip), %rsi     # 0x45a00
cmpb $0x1, 0x10(%rsi)
jne 0x25854
leaq 0x20214(%rip), %rsi     # 0x45a00
jmp 0x2580a
leaq 0x2020b(%rip), %rsi     # 0x45a00
movq 0x20204(%rip), %r8      # 0x45a00
cmpb $0x1, 0x10(%r8)
jne 0x2580a
movq (%rsi), %rsi
addq $0x8, %rsi
movq (%rsi), %rsi
movq (%rsi), %rsi
cvttsd2si (%rsi), %esi
cmpl %esi, %r14d
jge 0x25821
xorl %r14d, %r14d
jmp 0x258a8
cmpb $0x1, %cl
jne 0x25836
movq 0x8(%rax), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x2585d
leaq 0x8(%rax), %rsi
jmp 0x2584b
leaq 0x201c3(%rip), %rsi     # 0x45a00
movq 0x201bc(%rip), %r8      # 0x45a00
cmpb $0x1, 0x10(%r8)
jne 0x2589e
movq (%rsi), %rsi
addq $0x8, %rsi
jmp 0x25864
cvttsd2si (%rsi), %esi
cmpl %esi, %r14d
jl 0x25819
leaq 0x2019c(%rip), %rsi     # 0x45a00
movq (%rsi), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x25878
cmpb $0x1, %cl
jne 0x25881
movq 0x8(%rax), %rax
jmp 0x25888
leaq 0x20181(%rip), %rsi     # 0x45a00
jmp 0x2589e
movq 0x20178(%rip), %rax     # 0x45a00
cmpb $0x1, 0x10(%rax)
jne 0x25894
addq $0x8, %rax
jmp 0x2589b
leaq 0x20165(%rip), %rax     # 0x45a00
movq (%rax), %rsi
movq (%rsi), %rax
cvttsd2si (%rax), %eax
subl %eax, %r14d
cvtsi2sd %edx, %xmm3
movsd %xmm3, -0x30(%rbp)
cvttsd2si %xmm1, %eax
movl %eax, %ecx
cvttsd2si %xmm2, %edx
notl %ecx
addl %ecx, %edx
cmpl $0x2, %edx
movl $0x1, %r15d
cmovgel %edx, %r15d
cvttsd2si %xmm0, %r13d
addl %eax, %r15d
addl %r15d, %r13d
negl %r15d
callq 0x8ba5
callq 0x74dc
movb $0x5, %r12b
movb %r12b, 0x10(%rax)
movabsq $0x4010000000000000, %rcx # imm = 0x4010000000000000
movq %rcx, (%rax)
movq %rax, %rdi
callq 0x8ba5
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0x74dc
movb %r12b, 0x10(%rax)
movsd -0x38(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %rax, %rdi
callq 0x8ba5
callq 0x74dc
movb %r12b, 0x10(%rax)
movq $0x0, (%rax)
movq %rax, %rdi
callq 0x8ba5
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0x74dc
movb %r12b, 0x10(%rax)
movsd -0x38(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %rax, %rdi
callq 0x8ba5
callq 0x74dc
movb %r12b, 0x10(%rax)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %rax, %rdi
callq 0x8ba5
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0x74dc
movb %r12b, 0x10(%rax)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %rax, %rdi
callq 0x8ba5
movq %rbx, %rdi
callq 0x8ba5
movl $0x7, %edi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x8b7d
leaq 0x9573(%rip), %rdi      # 0x2ef41
callq 0x780b