// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/plantri.c
// Function: reduce4
static void 
reduce4(EDGE *e, EDGE *list[])

/* The inverse operation to extend4().
   Deletes the vertex with valence 4 in the triangle on the right hand side
   (->next-direction) of the edge e that is not contained in e. It is not 
   checked whether the vertex really has valence 4 -- this has to be made
   sure in advance. The vector list[] must contain the edges deleted before. 
   It might be that one of the edges leading to the new vertex now is
   an entry of firstedge[] */
{

    firstedge[e->start] = e;

    list[0]->next->prev = list[0];
    e->next = list[0];
    e = e->invers;

    firstedge[e->start] = e;
/* Now delete on the ->prev side */
    e->prev = e->prev->prev; e->prev->next = e; 
    (degree[e->start])--;
    e = e->prev->invers;

    firstedge[e->start] = e;
/* Again on the ->prev side: */
    list[1]->prev->next = list[1];
    e->prev = list[1];

    e = list[1]->prev->invers;
    firstedge[e->start] = e;
    e->prev = e->prev->prev; e->prev->next = e; 
    (degree[e->start])--;

    nv--;  
    ne -= 6;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdx
movq -0x8(%rbp), %rax
movslq (%rax), %rcx
leaq 0x10642(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdx
movq -0x8(%rbp), %rax
movslq (%rax), %rcx
leaq 0x105fb(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rcx
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movslq (%rax), %rcx
leaq 0x107c5(%rip), %rax     # 0x3dc00
movl (%rax,%rcx,4), %edx
addl $-0x1, %edx
leaq 0x107b8(%rip), %rax     # 0x3dc00
movl %edx, (%rax,%rcx,4)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdx
movq -0x8(%rbp), %rax
movslq (%rax), %rcx
leaq 0x10593(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdx
movq -0x8(%rbp), %rax
movslq (%rax), %rcx
leaq 0x10541(%rip), %rax     # 0x3da00
movq %rdx, (%rax,%rcx,8)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rcx
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movslq (%rax), %rcx
leaq 0x1070b(%rip), %rax     # 0x3dc00
movl (%rax,%rcx,4), %edx
addl $-0x1, %edx
leaq 0x106fe(%rip), %rax     # 0x3dc00
movl %edx, (%rax,%rcx,4)
movl 0x22d115(%rip), %eax    # 0x25a620
addl $-0x1, %eax
movl %eax, 0x22d10c(%rip)    # 0x25a620
movl 0x22d10a(%rip), %eax    # 0x25a624
subl $0x6, %eax
movl %eax, 0x22d101(%rip)    # 0x25a624
popq %rbp
retq
nopw %cs:(%rax,%rax)