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

/* Checks whether performing a 5-reduction at e (e starting at the
   vertex with valency 5) will produce a configuration with 
   one of the diagonals being on an nf-4-cycle. It is assumed
   that it is already assured that a 5-reduction here is possible
   (e.g. degree[e->start]=5).

   It somehow simulates the situation after the switch. This is
   a bit ugly, since after the switch on ONE side there will be
   an additional edge and on the other there won't.
*/

{
  EDGE *run, *run1, *last, *last1, *dummy, *e1, *e2;

  /* It is important for the correctness, that we go ONE step from e and
     two from e1, resp e2 */

  e1=e->prev->prev->invers; e2=e->next->next->invers;
  e=e->invers;

  RESETMARKS_V;
  last=e->prev; /* there will be an edge in between */
  run=e->next->next;
  MARK_V(run->end);
  while (run!=last)
    { run=run->next;
      MARK_V(run->end);
    }

  last=e1->prev->prev; /* I cannot reach the edges that will be
			  missing after the reduction in two steps, so
			  here I can proceed "as usual" */
  run=e1->next->next;
  dummy=run->invers;
  last1=dummy->prev->prev;
  run1=dummy->next->next;
  if (ISMARKED_V(run1->end)) return 1;
  run1=run1->next;
  if (ISMARKED_V(run1->end)) return 1;
  while (run1!=last1) { run1=run1->next; if (ISMARKED_V(run1->end)) return 1; }
  run=run->next;
  dummy=run->invers;
  last1=dummy->prev->prev;
  run1=dummy->next->next;
  if (ISMARKED_V(run1->end)) return 1;
  run1=run1->next;
  if (ISMARKED_V(run1->end)) return 1;
  while (run1!=last1) { run1=run1->next; if (ISMARKED_V(run1->end)) return 1; }
  while (run!=last)
    { run=run->next;
      dummy=run->invers;
      last1=dummy->prev->prev;
      run1=dummy->next->next;
      if (ISMARKED_V(run1->end)) return 1;
      run1=run1->next;
      if (ISMARKED_V(run1->end)) return 1;
      while (run1!=last1)
        { run1=run1->next; if (ISMARKED_V(run1->end)) return 1; }
    }

  RESETMARKS_V;
  last=e->prev->prev;
  run=e->next; /* there will be an edge in between */
  MARK_V(run->end);
  while (run!=last)
    { run=run->next;
      MARK_V(run->end);
    }

  last=e2->prev->prev; /* I cannot reach the edges that will be
                          missing after the reduction in two steps, 
			  so here I can proceed "as usual" */
  run=e2->next->next;
  dummy=run->invers;
  last1=dummy->prev->prev;
  run1=dummy->next->next;
  if (ISMARKED_V(run1->end)) return 1;
  run1=run1->next;
  if (ISMARKED_V(run1->end)) return 1;
  while (run1!=last1) { run1=run1->next; if (ISMARKED_V(run1->end)) return 1; }
  run=run->next;
  dummy=run->invers;
  last1=dummy->prev->prev;
  run1=dummy->next->next;
  if (ISMARKED_V(run1->end)) return 1;
  run1=run1->next;
  if (ISMARKED_V(run1->end)) return 1;
  while (run1!=last1) { run1=run1->next; if (ISMARKED_V(run1->end)) return 1; }
  while (run!=last)
    { run=run->next;
      dummy=run->invers;
      last1=dummy->prev->prev;
      run1=dummy->next->next;
      if (ISMARKED_V(run1->end)) return 1;
      run1=run1->next;
      if (ISMARKED_V(run1->end)) return 1;
      while (run1!=last1)
        { run1=run1->next; if (ISMARKED_V(run1->end)) return 1; }
    }

  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq 0x10(%rdi), %rax
movq 0x18(%rdi), %rcx
movq 0x10(%rax), %rax
movq 0x20(%rax), %rbp
movq 0x18(%rcx), %rax
movq 0x20(%rax), %r15
movq 0x20(%rdi), %rbx
movl 0xde66(%rip), %ecx      # 0x26090
leal 0x1(%rcx), %eax
movl %eax, 0xde5d(%rip)      # 0x26090
cmpl $0x7530, %ecx           # imm = 0x7530
jl 0x1825d
movl $0x1, 0xde4b(%rip)      # 0x26090
leaq 0x2729e4(%rip), %rdi    # 0x28ac30
movl $0x100, %edx            # imm = 0x100
xorl %esi, %esi
callq 0x1030
movl $0x1, %eax
movq 0x10(%rbx), %r13
movq 0x18(%rbx), %r12
movq 0x18(%r12), %rcx
movslq 0x4(%rcx), %rdx
leaq 0x2729bb(%rip), %r14    # 0x28ac30
movl %eax, (%r14,%rdx,4)
cmpq %r13, %rcx
je 0x18288
movq 0x18(%rcx), %rcx
movslq 0x4(%rcx), %rdx
jmp 0x18275
movq 0x18(%rbp), %rcx
movq 0x18(%rcx), %rdx
movq 0x20(%rdx), %rdi
movq 0x18(%rdi), %rcx
movq 0x18(%rcx), %rcx
movslq 0x4(%rcx), %rsi
movl $0x1, %ebx
cmpl %eax, (%r14,%rsi,4)
je 0x18321
movq 0x18(%rcx), %rsi
movslq 0x4(%rsi), %rcx
cmpl %eax, (%r14,%rcx,4)
je 0x18321
movq 0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x10(%rdi), %rdi
movq 0x10(%rdi), %rdi
cmpq %rdi, %rsi
je 0x182de
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %eax, (%r14,%r8,4)
jne 0x182c9
jmp 0x18321
movq 0x18(%rdx), %rdx
movq 0x20(%rdx), %rdi
movq 0x18(%rdi), %rsi
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %eax, (%r14,%r8,4)
je 0x18321
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %eax, (%r14,%r8,4)
je 0x18321
movq 0x10(%rdi), %rdi
movq 0x10(%rdi), %rdi
cmpq %rdi, %rsi
je 0x18377
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %eax, (%r14,%r8,4)
jne 0x1830e
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x18(%rdx), %rdx
movq 0x20(%rdx), %rdi
movq 0x18(%rdi), %rsi
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %eax, (%r14,%r8,4)
je 0x18321
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %eax, (%r14,%r8,4)
je 0x18321
movq 0x10(%rdi), %rdi
movq 0x10(%rdi), %rdi
cmpq %rdi, %rsi
je 0x18377
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %eax, (%r14,%r8,4)
jne 0x18362
jmp 0x18321
cmpq %rcx, %rdx
jne 0x18332
leal 0x1(%rax), %ecx
movl %ecx, 0xdd0b(%rip)      # 0x26090
cmpl $0x7530, %eax           # imm = 0x7530
jl 0x183ae
movl $0x1, 0xdcfa(%rip)      # 0x26090
leaq 0x272893(%rip), %rdi    # 0x28ac30
movl $0x100, %edx            # imm = 0x100
xorl %esi, %esi
callq 0x1030
movl $0x1, %ecx
movq 0x10(%r13), %rax
movslq 0x4(%r12), %rdx
movl %ecx, (%r14,%rdx,4)
cmpq %rax, %r12
je 0x183c7
movq 0x18(%r12), %r12
jmp 0x183b2
movq 0x18(%r15), %rax
movq 0x18(%rax), %rdx
movq 0x20(%rdx), %rdi
movq 0x18(%rdi), %rax
movq 0x18(%rax), %rax
movslq 0x4(%rax), %rsi
cmpl %ecx, (%r14,%rsi,4)
je 0x18321
movq 0x18(%rax), %rsi
movslq 0x4(%rsi), %rax
cmpl %ecx, (%r14,%rax,4)
je 0x18321
movq 0x10(%r15), %rax
movq 0x10(%rax), %rax
movq 0x10(%rdi), %rdi
movq 0x10(%rdi), %rdi
cmpq %rdi, %rsi
je 0x18423
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %ecx, (%r14,%r8,4)
jne 0x1840b
jmp 0x18321
movq 0x18(%rdx), %rdx
movq 0x20(%rdx), %rdi
movq 0x18(%rdi), %rsi
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %ecx, (%r14,%r8,4)
je 0x18321
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %ecx, (%r14,%r8,4)
je 0x18321
movq 0x10(%rdi), %rdi
movq 0x10(%rdi), %rdi
cmpq %rdi, %rsi
je 0x184c3
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %ecx, (%r14,%r8,4)
jne 0x1845b
jmp 0x18321
movq 0x18(%rdx), %rdx
movq 0x20(%rdx), %rdi
movq 0x18(%rdi), %rsi
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %ecx, (%r14,%r8,4)
je 0x18321
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %ecx, (%r14,%r8,4)
je 0x18321
movq 0x10(%rdi), %rdi
movq 0x10(%rdi), %rdi
cmpq %rdi, %rsi
je 0x184c3
movq 0x18(%rsi), %rsi
movslq 0x4(%rsi), %r8
cmpl %ecx, (%r14,%r8,4)
jne 0x184ab
jmp 0x18321
cmpq %rax, %rdx
jne 0x18473
xorl %ebx, %ebx
jmp 0x18321