// File: /workspace/github_c_makefile_star2_O3/mishun[P]plantri/plantri.c
// Function: quadrangulation_dispatch
static void
quadrangulation_dispatch(void)

/* Simple quadrangulations. */
{
    int startingsize,nbtot,nbop,hint;
    EDGE *P1edges[MAXN];

    if (minimumdeg <= 0) minimumdeg = 3;
    if (minconnec <= 0) minconnec = 3;
    if (minimumdeg==2 && minconnec>=3) minimumdeg = 3;
    startingsize = (minimumdeg == 2 ? 4 : 8);

    CHECKRANGE(maxnv,"n",startingsize,MAXN);
    CHECKRANGE(minconnec,"-c",2,4);
    CHECKRANGE(minimumdeg,"-m",2,3);

    INCOMPAT(pswitch,"-q","-p");
    INCOMPAT(bswitch,"-q","-b");
    INCOMPAT(polygonsize>=0,"-q","-P");
    INCOMPAT(tswitch,"-q","-t");
    INCOMPAT(edgebound[0]>=0,"-q","-e");
    INCOMPAT(maxfacesize>=0,"-q","-f");
    
    if (dswitch) strcpy(outtypename,"quartic graphs");
    else         strcpy(outtypename,"quadrangulations");

    open_output_file();

    needgroup = Gswitch;

    if (minimumdeg == 2)
    {
        hint = MIN(maxnv <= 16 ? maxnv-5 : maxnv-6, maxnv < 25 ? 17 : 18);
        initialize_splitting(startingsize,hint,maxnv-1);
        if (splitlevel == 0 && res > 0) return;
        initialize_quadrangulations();
	extend_quadr_P0(firstedge[1]);   /* make square */
        xconnec = minconnec;
        canon(degree,numbering,&nbtot,&nbop);
	scanquadrangulations_all(nbtot,nbop);
#ifdef STATS
        fprintf(msgfile,"Counts by min degree: ");
        PRINTBIG(msgfile,nummindeg[2]);
        fprintf(msgfile," ");
        PRINTBIG(msgfile,nummindeg[3]);
        fprintf(msgfile,"\n");
#endif
    }
    else
    {
        hint = MIN(maxnv <= 23 ? maxnv-5 : maxnv-6, maxnv < 30 ? 23 : 24);
        initialize_splitting(startingsize,hint,maxnv-2);
        if (splitlevel == 0 && res > 0) return;
        initialize_min3_quadrangulations();
        xconnec = minconnec;
        canon(degree,numbering,&nbtot,&nbop);
        if (minconnec == 3)
            scanquadrangulations(nbtot,nbop,firstedge[0],
						splitlevel==8,P1edges,0);
        else if (minconnec == 4)
            scanquadrangulations_nf4(nbtot,nbop,firstedge[0],
					        splitlevel==8,P1edges,0);
        else
            scanquadrangulations_min3(nbtot,nbop,firstedge[0],
					        splitlevel==8,P1edges,0);
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
movl 0x212c2(%rip), %ecx     # 0x261b8
testl %ecx, %ecx
jg 0x4f09
movl $0x3, 0x212b4(%rip)     # 0x261b8
movl $0x3, %ecx
movl 0x211a1(%rip), %eax     # 0x260b0
testl %eax, %eax
jg 0x4f22
movl $0x3, 0x21193(%rip)     # 0x260b0
movl $0x3, %eax
cmpl $0x2, %ecx
setne %dl
cmpl $0x3, %eax
setb %sil
orb %dl, %sil
jne 0x4f47
movl $0x3, 0x2127a(%rip)     # 0x261b8
movl $0x8, %ebx
xorl %ecx, %ecx
jmp 0x4f5f
xorl %edx, %edx
cmpl $0x2, %ecx
setne %dl
leal 0x4(,%rdx,4), %ebx
addl $-0x4, %ecx
cmpl $-0x2, %ecx
setb %cl
movl 0x2130b(%rip), %edx     # 0x26270
cmpl $0x40, %edx
jg 0x51df
cmpl %ebx, %edx
jl 0x51df
addl $-0x5, %eax
cmpl $-0x4, %eax
jbe 0x51e6
testb %cl, %cl
jne 0x51eb
cmpb $0x1, 0x21217(%rip)     # 0x261a8
je 0x51f0
cmpb $0x1, 0x2120e(%rip)     # 0x261ac
je 0x51f5
cmpl $0x0, 0x21205(%rip)     # 0x261b0
jns 0x51fa
cmpb $0x1, 0x210fc(%rip)     # 0x260b4
je 0x51ff
cmpl $0x0, 0x21297(%rip)     # 0x2625c
jns 0x5204
cmpl $0x0, 0x21292(%rip)     # 0x26264
jns 0x5209
cmpb $0x1, 0x2126d(%rip)     # 0x2624c
jne 0x5005
movabsq $0x73687061726720, %rax # imm = 0x73687061726720
movq %rax, 0x21205(%rip)     # 0x261f7
movabsq $0x2063697472617571, %rax # imm = 0x2063697472617571
movq %rax, 0x211ed(%rip)     # 0x261f0
jmp 0x501a
movups 0x1b6d1(%rip), %xmm0    # 0x206dd
movaps %xmm0, 0x211dd(%rip)    # 0x261f0
movb $0x0, 0x211e6(%rip)     # 0x26200
callq 0x5d37
movzbl 0x2121e(%rip), %eax     # 0x26244
cmpl $0x2, 0x2118b(%rip)     # 0x261b8
movl %eax, 0x229ad(%rip)     # 0x279e0
movl 0x21237(%rip), %ecx     # 0x26270
movzbl 0x21218(%rip), %edx     # 0x26258
movl 0x21226(%rip), %eax     # 0x2626c
jne 0x5102
xorl %esi, %esi
cmpl $0x11, %ecx
setl %sil
addl %ecx, %esi
addl $-0x6, %esi
xorl %edi, %edi
cmpl $0x19, %ecx
setge %dil
addl $0x11, %edi
cmpl %edi, %esi
cmovll %esi, %edi
leal -0x1(%rcx), %esi
addl %edx, %edi
cmpl %esi, %edi
cmovgel %esi, %edi
xorl %edx, %edx
cmpl %ecx, %ebx
movl $0x0, %ecx
cmovll %ebx, %ecx
testl %edi, %edi
cmovlel %edi, %ecx
cmpl %ebx, %edi
cmovgel %edi, %ecx
cmpl $0x1, %eax
cmovel %edx, %ecx
movl %ecx, 0x2294d(%rip)     # 0x279e4
movl 0x211cb(%rip), %eax     # 0x26268
movl %eax, 0x285b7d(%rip)    # 0x28ac20
testl %ecx, %ecx
sete %cl
testl %eax, %eax
setg %al
testb %al, %cl
jne 0x51d4
callq 0x603e
movq 0x22937(%rip), %rdi     # 0x279f8
callq 0x622b
movl 0x20fe4(%rip), %eax     # 0x260b0
movl %eax, 0x211a2(%rip)     # 0x26274
leaq 0x22b17(%rip), %rdi     # 0x27bf0
leaq 0xc(%rsp), %rbx
leaq 0x8(%rsp), %r14
movq %rbx, %rsi
movq %r14, %rdx
callq 0x62d6
movl (%rbx), %edi
movl (%r14), %esi
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r14
jmp 0x6638
xorl %esi, %esi
cmpl $0x18, %ecx
setl %sil
addl %ecx, %esi
addl $-0x6, %esi
xorl %edi, %edi
cmpl $0x1e, %ecx
setge %dil
addl $0x17, %edi
cmpl %edi, %esi
cmovll %esi, %edi
addl $-0x2, %ecx
addl %edx, %edi
cmpl %ecx, %edi
cmovgel %ecx, %edi
xorl %edx, %edx
cmpl %ecx, %ebx
movl %ebx, %ecx
cmovgl %edx, %ecx
testl %edi, %edi
cmovlel %edi, %ecx
cmpl %ebx, %edi
cmovgel %edi, %ecx
cmpl $0x1, %eax
cmovel %edx, %ecx
movl %ecx, 0x2289a(%rip)     # 0x279e4
movl 0x21118(%rip), %eax     # 0x26268
movl %eax, 0x285aca(%rip)    # 0x28ac20
testl %ecx, %ecx
sete %cl
testl %eax, %eax
setg %al
testb %al, %cl
jne 0x51d4
callq 0x78bb
movl 0x20f41(%rip), %eax     # 0x260b0
movl %eax, 0x210ff(%rip)     # 0x26274
leaq 0x22a74(%rip), %rdi     # 0x27bf0
leaq 0xc(%rsp), %rbx
leaq 0x8(%rsp), %r14
movq %rbx, %rsi
movq %r14, %rdx
callq 0x62d6
movl 0x20f19(%rip), %eax     # 0x260b0
movl (%rbx), %edi
movl (%r14), %esi
movq 0x2284d(%rip), %rdx     # 0x279f0
xorl %ecx, %ecx
cmpl $0x8, 0x22838(%rip)     # 0x279e4
sete %cl
leaq 0x10(%rsp), %r8
xorl %r9d, %r9d
cmpl $0x4, %eax
je 0x51c8
cmpl $0x3, %eax
jne 0x51cf
callq 0x7f78
jmp 0x51d4
callq 0x1df6a
jmp 0x51d4
callq 0x92dd
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r14
retq
movl %ebx, %edi
callq 0x1e34
callq 0x1dee
callq 0x1da8
callq 0x1d72
callq 0x1d3c
callq 0x1d06
callq 0x1cd0
callq 0x1c9a
callq 0x1c64