// File: /workspace/github_c_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq 0x20(%rdi), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
cmpw $0x246, 0x2(%rax)       # imm = 0x246
je 0x515d
movq %rsi, %rbx
leaq 0x4(%rsi), %r9
movl $0x58, %eax
movl $0xfffe, -0x15c(%rbx,%rax,4) # imm = 0xFFFE
movq $0x0, -0x2a0(%rbx,%rax,8)
movb $0x0, (%rbx,%rax)
incq %rax
cmpq $0x5f, %rax
jne 0x4eaf
movq 0x18(%rdi), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
cmpw $0x246, 0x2(%rax)       # imm = 0x246
jne 0x510b
movq %rdi, 0x20(%rbx)
movq 0x20(%rdi), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
xorl %ecx, %ecx
movq 0x28(%rax), %rax
movq 0x20(%rax), %rdx
movq 0x20(%rdx), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
incl %ecx
cmpw $0x246, 0x2(%rax)       # imm = 0x246
jb 0x4efd
movl %ecx, (%r9)
cmpq %rdi, %rax
je 0x4f33
movq %rax, 0x28(%rbx)
movq 0x20(%rdx), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %rdx
movq 0x28(%rdx), %rcx
movq 0x20(%rcx), %rsi
movl $0x1, %ecx
cmpw $0x246, 0x2(%rsi)       # imm = 0x246
jb 0x504a
addq $0x20, %rax
movl $0x6, %ecx
movq %rax, %r8
movl $0x0, -0x10(%rbx,%rcx,4)
cmpq %rdi, %rsi
je 0x4f70
movq %rsi, (%rbx,%rcx,8)
movq (%r8), %rdx
movq 0x28(%rdx), %rax
movq 0x20(%rax), %rax
leaq 0x20(%rax), %r8
movq 0x20(%rax), %rdx
movq 0x28(%rdx), %rsi
movq 0x20(%rsi), %rsi
incq %rcx
cmpw $0x245, 0x2(%rsi)       # imm = 0x245
ja 0x4f5c
addl $-0x5, %ecx
jmp 0x504a
movq 0x20(%rax), %r8
movq 0x28(%r8), %rdx
movq 0x20(%rdx), %rsi
xorl %edx, %edx
cmpw $0x245, 0x2(%rsi)       # imm = 0x245
ja 0x4fd1
xorl %edx, %edx
incl %edx
movq 0x28(%rsi), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %r8
movq 0x28(%r8), %rsi
movq 0x20(%rsi), %rsi
cmpw $0x246, 0x2(%rsi)       # imm = 0x246
jb 0x4fb3
movslq %ecx, %rcx
movl %edx, (%r9,%rcx,4)
incl %ecx
movslq %ecx, %rdx
cmpq %rdi, %rsi
je 0x4feb
movq %rsi, 0x20(%rbx,%rdx,8)
movq 0x20(%rax), %r8
movq 0x28(%r8), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rsi), %r8
movq 0x20(%r8), %r8
cmpw $0x246, 0x2(%r8)        # imm = 0x246
jb 0x504a
addq $0x20, %rax
movq %rax, %rcx
movl $0x0, 0x4(%rbx,%rdx,4)
cmpq %rdi, %r8
je 0x5024
movq %r8, 0x28(%rbx,%rdx,8)
movq (%rcx), %rsi
movq 0x28(%rsi), %rax
movq 0x20(%rax), %rax
leaq 0x20(%rax), %rcx
movq 0x20(%rax), %rsi
movq 0x28(%rsi), %r8
movq 0x20(%r8), %r8
incq %rdx
cmpw $0x245, 0x2(%r8)        # imm = 0x245
ja 0x500f
movl %edx, %ecx
cmpq %rdi, %rax
jne 0x4f9b
movslq %ecx, %rax
movl $0xfffe, %r14d          # imm = 0xFFFE
movl %r14d, 0x4(%rbx,%rax,4)
movq $0x0, 0x20(%rbx,%rax,8)
movl %eax, (%rbx)
movq %r9, 0x8(%rsp)
movq %r9, %rdi
callq 0x48b3
movb %al, 0x58(%rbx)
movl 0x8(%rbx), %eax
cmpl %r14d, %eax
je 0x514e
leaq 0xc(%rbx), %r12
movl $0x1, %r13d
xorl %r15d, %r15d
movl $0xfffe, %ebp           # imm = 0xFFFE
leaq 0x4(,%r15,4), %rdx
movl $0x1, %r14d
xorl %ecx, %ecx
movl %eax, 0x10(%rsp,%rcx)
movl (%r12,%rcx), %eax
addq $0x4, %rcx
incq %r14
cmpl $0xfffe, %eax           # imm = 0xFFFE
jne 0x50aa
movabsq $0x3fffffffc, %rax      # imm = 0x3FFFFFFFC
andq %rax, %rcx
leaq (%rsp,%rcx), %rdi
addq $0x10, %rdi
movq 0x8(%rsp), %rsi
callq 0x10d0
addl %r15d, %r14d
movl %ebp, 0x10(%rsp,%r14,4)
leaq 0x10(%rsp), %rdi
callq 0x48b3
movb %al, 0x58(%rbx,%r13)
movl 0x8(%rbx,%r13,4), %eax
incq %r13
incq %r15
addq $0x4, %r12
cmpl %ebp, %eax
jne 0x509a
jmp 0x514e
movl $0x0, (%rbx)
movq 0x20(%rdi), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rcx
movl $0x1, %eax
cmpq %rdi, %rcx
je 0x5147
incl %eax
movq 0x20(%rcx), %rcx
movq 0x28(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq 0x28(%rcx), %rcx
movq 0x20(%rcx), %rcx
jmp 0x512a
movl %eax, 0x4(%rbx)
movq %rdi, 0x20(%rbx)
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1527