// File: /workspace/github_c_makefile_star2_O2/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 0x1a92a(%rip), %al      # 0x1e411
orb 0x1a923(%rip), %al      # 0x1e410
je 0x3bf9
cmpb $0x0, 0xf677(%rip)      # 0x13171
je 0x3b09
cmpb $0x0, 0xf641(%rip)      # 0x13144
je 0x3bf9
leaq 0xa0(%rsp), %rbx
movslq (%rbx), %rcx
cmpq $0x4, %rcx
jg 0x3bf9
pushq $0x6
popq %rbp
subl %ecx, %ebp
xorl %edx, %edx
testl %ecx, %ecx
movl $0x0, %eax
cmovgl %ecx, %eax
xorl %r8d, %r8d
cmpq %rdx, %rax
je 0x3b45
cmpl $0x1, 0x4(%rbx,%rdx,4)
sbbl $-0x1, %r8d
incq %rdx
jmp 0x3b32
cmpl $0x2, %r8d
ja 0x3bf9
xorl %edx, %edx
movl %ecx, %r8d
cmpq %rdx, %rax
je 0x3b67
movl 0x4(%rbx,%rdx,4), %r9d
leal (%r8,%r9,2), %r8d
incq %rdx
jmp 0x3b54
movslq %r8d, %rax
leaq 0x1a8af(%rip), %rdx     # 0x1e420
cmpl $0x1, %ecx
je 0x3b96
cmpl $0x2, %ecx
jne 0x3b8f
leaq 0x1aaee(%rip), %r8      # 0x1e670
movb $0x1, (%rax,%r8)
cmpl $0x0, 0x8(%rbx)
jne 0x3b9a
jmp 0x3b96
leaq 0x1aada(%rip), %rdx     # 0x1e670
movb $0x1, (%rdx,%rax)
movzwl 0x2(%rdi), %eax
addl %ecx, %eax
subl 0x4(%rbx), %eax
addl $-0xa, %eax
pushq $0x1
popq %rdx
cmpq %rcx, %rdx
jge 0x3bb7
subl 0x4(%rbx,%rdx,4), %eax
incq %rdx
jmp 0x3ba9
pushq $0x2
popq %rcx
cltd
idivl %ecx
addl %eax, %esi
cmpl 0x1acf3(%rip), %esi     # 0x1e8b8
jne 0x3c04
movl %eax, %r14d
movq 0x20(%rbx), %rdx
leaq 0x6f(%rsp), %r15
movq %r15, %rsi
movl %ebp, %ecx
xorl %r8d, %r8d
callq 0x3439
pushq $0xc
popq %rcx
movq %rsp, %rdi
movq %rbx, %rsi
rep  movsq (%rsi), %es:(%rdi)
movl %r14d, %edi
movq %r15, %rsi
movl %ebp, %edx
callq 0x3844
addq $0x78, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0xf3ed(%rip), %rax      # 0x12ff8
movq (%rax), %rcx
leaq 0xa897(%rip), %rdi      # 0xe4ac
pushq $0x2c
popq %rsi
pushq $0x1
popq %rdx
callq 0x1150
pushq $0x11
popq %rdi
callq 0x1140