// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/plantri.c
// Function: extend_quadr_P1
static EDGE
*extend_quadr_P1(EDGE *e)

/* extends a graph in the way given by the type P1 extension for
   3-connected quadrangulations. 

   It returns the directed edge characterizing this operation.
*/

{
  register EDGE *e1, *e1i, *e2, *e3, *e3i, *e4, *start, *dummy;
  int end1, end2, center, end;

  center=e->start; 
  end=e->end;
  e1=e->prev;
  e1i=e1->invers;
  e2=e1i->prev;
  end1=e2->start;

  e3=e->next;
  e3i=e3->invers;
  e4=e3i->next;
  end2=e4->start;

  e1->next=e3; e3->prev=e1; degree[center]--; firstedge[center]=e1;

  start=quadr_P1(nv);
  dummy=start+1;
  start->start=dummy->end=end1;
  degree[end1]++;
  start->next=e1i; e1i->prev=start;
  start->prev=e2; e2->next=start;

  dummy->next=e; e->prev=dummy;

  start+=2; dummy=start+1;
  start->start=dummy->end=end2;
  degree[end2]++;
  e3i->next=start; start->prev=e3i;
  e4->prev=start; start->next=e4;

  e->next=dummy; dummy->prev=e;

  degree[nv]=3; e->start=e->invers->end=nv; firstedge[nv]=e;
  nv++; ne+=4;

  return (e); 
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x54(%rbp)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x4c(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x50(%rbp)
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movslq -0x54(%rbp), %rcx
leaq 0x2e188(%rip), %rax     # 0x3dc00
movl (%rax,%rcx,4), %edx
addl $-0x1, %edx
leaq 0x2e17b(%rip), %rax     # 0x3dc00
movl %edx, (%rax,%rcx,4)
movq -0x10(%rbp), %rdx
movslq -0x54(%rbp), %rcx
leaq 0x2df69(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movl 0x24ab7f(%rip), %eax    # 0x25a620
shll $0x2, %eax
movslq %eax, %rcx
leaq 0x24ab82(%rip), %rax    # 0x25a630
addq $0x100, %rax            # imm = 0x100
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x48(%rbp)
movl -0x4c(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movslq -0x4c(%rbp), %rcx
leaq 0x2e11a(%rip), %rax     # 0x3dc00
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0x2e10d(%rip), %rax     # 0x3dc00
movl %edx, (%rax,%rcx,4)
movq -0x18(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x40(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x40(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x48(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x40(%rbp), %rax
addq $0x80, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x48(%rbp)
movl -0x50(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movslq -0x50(%rbp), %rcx
leaq 0x2e08d(%rip), %rax     # 0x3dc00
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0x2e080(%rip), %rax     # 0x3dc00
movl %edx, (%rax,%rcx,4)
movq -0x40(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x48(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
movslq 0x24aa4e(%rip), %rcx    # 0x25a620
leaq 0x2e027(%rip), %rax     # 0x3dc00
movl $0x3, (%rax,%rcx,4)
movl 0x24aa3a(%rip), %ecx    # 0x25a620
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rdx
movslq 0x24aa1e(%rip), %rcx    # 0x25a620
leaq 0x2ddf7(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movl 0x24aa0d(%rip), %eax    # 0x25a620
addl $0x1, %eax
movl %eax, 0x24aa04(%rip)    # 0x25a620
movl 0x24aa02(%rip), %eax    # 0x25a624
addl $0x4, %eax
movl %eax, 0x24a9f9(%rip)    # 0x25a624
movq -0x8(%rbp), %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)