// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/fullgen.c
// Function: get_spiralcode_inv
BOOL get_spiralcode_inv ( KANTE *edge, int minmark, FLAECHENTYP cmpcode[12],
		 int sixgons)

/* entwickelt den Spiralcode, bei dem die erste Flaeche links von edge
   liegt, die zweite rechts davon und die Entwicklung im GEGEN-Uhrzeigersinn
   geht. Sonst wie oben */

{
int mark, i;
KANTE *nextedge;
BOOL kleiner=0;
FLAECHENTYP code[12], zaehler;
int fuenfecke=0, sechsecke=0; /* zaehler fuer die wirklich eingefuegten Flaechen */
int stelle;

mark=minmark+1;  

if (checksize_mark_return( edge, mark, &nextedge)==5)
                      { code[0]=1; stelle=0; fuenfecke=1; } 
else { stelle= -1; sechsecke=1; }
if (checksize_mark_return_right( edge, mark, &nextedge)==5)
    { stelle++; code[stelle]=2; fuenfecke++; } else sechsecke++;

nextedge=edge->invers->prev;

for (i=0; (i<=stelle) && (!kleiner); i++)
  { if (code[i]>cmpcode[i]) return(0);
    if (code[i]<cmpcode[i]) kleiner=1; }

zaehler=3;

while (nextedge != nil)
  { 
    if (checksize_mark_return( nextedge, mark, &nextedge)==5)
                       { fuenfecke++;
			 stelle++; code[stelle]=zaehler; 
		         if (!kleiner)
			    { if (zaehler>cmpcode[stelle]) { return(0); }
			      if (zaehler<cmpcode[stelle]) kleiner=1;
			    }
		       }
    else sechsecke++;
    zaehler++;
  }

if ((fuenfecke<12) || (sechsecke < sixgons)) return(0);

for (i=0; i<12; i++) cmpcode[i]=code[i];
return(1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movb $0x0, -0x39(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
leaq -0x38(%rbp), %rdx
callq 0x1340
cmpl $0x5, %eax
jne 0x173a
movb $0x1, -0x45(%rbp)
movl $0x0, -0x54(%rbp)
movl $0x1, -0x4c(%rbp)
jmp 0x1748
movl $0xffffffff, -0x54(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
leaq -0x38(%rbp), %rdx
callq 0x1410
cmpl $0x5, %eax
jne 0x177a
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movslq -0x54(%rbp), %rax
movb $0x2, -0x45(%rbp,%rax)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x1783
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x38(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %ecx
xorl %eax, %eax
cmpl -0x54(%rbp), %ecx
movb %al, -0x55(%rbp)
jg 0x17b3
cmpb $0x0, -0x39(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x55(%rbp)
movb -0x55(%rbp), %al
testb $0x1, %al
jne 0x17bc
jmp 0x1808
movslq -0x2c(%rbp), %rax
movzbl -0x45(%rbp,%rax), %eax
movq -0x20(%rbp), %rcx
movslq -0x2c(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jle 0x17de
movb $0x0, -0x1(%rbp)
jmp 0x18de
movslq -0x2c(%rbp), %rax
movzbl -0x45(%rbp,%rax), %eax
movq -0x20(%rbp), %rcx
movslq -0x2c(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jge 0x17fb
movb $0x1, -0x39(%rbp)
jmp 0x17fd
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x179a
movb $0x3, -0x46(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x189b
movq -0x38(%rbp), %rdi
movl -0x28(%rbp), %esi
leaq -0x38(%rbp), %rdx
callq 0x1340
cmpl $0x5, %eax
jne 0x1885
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movb -0x46(%rbp), %cl
movslq -0x54(%rbp), %rax
movb %cl, -0x45(%rbp,%rax)
cmpb $0x0, -0x39(%rbp)
jne 0x1883
movzbl -0x46(%rbp), %eax
movq -0x20(%rbp), %rcx
movslq -0x54(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jle 0x1869
movb $0x0, -0x1(%rbp)
jmp 0x18de
movzbl -0x46(%rbp), %eax
movq -0x20(%rbp), %rcx
movslq -0x54(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jge 0x1881
movb $0x1, -0x39(%rbp)
jmp 0x1883
jmp 0x188e
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
movb -0x46(%rbp), %al
addb $0x1, %al
movb %al, -0x46(%rbp)
jmp 0x180c
cmpl $0xc, -0x4c(%rbp)
jl 0x18a9
movl -0x50(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x18af
movb $0x0, -0x1(%rbp)
jmp 0x18de
movl $0x0, -0x2c(%rbp)
cmpl $0xc, -0x2c(%rbp)
jge 0x18da
movslq -0x2c(%rbp), %rax
movb -0x45(%rbp,%rax), %dl
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x18b6
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)