// File: /workspace/github_c_makefile_star2_O3/mishun[P]plantri/plantri.c
// Function: extend_five
static void
extend_five(EDGE *ref)

/* This routine is another implementation of the five-operation
   in Batagelj's paper. */
{
    EDGE *a,*b,*start,*dummy;

    start=five_op(nv);
    degree[nv]=5; firstedge[nv]=start;


    b=ref->prev;
    a=ref->next;
    dummy=start+1;
    b->next=a->prev=dummy; 
    dummy->next=a; dummy->prev=b;
    dummy->start=start->end=a->start;
    firstedge[a->start]=a;

    a=b->invers; b=a->prev;
    start +=2; /*2*/ dummy=start+1;
    b->next=a->prev=dummy; 
    dummy->next=a; dummy->prev=b;
    dummy->start=start->end=a->start;
    (degree[a->start])++;

    a=b->invers; b=a->prev->prev->prev; dummy=ref->invers;
    b->next=dummy; 
    dummy->prev=b;
    firstedge[a->start]=a;
    (degree[a->start])--;

    a=b->invers; b=a->prev;
    start +=2; /*4*/ dummy=start+1;
    b->next=a->prev=dummy; 
    dummy->next=a; dummy->prev=b;
    dummy->start=start->end=a->start;
    (degree[a->start])++;

    dummy=b->invers->prev->invers; /* the other remaining edge of the "v" */

    dummy->start=dummy->invers->end=nv;
    dummy->next=start-4; dummy->prev=start;
    start->next=dummy; (start-4)->prev=dummy;

    ref->start=ref->invers->end=nv;
    ref->next=start; ref->prev=start-2;
    start->prev=ref; (start-2)->next=ref;

    nv++;
    ne+=6;
}

// Assembly:
pushq %r14
pushq %rbx
movslq 0x22a906(%rip), %rdx    # 0x244610
leaq (%rdx,%rdx,2), %rax
shlq $0x7, %rax
leaq 0x22a907(%rip), %rcx    # 0x244620
leaq (%rax,%rcx), %rsi
addq $0x6000, %rsi           # imm = 0x6000
leaq 0xdec5(%rip), %r9       # 0x27bf0
movl $0x5, (%r9,%rdx,4)
leaq 0xdcb6(%rip), %r10      # 0x279f0
movq %rsi, (%r10,%rdx,8)
movq 0x10(%rdi), %r11
movq 0x18(%rdi), %rbx
leaq 0x6040(%rax,%rcx), %r8
movq %r8, 0x10(%rbx)
movq %r8, 0x18(%r11)
movq %rbx, 0x18(%r8)
movq %r11, 0x10(%r8)
movslq (%rbx), %r14
movl %r14d, -0x3c(%r8)
movl %r14d, (%r8)
movq %rbx, (%r10,%r14,8)
movq 0x20(%r11), %r11
movq 0x10(%r11), %rbx
leaq 0x60c0(%rax,%rcx), %r14
movq %r14, 0x10(%r11)
movq %r14, 0x18(%rbx)
movq %r11, 0x18(%r14)
movq %rbx, 0x10(%r14)
movslq (%r11), %r11
movl %r11d, -0x3c(%r14)
incl (%r9,%r11,4)
movl %r11d, (%r14)
movq 0x20(%rbx), %r11
movq 0x10(%r11), %rbx
movq 0x10(%rbx), %rbx
movq 0x10(%rbx), %rbx
movq 0x20(%rdi), %r14
movq %r14, 0x18(%rbx)
movq %rbx, 0x10(%r14)
movslq (%r11), %r14
decl (%r9,%r14,4)
movq %r11, (%r10,%r14,8)
movq 0x20(%rbx), %r10
movq 0x10(%r10), %r11
leaq (%rax,%rcx), %rbx
addq $0x6100, %rbx           # imm = 0x6100
leaq 0x6140(%rax,%rcx), %r14
movq %r14, 0x10(%r10)
movq %r14, 0x18(%r11)
movq %r10, 0x18(%r14)
movq %r11, 0x10(%r14)
movslq (%r10), %r10
movl %r10d, -0x3c(%r14)
movl %r10d, (%r14)
incl (%r9,%r10,4)
movq 0x20(%r11), %r9
movq 0x10(%r9), %r9
movq 0x20(%r9), %r9
movq 0x20(%r9), %r10
movl %edx, 0x4(%r10)
movl %edx, (%r9)
movq %rsi, 0x18(%r9)
movq %rbx, 0x10(%r9)
movq %r9, -0x28(%r14)
movq %r9, -0x30(%r8)
movl 0x22a7e9(%rip), %edx    # 0x244610
movq 0x20(%rdi), %rsi
movl %edx, 0x4(%rsi)
movl %edx, (%rdi)
movq %rbx, 0x18(%rdi)
leaq 0x6080(%rax,%rcx), %rax
movq %rax, 0x10(%rdi)
movq %rdi, -0x30(%r14)
movq %rdi, 0x18(%rax)
incl %edx
movl %edx, 0x22a7c0(%rip)    # 0x244610
addl $0x6, 0x22a7bd(%rip)    # 0x244614
popq %rbx
popq %r14
retq