// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/fullgen.c
// Function: belege_sequenz
void belege_sequenz( KANTE *start, SEQUENZ *sq)
/* belegt die sequenz startend bei der Kante start */
/* geht fest davon aus, dass 2 mal nach innen hintereinander nicht vorkommt */

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


sequenz=sq->sequenz;
seqkanten=sq->kanten;
kan=sq->k_marks;


if (start->next->invers->next->name == aussen) 
    { fprintf(stderr,"Achtung -- naechste Kante nicht nach innen -- FEHLER !\n");
      exit(7); }

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

if (start->prev->invers->prev->name != aussen) /* d.h. vorige Kante nicht nach aussen, also nur
						  Randlaenge zu bestimmen */
    { sq->laenge=0;
      for (run=start->next->invers->next->invers->next, zaehler=1; run != start;
           run=run->next->invers->next->invers->next) zaehler++;
      sequenz[0]=zaehler;
      seqkanten[0]=start;
      return;
    }

sq->laenge=0;
zaehler=1;
position=0;
seqkanten[0]=start;


for (run=start->next->invers->next->invers->next; run->next->invers->next->name < aussen;
     run=run->next->invers->next->invers->next) zaehler++;
sequenz[0]=zaehler; position=1; 
if (run->next->invers->next != start) seqkanten[position]=run->next->invers->next;
for (run=run->next->invers->next; run->next->invers->next->name >= aussen;
     run=run->next->invers->next) 
{ sequenz[position]=0; position++;
if (run->next->invers->next != start) seqkanten[position]=run->next->invers->next; }
/* naechste Kante vor nicht-0-sequenz suchen */


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

}

sequenz[position]=leer; seqkanten[position]=nil;
sq->laenge=position;

kan[0]=sequenz_kanonisch(sequenz);

for (i=1; 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);
  }



}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
addq $0x58, %rax
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movzwl 0x2(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jne 0x51d1
movq 0x16e42(%rip), %rax     # 0x1bff8
movq (%rax), %rdi
leaq 0x1343b(%rip), %rsi     # 0x185fb
movb $0x0, %al
callq 0x1080
movl $0x7, %edi
callq 0x1120
movl $0x0, -0x14(%rbp)
cmpl $0x7, -0x14(%rbp)
jge 0x5214
movq -0x38(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl $0xfffe, (%rax,%rcx,4)  # imm = 0xFFFE
movq -0x40(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movq -0x68(%rbp), %rax
movslq -0x14(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x51d8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movzwl 0x2(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
je 0x52a6
movq -0x10(%rbp), %rax
movl $0x0, (%rax)
movq -0x8(%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)
movl $0x1, -0x20(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x8(%rbp), %rax
je 0x528d
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 0x525c
movl -0x20(%rbp), %ecx
movq -0x38(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, (%rax)
jmp 0x5632
movq -0x10(%rbp), %rax
movl $0x0, (%rax)
movl $0x1, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x8(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%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)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movzwl 0x2(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jge 0x5327
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 0x52e5
movl -0x20(%rbp), %ecx
movq -0x38(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x24(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
cmpq -0x8(%rbp), %rax
je 0x5369
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rdx
movq -0x40(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movzwl 0x2(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jl 0x53fa
movq -0x38(%rbp), %rax
movslq -0x24(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
cmpq -0x8(%rbp), %rax
je 0x53e2
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rdx
movq -0x40(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x53e4
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x537d
jmp 0x53fc
movq -0x30(%rbp), %rax
cmpq -0x8(%rbp), %rax
je 0x5532
movl $0x0, -0x20(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movzwl 0x2(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jge 0x5453
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 0x5411
movl -0x20(%rbp), %edx
movq -0x38(%rbp), %rax
movslq -0x24(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
cmpq -0x8(%rbp), %rax
je 0x549c
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rdx
movq -0x40(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movzwl 0x2(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jl 0x552d
movq -0x38(%rbp), %rax
movslq -0x24(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
cmpq -0x8(%rbp), %rax
je 0x5515
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rdx
movq -0x40(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x5517
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x54b0
jmp 0x53fc
movq -0x38(%rbp), %rax
movslq -0x24(%rbp), %rcx
movl $0xfffe, (%rax,%rcx,4)  # imm = 0xFFFE
movq -0x40(%rbp), %rax
movslq -0x24(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x38(%rbp), %rdi
callq 0x49a0
movb %al, %cl
movq -0x68(%rbp), %rax
movb %cl, (%rax)
movl $0x1, -0x14(%rbp)
movq -0x38(%rbp), %rax
movslq -0x14(%rbp), %rcx
cmpl $0xfffe, (%rax,%rcx,4)  # imm = 0xFFFE
je 0x5632
movl -0x14(%rbp), %eax
movl %eax, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movq -0x38(%rbp), %rax
movslq -0x18(%rbp), %rcx
cmpl $0xfffe, (%rax,%rcx,4)  # imm = 0xFFFE
je 0x55cc
movq -0x38(%rbp), %rax
movslq -0x18(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
movslq -0x1c(%rbp), %rax
movl %ecx, -0x60(%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 0x5594
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x5602
movq -0x38(%rbp), %rax
movslq -0x18(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
movslq -0x1c(%rbp), %rax
movl %ecx, -0x60(%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 0x55d3
movslq -0x1c(%rbp), %rax
movl $0xfffe, -0x60(%rbp,%rax,4) # imm = 0xFFFE
leaq -0x60(%rbp), %rdi
callq 0x49a0
movb %al, %dl
movq -0x68(%rbp), %rax
movslq -0x14(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x5572
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax,%rax)