// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/fullgen.c
// Function: suchestart_reko_sp
KANTE *suchestart_reko_sp( KANTE *start, int *fuenfecke)
/* Wie suchestart_reko -- nur die spiegelversion */

{
int i, j, k, zaehler, position, sqlaenge;
KANTE *run;
int sequenz[7]; 
KANTE *seqkanten[7];
int puffer[7];
char kan[7];



while (start->prev->invers->prev->invers->prev->mininame == aussen) 
                      start=start->prev->invers->prev->invers->prev;
/* Sucht 2 Kanten hintereinander nach aussen -- zu unterscheiden vom namen aussen, was 
   auch nach innen heissen kann. Duerfte nur fuer bauchbinden eine Endlosschleife sein */

for (i=0; i<7; i++) { sequenz[i]=leer; seqkanten[i]=nil; kan[i]=0; }

sqlaenge=0;
position=0;
seqkanten[0]=start;


for (zaehler=1, run=start;
     run->next->invers->next->invers->next->mininame == aussen;
     run=run->next->invers->next->invers->next) zaehler++;
sequenz[0]=zaehler; position=1; seqkanten[1]=nil;
for (run=run->next->invers->next->invers->next->invers->next; run->mininame != aussen;
     run=run->invers->next) 
{ sequenz[position]=0; position++; seqkanten[position]=nil; }
/* naechste Kante vor nicht-0-sequenz suchen -- entsprechende innenkanten gibt es nicht
   und muessen sich dementsprechend auch nicht gemerkt werden */


while (run != start)
{
seqkanten[position]=run;
for (zaehler=1; 
     run->next->invers->next->invers->next->mininame == aussen;
     run=run->next->invers->next->invers->next) { zaehler++; }
sequenz[position]=zaehler; position++; seqkanten[position]=nil;
for (run=run->next->invers->next->invers->next->invers->next; run->mininame != aussen;
     run=run->invers->next) 
{ sequenz[position]=0; position++; seqkanten[position]=nil; }
}


sequenz[position]=leer; seqkanten[position]=nil;
sqlaenge=position;

*fuenfecke=6-sqlaenge;

kan[0]=sequenz_kanonisch(sequenz);


for (i=0; sequenz[i] != leer; i++)
  { for (j=i, k=0; sequenz[j]!=leer; j++, k++) puffer[k]=sequenz[j];
    for (j=0; j<i; j++, k++) puffer[k]=sequenz[j];
    puffer[k]=leer;
    kan[i]=sequenz_kanonisch(puffer);
  }



for (i=0, run=nil; sequenz[i] != leer; i++)
  { if (kan[i])
      if ((run==nil) || (seqkanten[i]->dummy < run->dummy)) run=seqkanten[i];
      /* dummy ersetzt ursprung */
  }

/* Jetzt die vorige Innenkante suchen, um links (spiegel !!) davon dann einfuegen zu koennen */
for (run=run->prev->invers->prev->invers->prev; run->mininame != aussen; run=run->invers->prev);

return(run);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jne 0xaac4
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0xaa83
movl $0x0, -0x14(%rbp)
cmpl $0x7, -0x14(%rbp)
jge 0xab04
movslq -0x14(%rbp), %rax
movl $0xfffe, -0x50(%rbp,%rax,4) # imm = 0xFFFE
movslq -0x14(%rbp), %rax
movq $0x0, -0x90(%rbp,%rax,8)
movslq -0x14(%rbp), %rax
movb $0x0, -0xb7(%rbp,%rax)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xaacb
movl $0x0, -0x28(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x90(%rbp)
movl $0x1, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jne 0xab76
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0xab2c
movl -0x20(%rbp), %eax
movl %eax, -0x50(%rbp)
movl $0x1, -0x24(%rbp)
movq $0x0, -0x88(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
je 0xabf8
movslq -0x24(%rbp), %rax
movl $0x0, -0x50(%rbp,%rax,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rax
movq $0x0, -0x90(%rbp,%rax,8)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0xabb2
jmp 0xabfa
movq -0x30(%rbp), %rax
cmpq -0x8(%rbp), %rax
je 0xacfc
movq -0x30(%rbp), %rcx
movslq -0x24(%rbp), %rax
movq %rcx, -0x90(%rbp,%rax,8)
movl $0x1, -0x20(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jne 0xac69
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0xac1f
movl -0x20(%rbp), %ecx
movslq -0x24(%rbp), %rax
movl %ecx, -0x50(%rbp,%rax,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rax
movq $0x0, -0x90(%rbp,%rax,8)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
je 0xacf7
movslq -0x24(%rbp), %rax
movl $0x0, -0x50(%rbp,%rax,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rax
movq $0x0, -0x90(%rbp,%rax,8)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0xacb1
jmp 0xabfa
movslq -0x24(%rbp), %rax
movl $0xfffe, -0x50(%rbp,%rax,4) # imm = 0xFFFE
movslq -0x24(%rbp), %rax
movq $0x0, -0x90(%rbp,%rax,8)
movl -0x24(%rbp), %eax
movl %eax, -0x28(%rbp)
movl $0x6, %ecx
subl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
leaq -0x50(%rbp), %rdi
callq 0x49a0
movb %al, -0xb7(%rbp)
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rax
cmpl $0xfffe, -0x50(%rbp,%rax,4) # imm = 0xFFFE
je 0xae02
movl -0x14(%rbp), %eax
movl %eax, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movslq -0x18(%rbp), %rax
cmpl $0xfffe, -0x50(%rbp,%rax,4) # imm = 0xFFFE
je 0xad96
movslq -0x18(%rbp), %rax
movl -0x50(%rbp,%rax,4), %ecx
movslq -0x1c(%rbp), %rax
movl %ecx, -0xb0(%rbp,%rax,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0xad61
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0xadcc
movslq -0x18(%rbp), %rax
movl -0x50(%rbp,%rax,4), %ecx
movslq -0x1c(%rbp), %rax
movl %ecx, -0xb0(%rbp,%rax,4)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0xad9d
movslq -0x1c(%rbp), %rax
movl $0xfffe, -0xb0(%rbp,%rax,4) # imm = 0xFFFE
leaq -0xb0(%rbp), %rdi
callq 0x49a0
movb %al, %cl
movslq -0x14(%rbp), %rax
movb %cl, -0xb7(%rbp,%rax)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xad42
movl $0x0, -0x14(%rbp)
movq $0x0, -0x30(%rbp)
movslq -0x14(%rbp), %rax
cmpl $0xfffe, -0x50(%rbp,%rax,4) # imm = 0xFFFE
je 0xae6d
movslq -0x14(%rbp), %rax
cmpb $0x0, -0xb7(%rbp,%rax)
je 0xae60
cmpq $0x0, -0x30(%rbp)
je 0xae4e
movslq -0x14(%rbp), %rax
movq -0x90(%rbp,%rax,8), %rax
movq 0x8(%rax), %rax
movq -0x30(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jge 0xae5e
movslq -0x14(%rbp), %rax
movq -0x90(%rbp,%rax,8), %rax
movq %rax, -0x30(%rbp)
jmp 0xae60
jmp 0xae62
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xae11
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
je 0xaeac
jmp 0xae9a
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0xae89
movq -0x30(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
nopl (%rax)