// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/plantri.c
// Function: scanmin5c
static void
scanmin5c(int nbtot, int nbop, int dosplit, EDGE **prevA, int nprevA)

/* The main node of the recursion for 5-connected triangulations.
   As this procedure is entered, nv,ne,degree etc are set for some graph,
   and nbtot/nbop are the values returned by canon() for that graph.
   If dosplit==TRUE, this is the place to do splitting (if any).
   prev[0..nprevA-1] is the list of consecutive A operations leading
   to this graph, given by their central edges.
   If nprevA == 0, this graph wasn't made with A.
*/
{
    EDGE *firstedge_save[MAXN];
    EDGE *extA1[MAXN*MAXN/4+10],*extA2[MAXN*MAXN/4+10],
         *extB[MAXE],*extC[MAXN];
    EDGE *extAred,*extBred,*extCred,*extCanchor;
    int extBmirror[MAXE];
    EDGE *good_or[MAXE],*good_mir[MAXE];
    EDGE *newprevA[MAXN];
    int ngood_or,ngood_mir,ngood_ref,ngood_mir_ref;
    int nextA,nextB,nextC,i,j;
    int xnbtot,xnbop;
    int colour[MAXN];

    if (nv == maxnv)
    {
        got_one(nbtot,nbop,5);
	return;
    }

    if (dosplit)
    {
#ifdef SPLITTEST
        ADDBIG(splitcases,1);
        return;
#endif
        if (splitcount-- != 0) return;
        splitcount = mod - 1;

        for (i = 0; i < nv; ++i) firstedge_save[i] = firstedge[i];
    }

#ifdef PRE_FILTER_MIN5
    if (!(PRE_FILTER_MIN5)) return;
#endif

#ifndef FIND_EXTENSIONS_MIN5
#define FIND_EXTENSIONS_MIN5 find_extensions_min5
#endif

    FIND_EXTENSIONS_MIN5(nbtot,nbop,extA1,extA2,&nextA,extB,extBmirror,
          &nextB,extC,&nextC,(nprevA==0?NULL:prevA[nprevA-1]));

    if (nextA > MAXN*MAXN/4)
    {
	fprintf(stderr,">E Increase the array bounds for extA1 and\n");
	fprintf(stderr,"   extA2 in scanmin5() and scanmin5c().\n");
	exit(1);
    }

    for (i = 0; i < nextA; ++i)
    {
        extAred = extend_min5_a(extA1[i],extA2[i]);
#ifdef FAST_FILTER_MIN5
        if (FAST_FILTER_MIN5)
#endif 
        {
	    min5_a_legal(extAred,good_or,&ngood_or,&ngood_ref,
		         good_mir,&ngood_mir,&ngood_mir_ref,prevA,nprevA);

            if (ngood_ref+ngood_mir_ref > 0)
	    {
	        if (nv == maxnv && !needgroup && ngood_or == ngood_ref
                                              && ngood_mir == ngood_mir_ref)
	        {
		    got_one(1,1,5);
	        }
	        else if (ngood_or+ngood_mir==1)
	        {
		    prevA[nprevA] = extAred;
    		    scanmin5c(1,1,nv==splitlevel,prevA,nprevA+1);
	        }
	        else if (canon_edge_oriented(good_or,ngood_or,ngood_ref,
                                           good_mir,ngood_mir,ngood_mir_ref,
                                           degree,numbering,&xnbtot,&xnbop))
	        {
                    prevA[nprevA] = extAred;
	            scanmin5c(xnbtot,xnbop,nv==splitlevel,prevA,nprevA+1);
	        }
	    }
	}
	reduce_min5_a(extAred);
    }

    for (i = 0; i < nextB; ++i)
    {
        extBred = extend_min5_b(extB[i],extBmirror[i]);
#ifdef FAST_FILTER_MIN5
        if (FAST_FILTER_MIN5)
#endif  
        {
            if (!has_min5_a())
	    {
                min5_b_legal(extBred,extBmirror[i],good_or,&ngood_or,
			     &ngood_ref,good_mir,&ngood_mir,&ngood_mir_ref);
    
                if (ngood_ref+ngood_mir_ref > 0)
                {
                    if (canon_edge_oriented(good_or,ngood_or,ngood_ref,
                                            good_mir,ngood_mir,ngood_mir_ref,
                                            degree,numbering,&xnbtot,&xnbop))
                        scanmin5c(xnbtot,xnbop,
                                  nv==splitlevel||nv==splitlevel+1,newprevA,0);
	        }
	    }
	}
        reduce_min5_b(extBred,extBmirror[i]);
    }

    for (i = 0; i < nextC; ++i)
    {
        extCred = extend_min5_c(extC[i],&extCanchor);
#ifdef FAST_FILTER_MIN5
        if (FAST_FILTER_MIN5)
#endif  
        {
            if (!has_min5_a() && !has_min5_b())
            {
	        for (j = 0; j < nv-1; ++j)
		    if (is_min5_c_centre(j)) colour[j] = 2;
		    else                     colour[j] = degree[j];
	        colour[nv-1] = 2;
    
                if (canon(colour,numbering,&xnbtot,&xnbop)) 
                    scanmin5c(xnbtot,xnbop,
                              nv>=splitlevel&&nv<=splitlevel+4,newprevA,0);
            }
        }
        reduce_min5_c(extCred,extCanchor);
    }

    if (dosplit)
        for (i = 0; i < nv; ++i) firstedge[i] = firstedge_save[i];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x7140, %rsp           # imm = 0x7140
movl %edi, -0x14(%rbp)
movl %esi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq %rcx, -0x28(%rbp)
movl %r8d, -0x2c(%rbp)
movl 0x224a4b(%rip), %eax    # 0x25a620
cmpl 0x66a5(%rip), %eax      # 0x3c280
jne 0x35bf2
movl -0x14(%rbp), %edi
movl -0x18(%rbp), %esi
movl $0x5, %edx
callq 0x8080
jmp 0x36353
cmpl $0x0, -0x1c(%rbp)
je 0x35c6e
movl 0x26b032(%rip), %eax    # 0x2a0c30
movl %eax, %ecx
addl $-0x1, %ecx
movl %ecx, 0x26b027(%rip)    # 0x2a0c30
cmpl $0x0, %eax
je 0x35c13
jmp 0x36353
movl 0x6663(%rip), %eax      # 0x3c27c
subl $0x1, %eax
movl %eax, 0x26b00e(%rip)    # 0x2a0c30
movl $0x0, -0x6fc0(%rbp)
movl -0x6fc0(%rbp), %eax
cmpl 0x2249e8(%rip), %eax    # 0x25a620
jge 0x35c6c
movslq -0x6fc0(%rbp), %rcx
leaq 0x7db8(%rip), %rax      # 0x3da00
movq (%rax,%rcx,8), %rcx
movslq -0x6fc0(%rbp), %rax
movq %rcx, -0x230(%rbp,%rax,8)
movl -0x6fc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6fc0(%rbp)
jmp 0x35c2c
jmp 0x35c6e
movl -0x14(%rbp), %eax
movl %eax, -0x7100(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x70fc(%rbp)
leaq -0x2280(%rbp), %rax
movq %rax, -0x70f8(%rbp)
leaq -0x42d0(%rbp), %rax
movq %rax, -0x70f0(%rbp)
leaq -0x4e70(%rbp), %rax
movq %rax, -0x70e8(%rbp)
leaq -0x5660(%rbp), %rax
movq %rax, -0x70e0(%rbp)
leaq -0x5070(%rbp), %rax
movq %rax, -0x70d8(%rbp)
cmpl $0x0, -0x2c(%rbp)
jne 0x35cd7
xorl %eax, %eax
movq %rax, -0x7108(%rbp)
jmp 0x35cef
movq -0x28(%rbp), %rax
movl -0x2c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x7108(%rbp)
movq -0x70d8(%rbp), %r11
movq -0x70e0(%rbp), %r14
movq -0x70e8(%rbp), %r9
movq -0x70f0(%rbp), %rcx
movq -0x70f8(%rbp), %rdx
movl -0x70fc(%rbp), %esi
movl -0x7100(%rbp), %edi
movq -0x7108(%rbp), %rax
leaq -0x6fb4(%rbp), %r8
leaq -0x6fb8(%rbp), %rbx
leaq -0x6fbc(%rbp), %r10
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x1c9c0
cmpl $0x400, -0x6fb4(%rbp)   # imm = 0x400
jle 0x35d9d
movq 0x628e(%rip), %rax      # 0x3bff8
movq (%rax), %rdi
leaq 0x2871(%rip), %rsi      # 0x385e5
movb $0x0, %al
callq 0x1060
movq 0x6276(%rip), %rax      # 0x3bff8
movq (%rax), %rdi
leaq 0x2885(%rip), %rsi      # 0x38611
movb $0x0, %al
callq 0x1060
movl $0x1, %edi
callq 0x10c0
movl $0x0, -0x6fc0(%rbp)
movl -0x6fc0(%rbp), %eax
cmpl -0x6fb4(%rbp), %eax
jge 0x35fab
movslq -0x6fc0(%rbp), %rax
movq -0x2280(%rbp,%rax,8), %rdi
movslq -0x6fc0(%rbp), %rax
movq -0x42d0(%rbp,%rax,8), %rsi
callq 0x1d700
movq %rax, -0x5078(%rbp)
movq -0x5078(%rbp), %rdi
leaq -0x6200(%rbp), %rsi
leaq -0x6da0(%rbp), %r8
movq -0x28(%rbp), %r10
movl -0x2c(%rbp), %eax
leaq -0x6fa4(%rbp), %rdx
leaq -0x6fac(%rbp), %rcx
leaq -0x6fa8(%rbp), %r9
leaq -0x6fb0(%rbp), %r11
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x1d9f0
movl -0x6fac(%rbp), %eax
addl -0x6fb0(%rbp), %eax
cmpl $0x0, %eax
jle 0x35f8b
movl 0x2247d8(%rip), %eax    # 0x25a620
cmpl 0x6432(%rip), %eax      # 0x3c280
jne 0x35e8b
cmpl $0x0, 0x7b99(%rip)      # 0x3d9f0
jne 0x35e8b
movl -0x6fa4(%rbp), %eax
cmpl -0x6fac(%rbp), %eax
jne 0x35e8b
movl -0x6fa8(%rbp), %eax
cmpl -0x6fb0(%rbp), %eax
jne 0x35e8b
movl $0x1, %esi
movl $0x5, %edx
movl %esi, %edi
callq 0x8080
jmp 0x35f89
movl -0x6fa4(%rbp), %eax
addl -0x6fa8(%rbp), %eax
cmpl $0x1, %eax
jne 0x35ee0
movq -0x5078(%rbp), %rdx
movq -0x28(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl 0x22476b(%rip), %eax    # 0x25a620
cmpl 0x7b39(%rip), %eax      # 0x3d9f4
sete %al
andb $0x1, %al
movzbl %al, %edx
movq -0x28(%rbp), %rcx
movl -0x2c(%rbp), %r8d
addl $0x1, %r8d
movl $0x1, %esi
movl %esi, %edi
callq 0x35bb0
jmp 0x35f87
leaq -0x6200(%rbp), %rdi
movl -0x6fa4(%rbp), %esi
movl -0x6fac(%rbp), %edx
leaq -0x6da0(%rbp), %rcx
movl -0x6fa8(%rbp), %r8d
movl -0x6fb0(%rbp), %r9d
leaq 0x7cf1(%rip), %rbx      # 0x3dc00
leaq 0x7dea(%rip), %r11      # 0x3dd00
leaq -0x6fc8(%rbp), %r10
leaq -0x6fcc(%rbp), %rax
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0xf4b0
cmpl $0x0, %eax
je 0x35f85
movq -0x5078(%rbp), %rdx
movq -0x28(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x6fc8(%rbp), %edi
movl -0x6fcc(%rbp), %esi
movl 0x2246ba(%rip), %eax    # 0x25a620
cmpl 0x7a88(%rip), %eax      # 0x3d9f4
sete %al
andb $0x1, %al
movzbl %al, %edx
movq -0x28(%rbp), %rcx
movl -0x2c(%rbp), %r8d
addl $0x1, %r8d
callq 0x35bb0
jmp 0x35f87
jmp 0x35f89
jmp 0x35f8b
movq -0x5078(%rbp), %rdi
callq 0x1e3d0
movl -0x6fc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6fc0(%rbp)
jmp 0x35da7
movl $0x0, -0x6fc0(%rbp)
movl -0x6fc0(%rbp), %eax
cmpl -0x6fb8(%rbp), %eax
jge 0x36161
movslq -0x6fc0(%rbp), %rax
movq -0x4e70(%rbp,%rax,8), %rdi
movslq -0x6fc0(%rbp), %rax
movl -0x5660(%rbp,%rax,4), %esi
callq 0x1e5e0
movq %rax, -0x5080(%rbp)
callq 0x1edd0
cmpl $0x0, %eax
jne 0x36133
movq -0x5080(%rbp), %rdi
movslq -0x6fc0(%rbp), %rax
movl -0x5660(%rbp,%rax,4), %esi
leaq -0x6200(%rbp), %rdx
leaq -0x6da0(%rbp), %r9
leaq -0x6fa4(%rbp), %rcx
leaq -0x6fac(%rbp), %r8
leaq -0x6fa8(%rbp), %r10
leaq -0x6fb0(%rbp), %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1eea0
movl -0x6fac(%rbp), %eax
addl -0x6fb0(%rbp), %eax
cmpl $0x0, %eax
jle 0x36131
leaq -0x6200(%rbp), %rdi
movl -0x6fa4(%rbp), %esi
movl -0x6fac(%rbp), %edx
leaq -0x6da0(%rbp), %rcx
movl -0x6fa8(%rbp), %r8d
movl -0x6fb0(%rbp), %r9d
leaq 0x7b71(%rip), %rbx      # 0x3dc00
leaq 0x7c6a(%rip), %r11      # 0x3dd00
leaq -0x6fc8(%rbp), %r10
leaq -0x6fcc(%rbp), %rax
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0xf4b0
cmpl $0x0, %eax
je 0x3612f
movl -0x6fc8(%rbp), %eax
movl %eax, -0x7114(%rbp)
movl -0x6fcc(%rbp), %eax
movl %eax, -0x7110(%rbp)
movl 0x224541(%rip), %ecx    # 0x25a620
movb $0x1, %al
cmpl 0x790d(%rip), %ecx      # 0x3d9f4
movb %al, -0x7109(%rbp)
je 0x36109
movl 0x22452b(%rip), %eax    # 0x25a620
movl 0x78f9(%rip), %ecx      # 0x3d9f4
addl $0x1, %ecx
cmpl %ecx, %eax
sete %al
movb %al, -0x7109(%rbp)
movl -0x7110(%rbp), %esi
movl -0x7114(%rbp), %edi
movb -0x7109(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
leaq -0x6fa0(%rbp), %rcx
xorl %r8d, %r8d
callq 0x35bb0
jmp 0x36131
jmp 0x36133
movq -0x5080(%rbp), %rdi
movslq -0x6fc0(%rbp), %rax
movl -0x5660(%rbp,%rax,4), %esi
callq 0x1f1a0
movl -0x6fc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6fc0(%rbp)
jmp 0x35fb5
movl $0x0, -0x6fc0(%rbp)
movl -0x6fc0(%rbp), %eax
cmpl -0x6fbc(%rbp), %eax
jge 0x36301
movslq -0x6fc0(%rbp), %rax
movq -0x5070(%rbp,%rax,8), %rdi
leaq -0x5090(%rbp), %rsi
callq 0x1f630
movq %rax, -0x5088(%rbp)
callq 0x1edd0
cmpl $0x0, %eax
jne 0x362da
callq 0x1fc50
cmpl $0x0, %eax
jne 0x362da
movl $0x0, -0x6fc4(%rbp)
movl -0x6fc4(%rbp), %eax
movl 0x22444f(%rip), %ecx    # 0x25a620
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x3622e
movl -0x6fc4(%rbp), %edi
callq 0x1fd60
cmpl $0x0, %eax
je 0x361fc
movslq -0x6fc4(%rbp), %rax
movl $0x2, -0x70d0(%rbp,%rax,4)
jmp 0x3621b
movslq -0x6fc4(%rbp), %rcx
leaq 0x79f6(%rip), %rax      # 0x3dc00
movl (%rax,%rcx,4), %ecx
movslq -0x6fc4(%rbp), %rax
movl %ecx, -0x70d0(%rbp,%rax,4)
jmp 0x3621d
movl -0x6fc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6fc4(%rbp)
jmp 0x361c5
movl 0x2243ec(%rip), %eax    # 0x25a620
subl $0x1, %eax
cltq
movl $0x2, -0x70d0(%rbp,%rax,4)
leaq -0x70d0(%rbp), %rdi
leaq 0x7aae(%rip), %rsi      # 0x3dd00
leaq -0x6fc8(%rbp), %rdx
leaq -0x6fcc(%rbp), %rcx
callq 0x7410
cmpl $0x0, %eax
je 0x362d8
movl -0x6fc8(%rbp), %eax
movl %eax, -0x7120(%rbp)
movl -0x6fcc(%rbp), %eax
movl %eax, -0x711c(%rbp)
movl 0x224398(%rip), %ecx    # 0x25a620
xorl %eax, %eax
cmpl 0x7764(%rip), %ecx      # 0x3d9f4
movb %al, -0x7115(%rbp)
jl 0x362b2
movl 0x224382(%rip), %eax    # 0x25a620
movl 0x7750(%rip), %ecx      # 0x3d9f4
addl $0x4, %ecx
cmpl %ecx, %eax
setle %al
movb %al, -0x7115(%rbp)
movl -0x711c(%rbp), %esi
movl -0x7120(%rbp), %edi
movb -0x7115(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
leaq -0x6fa0(%rbp), %rcx
xorl %r8d, %r8d
callq 0x35bb0
jmp 0x362da
movq -0x5088(%rbp), %rdi
movq -0x5090(%rbp), %rsi
callq 0x1ff70
movl -0x6fc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6fc0(%rbp)
jmp 0x3616b
cmpl $0x0, -0x1c(%rbp)
je 0x36353
movl $0x0, -0x6fc0(%rbp)
movl -0x6fc0(%rbp), %eax
cmpl 0x224303(%rip), %eax    # 0x25a620
jge 0x36351
movslq -0x6fc0(%rbp), %rax
movq -0x230(%rbp,%rax,8), %rdx
movslq -0x6fc0(%rbp), %rcx
leaq 0x76c4(%rip), %rax      # 0x3da00
movq %rdx, (%rax,%rcx,8)
movl -0x6fc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6fc0(%rbp)
jmp 0x36311
jmp 0x36353
addq $0x7140, %rsp           # imm = 0x7140
popq %rbx
popq %r14
popq %rbp
retq
nop