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

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

   It returns the directed edge characterizing this operation.
*/

{
  register EDGE *e1, *e2, *e3, *e4, *e5, *e5i, *e6i, *start, *dummy;
  int end1, end2, end3, center;

  center=e->start;
  e=e->next;
  end2=e->end;
  e1=e->invers;
  e4=e1->next;
  e5=e1->prev;
  e5i=e5->invers;
  e6i=e5i->prev;
  end3=e5i->start;
  e3=e4->invers->next->invers;
  e2=e3->next;
  end1=e3->start;

  start=quadr_P2(nv);
  dummy=start+1;
  start->end=dummy->start=end3; degree[end3]++;
  e6i->next=e5i->prev=dummy; dummy->prev=e6i; dummy->next=e5i;

  dummy=start+3;
  dummy->start=(dummy-1)->end=end2; firstedge[end2]=dummy;
  e5->next=e4->prev=dummy; dummy->next=e4; dummy->prev=e5;

  dummy=start+5;
  dummy->start=(dummy-1)->end=end1; degree[end1]++;
  e3->next=e2->prev=dummy; dummy->next=e2; dummy->prev=e3;

  dummy=start+7;
  e->end=e1->start=nv;
  start->next=dummy->prev=e1; e1->next=dummy; e1->prev=start;

  degree[nv]=degree[nv+1]=3;
  firstedge[nv]=start; firstedge[nv+1]=start+2;

  nv+=2; ne+=8;

  return start;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x60(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x5c(%rbp)
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x18(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x54(%rbp)
movl 0x246645(%rip), %eax    # 0x25a620
shll $0x3, %eax
movslq %eax, %rcx
leaq 0x246648(%rip), %rax    # 0x25a630
addq $-0xf00, %rax           # imm = 0xF100
addq $0x4000, %rax           # imm = 0x4000
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x50(%rbp)
movl -0x5c(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, (%rax)
movq -0x48(%rbp), %rax
movl %ecx, 0x4(%rax)
movslq -0x5c(%rbp), %rcx
leaq 0x29bda(%rip), %rax     # 0x3dc00
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0x29bcd(%rip), %rax     # 0x3dc00
movl %edx, (%rax,%rcx,4)
movq -0x50(%rbp), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x40(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x40(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x38(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x48(%rbp), %rax
addq $0xc0, %rax
movq %rax, -0x50(%rbp)
movl -0x58(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, -0x3c(%rax)
movq -0x50(%rbp), %rax
movl %ecx, (%rax)
movq -0x50(%rbp), %rdx
movslq -0x58(%rbp), %rcx
leaq 0x29971(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movq -0x50(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
addq $0x140, %rax            # imm = 0x140
movq %rax, -0x50(%rbp)
movl -0x54(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, -0x3c(%rax)
movq -0x50(%rbp), %rax
movl %ecx, (%rax)
movslq -0x54(%rbp), %rcx
leaq 0x29b18(%rip), %rax     # 0x3dc00
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0x29b0b(%rip), %rax     # 0x3dc00
movl %edx, (%rax,%rcx,4)
movq -0x50(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x18(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x20(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
addq $0x1c0, %rax            # imm = 0x1C0
movq %rax, -0x50(%rbp)
movl 0x2464e8(%rip), %ecx    # 0x25a620
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x50(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x48(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movl 0x2464a9(%rip), %eax    # 0x25a620
addl $0x1, %eax
movslq %eax, %rcx
leaq 0x29a7c(%rip), %rax     # 0x3dc00
movl $0x3, (%rax,%rcx,4)
movslq 0x24648e(%rip), %rcx    # 0x25a620
leaq 0x29a67(%rip), %rax     # 0x3dc00
movl $0x3, (%rax,%rcx,4)
movq -0x48(%rbp), %rdx
movslq 0x246475(%rip), %rcx    # 0x25a620
leaq 0x2984e(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movq -0x48(%rbp), %rdx
addq $0x80, %rdx
movl 0x246459(%rip), %eax    # 0x25a620
addl $0x1, %eax
movslq %eax, %rcx
leaq 0x2982c(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movl 0x246442(%rip), %eax    # 0x25a620
addl $0x2, %eax
movl %eax, 0x246439(%rip)    # 0x25a620
movl 0x246437(%rip), %eax    # 0x25a624
addl $0x8, %eax
movl %eax, 0x24642e(%rip)    # 0x25a624
movq -0x48(%rbp), %rax
popq %rbp
retq
nopl (%rax)