// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/plantri.c
// Function: make_4bangle_list
static void
make_4bangle_list(EDGE *list[], int* listlength,
                  EDGE *nf4cycleedges[], int numnf4cycleedges)

/* returns the list of legal 4-bangles, that is of (undirected) edges so that:

     (i) both endvertices have valency >=6
     (ii) it is not on an nf-4-cycle at the moment
     (iii) it is the center of a bangle
     (iv) after switching it is not on an nf-3-cycle

     It is assumed that there are no nf-3-cycles.

     nf4cycleedges[] must be a list of all undirected edges -- that
     is: always containing edge->min lying on nf-4-cycles and
     numnf4cycleedges their number.
*/

{
  int i, counter;
  EDGE *run, *end;

  RESETMARKS;
  while (--numnf4cycleedges >= 0) MARKLO(nf4cycleedges[numnf4cycleedges]);

  counter=0;

  for (i=0; i<nv; i++)
    if (degree[i]>=6)
      { run=end=firstedge[i];
        do
          { if ((run==run->min) && (degree[run->end]>=6) && (!ISMARKEDLO(run))
                && is_4bangle_centre(run) && (!will_be_on_nf_3_cycle(run)))
            { list[counter]=run; counter++; }
            run=run->next;
          }
        while (run != end);
      }

  *listlength=counter;

  return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl 0x17237(%rip), %eax     # 0x3c084
addl $0x2, %eax
movl %eax, 0x1722e(%rip)     # 0x3c084
cmpl $0x7530, %eax           # imm = 0x7530
jle 0x24e9d
movl $0x2, 0x1721d(%rip)     # 0x3c084
movl $0x0, -0x3c(%rbp)
cmpl $0x1198, -0x3c(%rbp)    # imm = 0x1198
jge 0x24e9b
movslq -0x3c(%rbp), %rcx
leaq 0x2357ae(%rip), %rax    # 0x25a630
shlq $0x6, %rcx
addq %rcx, %rax
movl $0x0, 0x30(%rax)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x24e6e
jmp 0x24e9d
jmp 0x24e9f
movl -0x1c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, %eax
jl 0x24ec4
movl 0x171d1(%rip), %ecx     # 0x3c084
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl %ecx, 0x30(%rax)
jmp 0x24e9f
movl $0x0, -0x24(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl 0x235745(%rip), %eax    # 0x25a620
jge 0x24f9c
movslq -0x20(%rbp), %rcx
leaq 0x18d14(%rip), %rax     # 0x3dc00
cmpl $0x6, (%rax,%rcx,4)
jl 0x24f8c
movslq -0x20(%rbp), %rcx
leaq 0x18aff(%rip), %rax     # 0x3da00
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq -0x30(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jne 0x24f74
movq -0x30(%rbp), %rax
movslq 0x4(%rax), %rcx
leaq 0x18cd6(%rip), %rax     # 0x3dc00
cmpl $0x6, (%rax,%rcx,4)
jl 0x24f74
movq -0x30(%rbp), %rax
movl 0x30(%rax), %eax
cmpl 0x17147(%rip), %eax     # 0x3c084
je 0x24f74
movq -0x30(%rbp), %rdi
callq 0x25430
cmpl $0x0, %eax
je 0x24f74
movq -0x30(%rbp), %rdi
callq 0x256d0
cmpl $0x0, %eax
jne 0x24f74
movq -0x30(%rbp), %rdx
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x38(%rbp), %rax
jne 0x24f0d
jmp 0x24f8c
jmp 0x24f8e
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x24ed2
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)