// File: /workspace/github_c_makefile_star2_O3/mishun[P]plantri/plantri.c
// Function: add_new_nf4_cycles
static void
add_new_nf4_cycles(EDGE *e, EDGE **on4, int *non4)

/* The edge e has just been switched.  Previously it was not on any
   nf-4-cycles and on4[0..non4-1] was a list of all edges on nf-4-cycles.
   Add any new nf-4-cycles to on4[].  All edges are in min form. */

{
    int i,j,k,l,v1;
    EDGE *e1,*e2,*e3,*ee;
    EDGE *e0[MAXN];

    RESETMARKS;
    for (i = *non4; --i >= 0; ) MARKLO(on4[i]);
    
    RESETMARKS_V;
    v1 = e->start;
    for (e1 = e->next->next, k = degree[v1]-3; --k >= 0; e1 = e1->next)
    {
	MARK_V(e1->end);
	e0[e1->end] = e1;
    }

    j = *non4;
    for (e1 = e->invers->next->next, k = degree[e->end]-3;
						   --k >= 0; e1 = e1->next)
	for (e2 = e1->invers->next->next, l = degree[e1->end]-3;
                                                   --l >= 0; e2 = e2->next)
	    if (ISMARKED_V(e2->end))
	    {
		e3 = e0[e2->end];

		ee = e->min;
		if (!ISMARKEDLO(ee))
		{
		    on4[j++] = ee;
		    MARKLO(ee);
		}
		ee = e1->min;
		if (!ISMARKEDLO(ee))
		{
		    on4[j++] = ee;
		    MARKLO(ee);
		}
		ee = e2->min;
		if (!ISMARKEDLO(ee))
		{
		    on4[j++] = ee;
		    MARKLO(ee);
		}
		ee = e3->min;
		if (!ISMARKEDLO(ee))
		{
		    on4[j++] = ee;
		    MARKLO(ee);
		}
	    }
    *non4 = j;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movl 0xf489(%rip), %eax      # 0x2608c
leal 0x2(%rax), %ebp
movl %ebp, 0xf480(%rip)      # 0x2608c
cmpl $0x752f, %eax           # imm = 0x752F
jl 0x16c41
movl $0x2, 0xf46f(%rip)      # 0x2608c
movl $0x30, %eax
leaq 0x22d9f7(%rip), %rcx    # 0x244620
movl $0x0, (%rax,%rcx)
addq $0x40, %rax
cmpq $0x46630, %rax          # imm = 0x46630
jne 0x16c29
movl $0x2, %ebp
movslq (%rbx), %rax
testq %rax, %rax
jle 0x16c5d
incq %rax
movq -0x10(%r14,%rax,8), %rcx
movl %ebp, 0x30(%rcx)
decq %rax
cmpq $0x1, %rax
ja 0x16c4c
movl 0xf42d(%rip), %ecx      # 0x26090
leal 0x1(%rcx), %eax
movl %eax, 0xf424(%rip)      # 0x26090
cmpl $0x7530, %ecx           # imm = 0x7530
jl 0x16c96
movl $0x1, 0xf412(%rip)      # 0x26090
leaq 0x273fab(%rip), %rdi    # 0x28ac30
movl $0x100, %edx            # imm = 0x100
xorl %esi, %esi
callq 0x1030
movl $0x1, %eax
movslq (%r15), %rdx
leaq 0x10f50(%rip), %rcx     # 0x27bf0
movl (%rcx,%rdx,4), %esi
leaq 0x273f86(%rip), %rdx    # 0x28ac30
cmpl $0x4, %esi
jl 0x16cd1
movq 0x18(%r15), %rdi
addl $-0x2, %esi
movq 0x18(%rdi), %rdi
movslq 0x4(%rdi), %r8
movl %eax, (%rdx,%r8,4)
movslq 0x4(%rdi), %r8
movq %rdi, (%rsp,%r8,8)
decl %esi
cmpl $0x1, %esi
ja 0x16cb6
movl (%rbx), %esi
movslq 0x4(%r15), %rdi
movl (%rcx,%rdi,4), %edi
cmpl $0x4, %edi
jl 0x16d9b
addl $-0x4, %edi
movq 0x20(%r15), %r8
movq 0x18(%r8), %r8
movq 0x18(%r8), %r8
movslq 0x4(%r8), %r9
movl (%rcx,%r9,4), %r9d
cmpl $0x4, %r9d
jl 0x16d8c
movq 0x20(%r8), %r10
movq 0x18(%r10), %r10
addl $-0x3, %r9d
movq 0x18(%r10), %r10
movslq 0x4(%r10), %r11
cmpl %eax, (%rdx,%r11,4)
jne 0x16d84
movq 0x28(%r15), %r12
cmpl %ebp, 0x30(%r12)
je 0x16d37
movslq %esi, %r13
incl %esi
movq %r12, (%r14,%r13,8)
movl %ebp, 0x30(%r12)
movq 0x28(%r8), %r12
cmpl %ebp, 0x30(%r12)
je 0x16d50
movslq %esi, %r13
incl %esi
movq %r12, (%r14,%r13,8)
movl %ebp, 0x30(%r12)
movq 0x28(%r10), %r12
cmpl %ebp, 0x30(%r12)
je 0x16d69
movslq %esi, %r13
incl %esi
movq %r12, (%r14,%r13,8)
movl %ebp, 0x30(%r12)
movq (%rsp,%r11,8), %r11
movq 0x28(%r11), %r11
cmpl %ebp, 0x30(%r11)
je 0x16d84
movslq %esi, %r12
incl %esi
movq %r11, (%r14,%r12,8)
movl %ebp, 0x30(%r11)
decl %r9d
testl %r9d, %r9d
jg 0x16d10
leal -0x1(%rdi), %r9d
testl %edi, %edi
movl %r9d, %edi
jg 0x16cee
movl %esi, (%rbx)
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq