// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x70, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movq %r8, -0x20(%rbp)
movq %r9, -0x28(%rbp)
movl -0xc(%rbp), %eax
addl -0x10(%rbp), %eax
addl -0x14(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movw $0x2, 0xc2(%rax)
movq -0x8(%rbp), %rcx
addq $0x120, %rcx            # imm = 0x120
movq -0x8(%rbp), %rax
movq %rcx, 0xe8(%rax)
movl $0x1, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x30(%rbp), %eax
jg 0x1511f
movl -0x34(%rbp), %eax
subl $0x1, %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movw %cx, 0x2(%rax)
movq -0x8(%rbp), %rcx
movl -0x34(%rbp), %eax
subl $0x1, %eax
cltq
imulq $0x90, %rax, %rax
addq %rax, %rcx
addq $0x30, %rcx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
movw $0x246, 0x32(%rax)      # imm = 0x246
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
movq $0x0, 0x58(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movw %cx, 0x62(%rax)
movq -0x8(%rbp), %rcx
movl -0x34(%rbp), %eax
addl $0x1, %eax
cltq
imulq $0x90, %rax, %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x88(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x30(%rbp), %eax
jg 0x1510f
movl -0x34(%rbp), %eax
subl $0x1, %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movw %cx, 0x2(%rax)
movq -0x8(%rbp), %rcx
movl -0x34(%rbp), %eax
subl $0x1, %eax
cltq
imulq $0x90, %rax, %rax
addq %rax, %rcx
addq $0x60, %rcx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x28(%rax)
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
movw $0x246, 0x62(%rax)      # imm = 0x246
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
movq $0x0, 0x88(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movw %cx, 0x32(%rax)
movq -0x8(%rbp), %rcx
movl -0x34(%rbp), %eax
addl $0x1, %eax
cltq
imulq $0x90, %rax, %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rdx
imulq $0x90, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x58(%rax)
jmp 0x15111
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x14f50
movl -0xc(%rbp), %eax
addl -0x10(%rbp), %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x15154
movq -0x8(%rbp), %rax
movslq -0x38(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x60, %rax
movq %rax, -0x48(%rbp)
jmp 0x1516e
movq -0x8(%rbp), %rax
movslq -0x38(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x30, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movw $0x1, 0x2(%rax)
movq -0x8(%rbp), %rcx
addq $0x90, %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x28(%rax)
movl -0x38(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movw %cx, 0x92(%rax)
movq -0x48(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0xb8(%rax)
movl -0xc(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x151d7
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x60, %rax
movq %rax, -0x48(%rbp)
jmp 0x151f1
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x30, %rax
movq %rax, -0x48(%rbp)
movl -0x30(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x1521d
movq -0x8(%rbp), %rax
movslq -0x30(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x30, %rax
movq %rax, -0x50(%rbp)
jmp 0x15237
movq -0x8(%rbp), %rax
movslq -0x30(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x60, %rax
movq %rax, -0x50(%rbp)
movl -0xc(%rbp), %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x48(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x28(%rax)
movl -0x30(%rbp), %eax
movw %ax, %cx
movq -0x48(%rbp), %rax
movw %cx, 0x2(%rax)
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x28(%rax)
movl -0x30(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movw %cx, 0x2(%rax)
cmpl $0x1, -0x10(%rbp)
jne 0x1528a
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x15293
movl -0x38(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x2c(%rbp)
movl -0x38(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
je 0x152e3
movq -0x8(%rbp), %rax
addq $0x90, %rax
addq $0x30, %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x60, %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rax
addq $0x120, %rax            # imm = 0x120
addq $0x60, %rax
movq %rax, -0x68(%rbp)
jmp 0x15321
movq -0x8(%rbp), %rax
addq $0x120, %rax            # imm = 0x120
addq $0x60, %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
addq $0x30, %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rax
addq $0x90, %rax
addq $0x30, %rax
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rdi
callq 0x136b0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x60(%rbp), %rdi
callq 0x136b0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x68(%rbp), %rdi
callq 0x136b0
movq %rax, %rcx
movq 0x10(%rbp), %rax
movq %rcx, (%rax)
addq $0x70, %rsp
popq %rbp
retq