// File: /workspace/github_c_makefile_star2_O2/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 %r12
pushq %rbx
subq $0x10, %rsp
callq 0x868d
movq %rax, %rbx
callq 0x868d
cmpb $0x1, 0x10(%rbx)
leaq 0x8(%rbx), %rcx
leaq 0x1fd72(%rip), %rsi     # 0x3e9f0
cmovneq %rsi, %rcx
movq (%rcx), %rdx
movb 0x10(%rdx), %dil
cmpb $0x1, %dil
jne 0x1ecdf
movq (%rdx), %rcx
movq 0x8(%rdx), %r8
movsd (%rcx), %xmm0
cmpb $0x1, 0x10(%r8)
leaq 0x1fd4a(%rip), %rcx     # 0x3e9f0
movq %rcx, %r9
cmoveq %r8, %r9
movq (%r9), %r9
movsd (%r9), %xmm1
jne 0x1ed2e
movq 0x8(%r8), %r8
cmpb $0x1, 0x10(%r8)
jne 0x1ed47
cmpb $0x1, %dil
jne 0x1ed11
movq 0x8(%rdx), %rdi
cmpb $0x1, 0x10(%rdi)
jne 0x1ed3b
addq $0x8, %rdx
movq %rdx, %rcx
jmp 0x1ed25
movq 0x1fd0a(%rip), %rcx     # 0x3e9f0
movsd (%rcx), %xmm0
cmpb $0x1, 0x10(%rcx)
jne 0x1ed40
movq (%rcx), %rcx
movsd (%rcx), %xmm1
movq 0x1fcf2(%rip), %rcx     # 0x3e9f0
cmpb $0x1, 0x10(%rcx)
jne 0x1ed44
movq 0x8(%rcx), %rcx
cmpb $0x1, 0x10(%rcx)
movq %rsi, %rcx
jne 0x1ed47
leaq 0x1fcd8(%rip), %rcx     # 0x3e9f0
movq 0x1fcd1(%rip), %rdx     # 0x3e9f0
cmpb $0x1, 0x10(%rdx)
jne 0x1ed3b
movq (%rcx), %rcx
addq $0x8, %rcx
jmp 0x1ed3b
movq 0x1fcbb(%rip), %rdx     # 0x3e9f0
cmpb $0x1, 0x10(%rdx)
jne 0x1ed47
movq (%rcx), %rcx
jmp 0x1ed47
movapd %xmm0, %xmm1
movq %rsi, %rcx
movq (%rcx), %rcx
cvttsd2si (%rcx), %r14d
leaq 0x8(%rax), %rcx
cmpb $0x1, 0x10(%rax)
cmovneq %rsi, %rcx
movq (%rcx), %rcx
movq %rax, %rdi
cmovneq %rsi, %rdi
movb 0x10(%rcx), %dl
cmpb $0x1, %dl
cmoveq %rcx, %rsi
movq (%rdi), %rdi
cvttsd2si (%rdi), %edi
movq (%rsi), %rsi
movsd (%rsi), %xmm2
cmpl $0x5, %edi
jne 0x1ed97
cmpb $0x1, %dl
jne 0x1eda5
movq 0x8(%rcx), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x1edcc
movq 0x8(%rsi), %rsi
jmp 0x1edd3
xorpd %xmm3, %xmm3
movsd %xmm3, -0x28(%rbp)
jmp 0x1ef07
movq 0x1fc44(%rip), %rdi     # 0x3e9f0
leaq 0x1fc3d(%rip), %rsi     # 0x3e9f0
cmpb $0x1, 0x10(%rdi)
jne 0x1edfc
movq 0x8(%rdi), %rdi
cmpb $0x1, 0x10(%rdi)
jne 0x1edfc
movq 0x1fc26(%rip), %rsi     # 0x3e9f0
jmp 0x1eddd
movq 0x1fc1d(%rip), %rsi     # 0x3e9f0
cmpb $0x1, 0x10(%rsi)
jne 0x1ede9
movq 0x8(%rcx), %rsi
cmpb $0x1, 0x10(%rsi)
jne 0x1edf2
addq $0x8, %rsi
jmp 0x1edf9
leaq 0x1fc00(%rip), %rsi     # 0x3e9f0
jmp 0x1edfc
leaq 0x1fbf7(%rip), %rsi     # 0x3e9f0
movq (%rsi), %rsi
movq (%rsi), %rsi
cvttsd2si (%rsi), %esi
cmpb $0x1, %dl
jne 0x1ee18
movq 0x8(%rcx), %rdi
cmpb $0x1, 0x10(%rdi)
jne 0x1ee41
movq 0x8(%rdi), %rdi
jmp 0x1ee48
movq 0x1fbd1(%rip), %r8      # 0x3e9f0
leaq 0x1fbca(%rip), %rdi     # 0x3e9f0
cmpb $0x1, 0x10(%r8)
jne 0x1ee71
movq 0x8(%r8), %r8
cmpb $0x1, 0x10(%r8)
jne 0x1ee71
movq 0x1fbb1(%rip), %rdi     # 0x3e9f0
jmp 0x1ee52
movq 0x1fba8(%rip), %rdi     # 0x3e9f0
cmpb $0x1, 0x10(%rdi)
jne 0x1ee5e
movq 0x8(%rcx), %rdi
cmpb $0x1, 0x10(%rdi)
jne 0x1ee67
addq $0x8, %rdi
jmp 0x1ee6e
leaq 0x1fb8b(%rip), %rdi     # 0x3e9f0
jmp 0x1ee71
leaq 0x1fb82(%rip), %rdi     # 0x3e9f0
movq (%rdi), %rdi
movq (%rdi), %rdi
cvttsd2si (%rdi), %r8d
negl %esi
xorl %edi, %edi
cmpl %r8d, %r14d
jl 0x1eefb
cmpb $0x1, %dl
jne 0x1ee97
movq 0x8(%rcx), %rdx
cmpb $0x1, 0x10(%rdx)
jne 0x1eebe
movq 0x8(%rdx), %rdx
jmp 0x1eec5
movq 0x1fb52(%rip), %rdx     # 0x3e9f0
leaq 0x1fb4b(%rip), %rcx     # 0x3e9f0
cmpb $0x1, 0x10(%rdx)
jne 0x1eeee
movq 0x8(%rdx), %rdx
cmpb $0x1, 0x10(%rdx)
jne 0x1eeee
movq 0x1fb34(%rip), %rcx     # 0x3e9f0
jmp 0x1eecf
movq 0x1fb2b(%rip), %rdx     # 0x3e9f0
cmpb $0x1, 0x10(%rdx)
jne 0x1eedb
movq 0x8(%rcx), %rcx
cmpb $0x1, 0x10(%rcx)
jne 0x1eee4
addq $0x8, %rcx
jmp 0x1eeeb
leaq 0x1fb0e(%rip), %rcx     # 0x3e9f0
jmp 0x1eeee
leaq 0x1fb05(%rip), %rcx     # 0x3e9f0
movq (%rcx), %rcx
movq (%rcx), %rcx
cvttsd2si (%rcx), %ecx
subl %ecx, %r14d
movl %r14d, %edi
cvtsi2sd %esi, %xmm3
movsd %xmm3, -0x28(%rbp)
movl %edi, %r14d
cvttsd2si %xmm1, %ecx
movl %ecx, %edx
cvttsd2si %xmm2, %esi
notl %edx
addl %edx, %esi
cmpl $0x2, %esi
pushq $0x1
popq %r15
cmovgel %esi, %r15d
cvttsd2si %xmm0, %r12d
addl %ecx, %r15d
addl %r15d, %r12d
negl %r15d
movq %rax, %rdi
callq 0x861b
movsd 0x425a(%rip), %xmm0     # 0x23198
callq 0xaf59
cvtsi2sd %r12d, %xmm0
callq 0xaf59
xorpd %xmm0, %xmm0
callq 0xaf59
cvtsi2sd %r14d, %xmm0
callq 0xaf59
movsd -0x28(%rbp), %xmm0
callq 0xaf59
cvtsi2sd %r15d, %xmm0
callq 0xaf59
movq %rbx, %rdi
callq 0x861b
pushq $0x7
popq %rdi
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x85eb