// File: /workspace/github_c_makefile_star2_O3/mishun[P]plantri/fullgen.c
// Function: schreibe_auf
void schreibe_auf(PLANMAP map, SEQUENZ sq, int rest_sechsecke)
/* codiert und schreibt eine markierte Pflasterung -- wird nur fuer
   bis zu 5 Fuenfecken aufgerufen */
{
int fuenfecke, sechsecke, i, codesize, pfadlaenge, non_nuller;
FLAECHENTYP code[9];


if ( !(do_sandwich || do_brille) ) return;
if (IPR && (!is_ipr)) return;

fuenfecke=6-sq.laenge;

if (fuenfecke < 2) return; /* die werden bei der konstruktion nie gebraucht */
for (i=non_nuller=0; i< sq.laenge; i++) if (sq.sequenz[i] != 0) non_nuller++;
if (non_nuller >2) return; /* Bei jedem Patch der GEBRAUCHT wird, koennen nur
			      an 2 Stellen Probleme auftreten */


pfadlaenge=sq.laenge;
for (i=0; i< sq.laenge; i++) pfadlaenge += (2*sq.sequenz[i]);

switch (fuenfecke)
  {
  case 5: { brillenglasmark[pfadlaenge]=1;
	    break; }

  case 4: { zwei_3_4_mark[pfadlaenge]=1;
            if (sq.sequenz[1]==0) /* dann kann es auch ein brillenglas sein */
	        brillenglasmark[pfadlaenge]=1;
	    break; }
  default: { zwei_3_4_mark[pfadlaenge]=1; }
  }

sechsecke=(map[0][0].name)-10+sq.laenge-sq.sequenz[0];
for (i=1; i<sq.laenge; i++) sechsecke -= sq.sequenz[i];
sechsecke=sechsecke/2;        /* alles leicht aus Euler Formel */


if (sechsecke+rest_sechsecke != max_sechsecke) { fprintf(stderr,"Error in 6-gon calculation (schreibe_auf) !\n");
						 exit(17); }

codesize=fuenfecke; 
codiere(map, code, sq.kanten[0], fuenfecke,0);

put_in_liste(sechsecke, sq, code, codesize );

return;
	   }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x78, %rsp
movb 0x1ac6b(%rip), %al      # 0x20431
orb 0x1ac64(%rip), %al      # 0x20430
je 0x590b
cmpb $0x0, 0xf9b8(%rip)      # 0x15191
je 0x57e8
cmpb $0x0, 0xf982(%rip)      # 0x15164
je 0x590b
leaq 0xa0(%rsp), %rbx
movslq (%rbx), %rax
cmpq $0x4, %rax
jg 0x590b
movl %eax, %ecx
testl %eax, %eax
jle 0x583b
xorl %ecx, %ecx
xorl %edx, %edx
cmpl $0x1, 0x4(%rbx,%rcx,4)
sbbl $-0x1, %edx
incq %rcx
cmpq %rcx, %rax
jne 0x5807
cmpl $0x2, %edx
ja 0x590b
movl %eax, %ecx
testl %eax, %eax
jle 0x583b
xorl %edx, %edx
movl %eax, %ecx
movl 0x4(%rbx,%rdx,4), %r8d
leal (%rcx,%r8,2), %ecx
incq %rdx
cmpq %rdx, %rax
jne 0x582a
movslq %ecx, %rcx
cmpl $0x2, %eax
je 0x5861
cmpl $0x1, %eax
jne 0x588b
leaq 0x1abf1(%rip), %rdx     # 0x20440
movb $0x1, (%rcx,%rdx)
movzwl 0x2(%rdi), %ecx
addl %eax, %ecx
subl 0x4(%rbx), %ecx
addl $-0xa, %ecx
jmp 0x58bd
leaq 0x1ae28(%rip), %rdx     # 0x20690
movb $0x1, (%rcx,%rdx)
cmpl $0x0, 0x8(%rbx)
jne 0x587d
leaq 0x1abc7(%rip), %rdx     # 0x20440
movb $0x1, (%rcx,%rdx)
movzwl 0x2(%rdi), %ecx
addl %eax, %ecx
subl 0x4(%rbx), %ecx
addl $-0xa, %ecx
jmp 0x58a7
leaq 0x1adfe(%rip), %rdx     # 0x20690
movb $0x1, (%rcx,%rdx)
movzwl 0x2(%rdi), %ecx
addl %eax, %ecx
subl 0x4(%rbx), %ecx
addl $-0xa, %ecx
cmpl $0x2, %eax
jl 0x58bd
movq %rax, %rdx
decq %rdx
xorl %r8d, %r8d
subl 0x8(%rbx,%r8,4), %ecx
incq %r8
cmpq %r8, %rdx
jne 0x58b0
movl %ecx, %ebp
shrl $0x1f, %ebp
addl %ecx, %ebp
sarl %ebp
addl %ebp, %esi
cmpl 0x1b00a(%rip), %esi     # 0x208d8
jne 0x5916
movl $0x6, %r14d
subl %eax, %r14d
movq 0x20(%rbx), %rdx
leaq 0x6f(%rsp), %r15
movq %r15, %rsi
movl %r14d, %ecx
xorl %r8d, %r8d
callq 0x5177
movl $0xc, %ecx
movq %rsp, %rdi
movq %rbx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movl %ebp, %edi
movq %r15, %rsi
movl %r14d, %edx
callq 0x5553
addq $0x78, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
callq 0x1674