// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0xa0, %rsp
leaq 0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movsbl 0x2116f(%rip), %eax     # 0x27410
cmpl $0x0, %eax
jne 0x62b7
movsbl 0x21164(%rip), %eax     # 0x27411
cmpl $0x0, %eax
jne 0x62b7
jmp 0x64b9
movsbl 0x15ec3(%rip), %eax     # 0x1c181
cmpl $0x0, %eax
je 0x62d1
cmpb $0x0, 0x15e6a(%rip)     # 0x1c134
jne 0x62d1
jmp 0x64b9
movq -0x38(%rbp), %rcx
movl $0x6, %eax
subl (%rcx), %eax
movl %eax, -0x10(%rbp)
cmpl $0x2, -0x10(%rbp)
jge 0x62ea
jmp 0x64b9
movl $0x0, -0x24(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl (%rcx), %eax
jge 0x6328
movq -0x38(%rbp), %rax
movslq -0x18(%rbp), %rcx
cmpl $0x0, 0x4(%rax,%rcx,4)
je 0x631b
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x631d
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x62f8
cmpl $0x2, -0x24(%rbp)
jle 0x6333
jmp 0x64b9
movq -0x38(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x20(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl (%rcx), %eax
jge 0x636d
movq -0x38(%rbp), %rax
movslq -0x18(%rbp), %rcx
movl 0x4(%rax,%rcx,4), %eax
shll %eax
addl -0x20(%rbp), %eax
movl %eax, -0x20(%rbp)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x6343
movl -0x10(%rbp), %eax
movl %eax, -0x3c(%rbp)
subl $0x4, %eax
je 0x6395
jmp 0x637a
movl -0x3c(%rbp), %eax
subl $0x5, %eax
jne 0x63bf
jmp 0x6384
movslq -0x20(%rbp), %rcx
leaq 0x21091(%rip), %rax     # 0x27420
movb $0x1, (%rax,%rcx)
jmp 0x63ce
movq -0x38(%rbp), %rax
movslq -0x20(%rbp), %rdx
leaq 0x212cc(%rip), %rcx     # 0x27670
movb $0x1, (%rcx,%rdx)
cmpl $0x0, 0x8(%rax)
jne 0x63bd
movslq -0x20(%rbp), %rcx
leaq 0x21067(%rip), %rax     # 0x27420
movb $0x1, (%rax,%rcx)
jmp 0x63ce
movslq -0x20(%rbp), %rcx
leaq 0x212a6(%rip), %rax     # 0x27670
movb $0x1, (%rax,%rcx)
movq -0x38(%rbp), %rcx
movq -0x8(%rbp), %rax
movzwl 0x2(%rax), %eax
subl $0xa, %eax
addl (%rcx), %eax
subl 0x4(%rcx), %eax
movl %eax, -0x14(%rbp)
movl $0x1, -0x18(%rbp)
movq -0x38(%rbp), %rcx
movl -0x18(%rbp), %eax
cmpl (%rcx), %eax
jge 0x6416
movq -0x38(%rbp), %rax
movslq -0x18(%rbp), %rcx
movl 0x4(%rax,%rcx,4), %ecx
movl -0x14(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x14(%rbp)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x63ec
movl -0x14(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
addl -0xc(%rbp), %eax
cmpl 0x21488(%rip), %eax     # 0x278b8
je 0x6454
movq 0x15bbf(%rip), %rax     # 0x1bff8
movq (%rax), %rdi
leaq 0x122c0(%rip), %rsi     # 0x18703
movb $0x0, %al
callq 0x1080
movl $0x11, %edi
callq 0x1120
movq -0x38(%rbp), %rax
movl -0x10(%rbp), %ecx
movl %ecx, -0x1c(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x2d(%rbp), %rsi
movq 0x20(%rax), %rdx
movl -0x10(%rbp), %ecx
xorl %r8d, %r8d
callq 0x5690
movq -0x38(%rbp), %rcx
movl -0x14(%rbp), %edi
leaq -0x2d(%rbp), %rsi
movl -0x1c(%rbp), %edx
movups 0x50(%rcx), %xmm0
movq %rsp, %rax
movups %xmm0, 0x50(%rax)
movups 0x40(%rcx), %xmm0
movups %xmm0, 0x40(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups 0x30(%rcx), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x5df0
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)