// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/fullgen.c
// Function: reko_bb_code
void reko_bb_code(PLANMAP map, KNOTENTYP *code, KNOTENTYP *spiegelcode, int laenge, 
		  KANTE *start, KANTE *ministart[], KANTE *spiegelministart[], int *patchknz)
{
int i, j, stelle, zaehler, knotenzahl, flaechennumber, schichtenzaehler, verschiebung, merkeknoten;
/* zaehler zaehlt die Flaechengroesse, knotenzahl die zahl der restlichen knoten */
int laufzaehler;
KANTE *run, *merke, *run2, *merke_run, *mstart;
KNOTENTYP testcode[9];
int mstartzaehler, test, k, laenge_2;
BOOL mark[N+1];


if (start->mininame != aussen) { fprintf(stderr,"Reko_BB_code must start at external edge !\n"); 
			     exit(29); }
for (i=0; i<8; i++) { code[i]=spiegelcode[i]=unbelegt; testcode[i]=0; }

mstartzaehler=0;
for (i=0; i<7; i++) ministart[i]=spiegelministart[i]=nil;

for (i=1; i<=map[0][0].name; i++) mark[i]=0;
mark[start->ursprung]=1; *patchknz=1;

zaehle_knoten(map,start->ursprung,mark,patchknz);

laenge_2 = laenge/2;
run=start; knotenzahl=*patchknz;

verschiebung=schichtenzaehler=0;

while (!verschiebung)
  {for (i=1, run2=run->prev; (i<=laenge_2) && !verschiebung; i++, run2=run2->prev->invers->next->invers)
     /* muss bei 1 starten und nachher korrigiert werden, um den Abbruch bei 0 zu gewaehrleisten */
     { if (checksize(run2) == 5) { run=run2->next; verschiebung=i; } }
   if (!verschiebung) { schichtenzaehler++;
			knotenzahl -= laenge;
			run=run->prev->invers->next->invers;
			for (run2=run, i=0; i<laenge_2; i++, 
			     run2=run2->next->invers->next->invers->next)
			  { run2->dummy=infty; }
		      }
 } /* ende while */
code[0]=schichtenzaehler; code[1]=0; /* verschiebung wird nicht betrachtet */ stelle=2; 
merkeknoten=knotenzahl;
laufzaehler=1;
/* Jetzt den minimalen Code ausrechnen: */
for ( run2=run->prev; verschiebung<=laenge_2; verschiebung++, run2=run2->prev->invers->next->invers)
  if (checksize(run2)==5)
    { merke_run=run2->next; 
      laufzaehler++;
      run=run2->next;
      stelle=2; knotenzahl=merkeknoten;
      flaechennumber=0;
      while (stelle<8)
	{ 
	  flaechennumber++;
	  zaehler=2;
	  while (run->prev->invers->prev->dummy>=laufzaehler) 
	    run=run->prev->invers->prev; /* sicherstellen, dass davor
					    keine aussenkanten sind */
	  run->prev->invers->dummy=laufzaehler; run->next->invers->dummy=laufzaehler;
	  run=run->next->invers->next; knotenzahl--;
	  while (run->dummy>=laufzaehler)
	    { zaehler++; knotenzahl--; run->prev->invers->dummy=laufzaehler; 
	      run->next->invers->dummy=laufzaehler;
	      run=run->next->invers->next; }
	  merke=run->next;
	  run=run->prev;
	  while (merke->dummy<laufzaehler)
	    { zaehler++; merke=merke->invers->prev; }
	  if (zaehler==5) { testcode[stelle]=flaechennumber; stelle++; }
	  else if (zaehler!=6) { fprintf(stderr,"ERROR in REKO_BB_CODE: No 5- or 6-Gon !\n"); exit(30); }
	  if (knotenzahl==5) { testcode[stelle]=flaechennumber+1; stelle++; }
	} /* ende while */
      if ((test=codecmp_kn(code+2,testcode+2,6))>=0) 
	{ if (test>0) { for (stelle=2; stelle<8; stelle++) code[stelle]=testcode[stelle];
			for (k=0; k<mstartzaehler; k++) ministart[k]=nil;
		        mstartzaehler=0;}
	  mstart=merke_run;
	  for (k=0; k<schichtenzaehler; k++) mstart = mstart->invers->prev->invers->next;
	  ministart[mstartzaehler]=mstart->prev->invers->next;
	  mstartzaehler++;
	}
    } /* ende checksize==5 */



/* Jetzt den Spiegelcode */

for (i=1; i<=map[0][0].name; i++) 
  if (mark[i]) 
    for (j=0; j<3; j++) 
      { if (map[i][j].mininame==aussen) map[i][j].dummy=infty;
        else map[i][j].dummy=0; }

run=start; knotenzahl=*patchknz;

verschiebung=schichtenzaehler=mstartzaehler=0;

while (!verschiebung)
  {for (i=1, run2=run->prev; (i<=laenge_2) && !verschiebung; i++, run2=run2->invers->prev->invers->next)
     /* muss bei 1 starten und nachher korrigiert werden, um den Abbruch bei 0 zu gewaehrleisten */
     { if (checksize(run2) == 5) { run=run2->next; verschiebung=i; } }
   if (!verschiebung) { schichtenzaehler++;
			knotenzahl -= laenge;
			run=run->next->invers->prev->invers;
			for (run2=run, i=0; i<laenge_2; i++, 
			     run2=run2->prev->invers->prev->invers->prev)
			  { run2->dummy=infty; }
		      }
 } /* ende while */
spiegelcode[0]=schichtenzaehler; spiegelcode[1]=0; /* verschiebung wird nicht betrachtet */ stelle=2; 
merkeknoten=knotenzahl;
laufzaehler=1;
/* Jetzt den minimalen Code ausrechnen: */
for ( run2=run->prev; verschiebung<=laenge_2; verschiebung++, run2=run2->invers->prev->invers->next)
  if (checksize(run2)==5)
    { merke_run=run2->next; 
      laufzaehler++;
      run=run2->next;
      stelle=2; knotenzahl=merkeknoten;
      flaechennumber=0;
      while (stelle<8)
	{ flaechennumber++;
	  zaehler=2;
	  while (run->next->invers->next->dummy>=laufzaehler) 
	    run=run->next->invers->next; /* sicherstellen, dass davor
					    keine aussenkanten sind */
	  run->next->invers->dummy=laufzaehler; run->prev->invers->dummy=laufzaehler;
	  run=run->prev->invers->prev; knotenzahl--;
	  while (run->dummy>=laufzaehler)
	    { zaehler++; knotenzahl--; run->next->invers->dummy=laufzaehler; 
	      run->prev->invers->dummy=laufzaehler;
	      run=run->prev->invers->prev; }
	  merke=run->prev;
	  run=run->next;
	  while (merke->dummy<laufzaehler)
	    { zaehler++; merke=merke->invers->next; }
	  if (zaehler==5) { testcode[stelle]=flaechennumber; stelle++; }
	  else if (zaehler!=6) { fprintf(stderr,"ERROR in REKO_BB_CODE(2):  No 5- or 6-Gon !\n"); exit(31); }
	  if (knotenzahl==5) { testcode[stelle]=flaechennumber+1; stelle++; }
	} /* ende while */
      if ((test=codecmp_kn(spiegelcode+2,testcode+2,6))>=0) 
	{ if (test>0) { for (stelle=2; stelle<8; stelle++) spiegelcode[stelle]=testcode[stelle];
			for (k=0; k<mstartzaehler; k++) spiegelministart[k]=nil;
		        mstartzaehler=0;}
	  mstart=merke_run;
	  for (k=0; k<schichtenzaehler; k++) mstart = mstart->invers->next->invers->prev;
	  spiegelministart[mstartzaehler]=mstart->next->invers->prev;
	  mstartzaehler++;
	}
    } /* ende checksize==5 */

return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x28(%rbp), %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
je 0x880b
movq 0x13808(%rip), %rax     # 0x1bff8
movq (%rax), %rdi
leaq 0xffa8(%rip), %rsi      # 0x187a2
movb $0x0, %al
callq 0x1080
movl $0x1d, %edi
callq 0x1120
movl $0x0, -0x34(%rbp)
cmpl $0x8, -0x34(%rbp)
jge 0x884d
movq -0x18(%rbp), %rax
movslq -0x34(%rbp), %rcx
movw $0xff, (%rax,%rcx,2)
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movw $0xff, (%rax,%rcx,2)
movslq -0x34(%rbp), %rax
movw $0x0, -0xa0(%rbp,%rax,2)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x8812
movl $0x0, -0xa4(%rbp)
movl $0x0, -0x34(%rbp)
cmpl $0x7, -0x34(%rbp)
jge 0x888f
movq 0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movslq -0x34(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x885e
movl $0x1, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x8(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jg 0x88bc
movslq -0x34(%rbp), %rax
movb $0x0, -0x300(%rbp,%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x8896
movq -0x28(%rbp), %rax
movzwl (%rax), %eax
movb $0x1, -0x300(%rbp,%rax)
movq 0x18(%rbp), %rax
movl $0x1, (%rax)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movw (%rax), %ax
leaq -0x300(%rbp), %rdx
movq 0x18(%rbp), %rcx
movzwl %ax, %esi
callq 0x8650
movl -0x1c(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0xb0(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x60(%rbp)
movq 0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x0, -0x50(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x8935
jmp 0x8a4b
movl $0x1, -0x34(%rbp)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
movl -0x34(%rbp), %ecx
xorl %eax, %eax
cmpl -0xb0(%rbp), %ecx
movb %al, -0x301(%rbp)
jg 0x896a
cmpl $0x0, -0x50(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x301(%rbp)
movb -0x301(%rbp), %al
testb $0x1, %al
jne 0x8976
jmp 0x89bb
movq -0x70(%rbp), %rdi
callq 0x5640
cmpl $0x5, %eax
jne 0x8996
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
movl -0x34(%rbp), %eax
movl %eax, -0x50(%rbp)
jmp 0x8998
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq -0x70(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x8948
cmpl $0x0, -0x50(%rbp)
jne 0x8a46
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x1c(%rbp), %ecx
movl -0x44(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x44(%rbp)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x70(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0xb0(%rbp), %eax
jge 0x8a44
movq -0x70(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x8(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x8a00
jmp 0x8a46
jmp 0x8923
movl -0x4c(%rbp), %eax
movw %ax, %cx
movq -0x10(%rbp), %rax
movw %cx, (%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x2(%rax)
movl $0x2, -0x3c(%rbp)
movl -0x44(%rbp), %eax
movl %eax, -0x54(%rbp)
movl $0x1, -0x58(%rbp)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
movl -0x50(%rbp), %eax
cmpl -0xb0(%rbp), %eax
jg 0x8dce
movq -0x70(%rbp), %rdi
callq 0x5640
cmpl $0x5, %eax
jne 0x8da6
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x78(%rbp)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
movl $0x2, -0x3c(%rbp)
movl -0x54(%rbp), %eax
movl %eax, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
cmpl $0x8, -0x3c(%rbp)
jge 0x8c85
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
movl $0x2, -0x40(%rbp)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movslq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jl 0x8b25
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x8af2
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
movl -0x44(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x44(%rbp)
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jl 0x8bcb
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x44(%rbp)
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x8b6a
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jge 0x8c0f
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movq -0x68(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0x8be3
cmpl $0x5, -0x40(%rbp)
jne 0x8c32
movl -0x48(%rbp), %eax
movw %ax, %cx
movslq -0x3c(%rbp), %rax
movw %cx, -0xa0(%rbp,%rax,2)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x8c5c
cmpl $0x6, -0x40(%rbp)
je 0x8c5a
movq 0x133b9(%rip), %rax     # 0x1bff8
movq (%rax), %rdi
leaq 0xfb85(%rip), %rsi      # 0x187ce
movb $0x0, %al
callq 0x1080
movl $0x1e, %edi
callq 0x1120
jmp 0x8c5c
cmpl $0x5, -0x44(%rbp)
jne 0x8c80
movl -0x48(%rbp), %eax
addl $0x1, %eax
movw %ax, %cx
movslq -0x3c(%rbp), %rax
movw %cx, -0xa0(%rbp,%rax,2)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x8ad8
movq -0x10(%rbp), %rdi
addq $0x4, %rdi
leaq -0xa0(%rbp), %rsi
addq $0x4, %rsi
movl $0x6, %edx
callq 0x2f30
movl %eax, -0xa8(%rbp)
cmpl $0x0, %eax
jl 0x8da4
cmpl $0x0, -0xa8(%rbp)
jle 0x8d30
movl $0x2, -0x3c(%rbp)
cmpl $0x8, -0x3c(%rbp)
jge 0x8cea
movslq -0x3c(%rbp), %rax
movw -0xa0(%rbp,%rax,2), %dx
movq -0x10(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movw %dx, (%rax,%rcx,2)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x8cc1
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
cmpl -0xa4(%rbp), %eax
jge 0x8d26
movq -0x30(%rbp), %rax
movslq -0xac(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x8cf4
movl $0x0, -0xa4(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x8d76
movq -0x80(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x80(%rbp)
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x8d42
movq -0x80(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rdx
movq -0x30(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x8da6
jmp 0x8da8
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
movq -0x70(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x8a82
movl $0x1, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x8(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
cmpl %ecx, %eax
jg 0x8ea7
movslq -0x34(%rbp), %rax
cmpb $0x0, -0x300(%rbp,%rax)
je 0x8e97
movl $0x0, -0x38(%rbp)
cmpl $0x3, -0x38(%rbp)
jge 0x8e95
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
movslq -0x38(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movzwl 0x14(%rax), %eax
cmpl $0x246, %eax            # imm = 0x246
jne 0x8e60
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
movslq -0x38(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x8(%rax)
jmp 0x8e85
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq $0x90, %rcx, %rcx
addq %rcx, %rax
movslq -0x38(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq $0x0, 0x8(%rax)
jmp 0x8e87
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x8e01
jmp 0x8e97
jmp 0x8e99
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x8dd5
movq -0x28(%rbp), %rax
movq %rax, -0x60(%rbp)
movq 0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movl $0x0, -0xa4(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x0, -0x50(%rbp)
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x8ee2
jmp 0x8ff8
movl $0x1, -0x34(%rbp)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
movl -0x34(%rbp), %ecx
xorl %eax, %eax
cmpl -0xb0(%rbp), %ecx
movb %al, -0x302(%rbp)
jg 0x8f17
cmpl $0x0, -0x50(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x302(%rbp)
movb -0x302(%rbp), %al
testb $0x1, %al
jne 0x8f23
jmp 0x8f68
movq -0x70(%rbp), %rdi
callq 0x5640
cmpl $0x5, %eax
jne 0x8f43
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
movl -0x34(%rbp), %eax
movl %eax, -0x50(%rbp)
jmp 0x8f45
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq -0x70(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x8ef5
cmpl $0x0, -0x50(%rbp)
jne 0x8ff3
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x1c(%rbp), %ecx
movl -0x44(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x44(%rbp)
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x70(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0xb0(%rbp), %eax
jge 0x8ff1
movq -0x70(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x8(%rax)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq -0x70(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x8fad
jmp 0x8ff3
jmp 0x8ed0
movl -0x4c(%rbp), %eax
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, (%rax)
movq -0x18(%rbp), %rax
movw $0x0, 0x2(%rax)
movl $0x2, -0x3c(%rbp)
movl -0x44(%rbp), %eax
movl %eax, -0x54(%rbp)
movl $0x1, -0x58(%rbp)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
movl -0x50(%rbp), %eax
cmpl -0xb0(%rbp), %eax
jg 0x937b
movq -0x70(%rbp), %rdi
callq 0x5640
cmpl $0x5, %eax
jne 0x9353
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x78(%rbp)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
movl $0x2, -0x3c(%rbp)
movl -0x54(%rbp), %eax
movl %eax, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
cmpl $0x8, -0x3c(%rbp)
jge 0x9232
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
movl $0x2, -0x40(%rbp)
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rax
movslq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jl 0x90d2
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x909f
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
movl -0x44(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x44(%rbp)
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jl 0x9178
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x44(%rbp)
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movslq -0x58(%rbp), %rcx
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x9117
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jge 0x91bc
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
movq -0x68(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0x9190
cmpl $0x5, -0x40(%rbp)
jne 0x91df
movl -0x48(%rbp), %eax
movw %ax, %cx
movslq -0x3c(%rbp), %rax
movw %cx, -0xa0(%rbp,%rax,2)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x9209
cmpl $0x6, -0x40(%rbp)
je 0x9207
movq 0x12e0c(%rip), %rax     # 0x1bff8
movq (%rax), %rdi
leaq 0xf601(%rip), %rsi      # 0x187f7
movb $0x0, %al
callq 0x1080
movl $0x1f, %edi
callq 0x1120
jmp 0x9209
cmpl $0x5, -0x44(%rbp)
jne 0x922d
movl -0x48(%rbp), %eax
addl $0x1, %eax
movw %ax, %cx
movslq -0x3c(%rbp), %rax
movw %cx, -0xa0(%rbp,%rax,2)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x9085
movq -0x18(%rbp), %rdi
addq $0x4, %rdi
leaq -0xa0(%rbp), %rsi
addq $0x4, %rsi
movl $0x6, %edx
callq 0x2f30
movl %eax, -0xa8(%rbp)
cmpl $0x0, %eax
jl 0x9351
cmpl $0x0, -0xa8(%rbp)
jle 0x92dd
movl $0x2, -0x3c(%rbp)
cmpl $0x8, -0x3c(%rbp)
jge 0x9297
movslq -0x3c(%rbp), %rax
movw -0xa0(%rbp,%rax,2), %dx
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movw %dx, (%rax,%rcx,2)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x926e
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
cmpl -0xa4(%rbp), %eax
jge 0x92d3
movq 0x10(%rbp), %rax
movslq -0xac(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x92a1
movl $0x0, -0xa4(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x9323
movq -0x80(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x80(%rbp)
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x92ef
movq -0x80(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rdx
movq 0x10(%rbp), %rax
movslq -0xa4(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x9353
jmp 0x9355
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
movq -0x70(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x902f
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
nopw %cs:(%rax,%rax)