// File: /workspace/github_c_makefile_star2_O1/mishun[P]plantri/fullgen.c
// Function: baue_sandwich
void baue_sandwich(PLANMAP map, int laenge_1, int laenge_2, int laenge_3,
		   KANTE **anfang_1, KANTE **anfang_2, KANTE **anfang_3) 

{ int stelle_2, knotenzahl, i, stelle, pfadlaenge; 
KANTE *aussenzeiger, *letzte_Kante, *startkante_1, *startkante_2,*startkante_3;

pfadlaenge=laenge_1+laenge_2+laenge_3; knotenzahl=pfadlaenge-1;


map[1][1].name=2; map[1][1].invers=map[2]+0; 
for (i=1; i<=knotenzahl; i++) 
  { map[i][0].name=i-1; map[i][0].invers=map[i-1]+1;
    map[i][1].name=aussen; map[i][1].invers=nil; 
    map[i][2].name=i+1; map[i][2].invers=map[i+1]+0; 
    i++; 
    if (i<=knotenzahl) {
      map[i][0].name=i-1; map[i][0].invers=map[i-1]+2;
      map[i][2].name=aussen; map[i][2].invers=nil;
      map[i][1].name=i+1; map[i][1].invers=map[i+1]+0;
    }
  }

/* Knoten 1 und Knoten knotenzahl haben jetzt falsche vorher bzw
   nachher werte, sie muessen jetzt mit dem Sandwich verklebt werden */

stelle=laenge_1+laenge_2; 
if ((stelle%2)==0) aussenzeiger=map[stelle]+2; else aussenzeiger=map[stelle]+1;

aussenzeiger->name=1; aussenzeiger->invers=map[1]+0;
map[1][0].name=stelle; map[1][0].invers=aussenzeiger;

if ((laenge_1%2)==0) aussenzeiger=map[laenge_1]+2; 
else aussenzeiger=map[laenge_1]+1; 
if ((knotenzahl%2)==0) letzte_Kante=map[knotenzahl]+1; else letzte_Kante=map[knotenzahl]+2;

letzte_Kante->name=laenge_1; letzte_Kante->invers=aussenzeiger;
aussenzeiger->name=knotenzahl; aussenzeiger->invers=letzte_Kante;

map[0][0].name=knotenzahl;

/* Jetzt die anfangskanten belegen: */

if (laenge_2==1) stelle_2= stelle+1; else stelle_2=stelle-1;
if (stelle %2) { startkante_1=map[1]+1; startkante_2=map[stelle_2]+2; startkante_3=map[2]+2; } 
/* dann zeigt die Aussenkante von Knoten 1 ins innere von zykel_1 */ 
else { startkante_1=map[2]+2; startkante_2=map[stelle_2]+1; startkante_3=map[1]+1; }
*anfang_1=suchestart(startkante_1);
*anfang_2=suchestart(startkante_2);
*anfang_3=suchestart(startkante_3);

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %r9, %rbx
movq %r8, %r14
movq 0x40(%rsp), %r13
leal (%rdx,%rsi), %eax
leal (%rax,%rcx), %r8d
leal -0x1(%rcx,%rax), %ecx
movw $0x2, 0xc2(%rdi)
leaq 0x120(%rdi), %r9
movq %r9, 0xe8(%rdi)
movslq %ecx, %rcx
cmpl $0x2, %r8d
jl 0xde4f
movl %r8d, %r8d
xorl %r9d, %r9d
movq %rdi, %r10
leaq 0x1(%r9), %r15
movw %r9w, 0x92(%r10)
leaq 0x30(%r10), %r11
movq %r11, 0xb8(%r10)
movw $0x246, 0xc2(%r10)      # imm = 0x246
movq $0x0, 0xe8(%r10)
leal 0x2(%r9), %r11d
movw %r11w, 0xf2(%r10)
leaq 0x120(%r10), %r11
movq %r11, 0x118(%r10)
cmpq %rcx, %r15
jge 0xde38
leaq 0xf0(%r10), %r15
leal 0x1(%r9), %ebp
movw %bp, 0x122(%r10)
movq %r15, 0x148(%r10)
movw $0x246, 0x182(%r10)     # imm = 0x246
movq $0x0, 0x1a8(%r10)
leal 0x3(%r9), %ebp
movw %bp, 0x152(%r10)
leaq 0x1b0(%r10), %r15
movq %r15, 0x178(%r10)
leaq 0x2(%r9), %r15
addq $0x3, %r9
movq %r11, %r10
cmpq %r8, %r9
movq %r15, %r9
jb 0xdda4
movslq %eax, %r8
leaq (%r8,%r8,8), %r10
shlq $0x4, %r10
movslq %esi, %r8
leaq (%r8,%r8,8), %r9
shlq $0x4, %r9
testb $0x1, %sil
leaq 0x60(%rdi,%r9), %rsi
leaq 0x30(%rdi,%r9), %r9
cmoveq %rsi, %r9
leaq 0xc0(%rdi), %rsi
leaq (%rcx,%rcx,8), %r11
shlq $0x4, %r11
testb $0x1, %cl
leaq 0x30(%rdi,%r11), %r15
leaq 0x60(%rdi,%r11), %r11
cmoveq %r15, %r11
leaq 0x90(%rdi), %r12
xorl %r15d, %r15d
cmpl $0x1, %edx
sete %r15b
leal (%rax,%r15,2), %edx
decl %edx
movslq %edx, %rdx
leaq (%rdx,%rdx,8), %rdx
shlq $0x4, %rdx
leaq 0x180(%rdi), %r15
testb $0x1, %al
leaq 0x60(%rdi,%r10), %rbp
leaq 0x30(%rdi,%r10), %r10
cmoveq %rbp, %r10
movw $0x1, 0x2(%r10)
movq %r12, 0x28(%r10)
movw %ax, 0x92(%rdi)
movq %r10, 0xb8(%rdi)
movw %r8w, 0x2(%r11)
movq %r9, 0x28(%r11)
movw %cx, 0x2(%r9)
movq %r11, 0x28(%r9)
movw %cx, 0x2(%rdi)
leaq 0x60(%rdi,%rdx), %rax
leaq 0x30(%rdi,%rdx), %r12
movq %rsi, %rdi
cmoveq %r15, %rdi
cmovneq %rax, %r12
cmoveq %rsi, %r15
callq 0xcf56
movq %rax, (%r14)
movq %r12, %rdi
callq 0xcf56
movq %rax, (%rbx)
movq %r15, %rdi
callq 0xcf56
movq %rax, (%r13)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq