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

/* extends a graph in the way given by the type P3 extension for
   3-connected quadrangulations. That is: It inserts a square on the
   right hand side of e.

   It returns the directed edge characterizing this operation.
*/

{
  register EDGE *run, *start, *dummy;
  int vertex;

  start=quadr_P3(nv);

  run=e->next;
  vertex=e->start;
  dummy=start+12;
  start->end=dummy->start=vertex; degree[vertex]++;
  e->next=run->prev=dummy; dummy->next=run; dummy->prev=e;

  e=run->invers;
  run=e->next;
  vertex=e->start;
  dummy=start+15;
  (start+10)->end=dummy->start=vertex; degree[vertex]++;
  e->next=run->prev=dummy; dummy->next=run; dummy->prev=e;

  e=run->invers;
  run=e->next;
  vertex=e->start;
  dummy--;
  (start+7)->end=dummy->start=vertex; degree[vertex]++;
  e->next=run->prev=dummy; dummy->next=run; dummy->prev=e;

  e=run->invers;
  run=e->next;
  vertex=e->start;
  dummy--;
  (start+4)->end=dummy->start=vertex; degree[vertex]++;
  e->next=run->prev=dummy; dummy->next=run; dummy->prev=e;

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

  nv+=4; ne+=16;

  return (run->invers);
}

// Assembly:
pushq %rbx
movslq 0x235e24(%rip), %rax    # 0x244610
movq %rax, %rcx
shlq $0xa, %rcx
leaq 0x235e26(%rip), %rdx    # 0x244620
leaq (%rcx,%rdx), %r8
addq $0x9100, %r8            # imm = 0x9100
movq 0x18(%rdi), %r9
movslq (%rdi), %r10
leaq (%rcx,%rdx), %r11
addq $0x9400, %r11           # imm = 0x9400
movl %r10d, (%r11)
leaq 0x193cf(%rip), %rsi     # 0x27bf0
incl (%rsi,%r10,4)
movl %r10d, 0x4(%r8)
movq %r11, 0x10(%r9)
movq %r11, 0x18(%rdi)
movq %r9, 0x18(%r11)
movq %rdi, 0x10(%r11)
movq 0x20(%r9), %rdi
movq 0x18(%rdi), %r9
movslq (%rdi), %r10
leaq (%rcx,%rdx), %rbx
addq $0x94c0, %rbx           # imm = 0x94C0
incl (%rsi,%r10,4)
movl %r10d, (%rbx)
movl %r10d, -0x7c(%r11)
movq %rbx, 0x10(%r9)
movq %rbx, 0x18(%rdi)
movq %r9, 0x18(%rbx)
movq %rdi, 0x10(%rbx)
movq 0x20(%r9), %rdi
movq 0x18(%rdi), %r9
movslq (%rdi), %r10
leaq (%rcx,%rdx), %r11
addq $0x9480, %r11           # imm = 0x9480
movl %r10d, (%r11)
movl %r10d, -0x1bc(%r11)
incl (%rsi,%r10,4)
movq %r11, 0x10(%r9)
movq %r11, 0x18(%rdi)
movq %r9, 0x18(%r11)
movq %rdi, 0x10(%r11)
movq 0x20(%r9), %rdi
movq 0x18(%rdi), %r9
movslq (%rdi), %r10
leaq (%rcx,%rdx), %r11
addq $0x9440, %r11           # imm = 0x9440
movl %r10d, (%r11)
movl %r10d, -0x23c(%r11)
incl (%rsi,%r10,4)
movq %r11, 0x10(%r9)
movq %r11, 0x18(%rdi)
movq %r9, 0x18(%r11)
movq %rdi, 0x10(%r11)
leaq 0x19117(%rip), %rdi     # 0x279f0
movq %r8, (%rdi,%rax,8)
movl $0x3, %r8d
movl %r8d, (%rsi,%rax,4)
leaq 0x91c0(%rcx,%rdx), %r10
movq %r10, 0x8(%rdi,%rax,8)
movl %r8d, 0x4(%rsi,%rax,4)
leaq 0x9280(%rcx,%rdx), %r10
movq %r10, 0x10(%rdi,%rax,8)
movl %r8d, 0x8(%rsi,%rax,4)
addq %rdx, %rcx
addq $0x9340, %rcx           # imm = 0x9340
movq %rcx, 0x18(%rdi,%rax,8)
movl %r8d, 0xc(%rsi,%rax,4)
addl $0x10, 0x235cee(%rip)   # 0x244614
addl $0x4, %eax
movl %eax, 0x235ce1(%rip)    # 0x244610
movq 0x20(%r9), %rax
popq %rbx
retq