// File: /workspace/github_c_makefile_star2_O3/josch[P]stride/sheet.c
// Function: Sheet
void Sheet(CHAIN **Chain, int Cn1, int Cn2, HBOND **HBond, COMMAND *Cmd, float **PhiPsiMap)
{
  PATTERN **PatN, **PatP;
  RESIDUE *Res1, *Res3, *Res2, *Res4, *ResA, *ResB, *Res1m1, *Res3p1;
  int R1, R3, R2, R4, RA, RB, PatCntN = 0, PatCntP = 0, Beg;
  char *AntiPar1, *Par1, *AntiPar2, *Par2;
  register int i;

  PatN = (PATTERN **)ckalloc(MAXHYDRBOND*sizeof(PATTERN *));
  PatP = (PATTERN **)ckalloc(MAXHYDRBOND*sizeof(PATTERN *));

  AntiPar1  = (char *)ckalloc(Chain[Cn1]->NRes*sizeof(char)); /* Antiparallel strands */
  Par1      = (char *)ckalloc(Chain[Cn1]->NRes*sizeof(char)); /* Parallel strands */
  AntiPar2  = (char *)ckalloc(Chain[Cn2]->NRes*sizeof(char)); /* Antiparallel strands */
  Par2      = (char *)ckalloc(Chain[Cn2]->NRes*sizeof(char)); /* Parallel strands */

  for( i=0; i<Chain[Cn1]->NRes; i++ ) { 
    AntiPar1[i] = 'C'; 
    Par1[i] = 'C'; 
  }

  for( i=0; i<Chain[Cn2]->NRes; i++ ) { 
    AntiPar2[i] = 'C'; 
    Par2[i] = 'C'; 
  }

  for( R1=0; R1<Chain[Cn1]->NRes; R1++ ) {

    Res1   = Chain[Cn1]->Rsd[R1];

    if( (!Res1->Inv->NBondDnr && !Res1->Inv->NBondAcc) ||
        ((Cn1 != Cn2) && !Res1->Inv->InterchainHBonds) )
      continue;

    RA     = R1+1;
    R2     = R1+2;
    Res1m1 = Chain[Cn1]->Rsd[R1-1];
    ResA   = Chain[Cn1]->Rsd[RA];
    Res2   = Chain[Cn1]->Rsd[R2]; 

    if( R2 >= Chain[Cn1]->NRes || 
        Res1->Prop->PhiZn == ERR || Res1->Prop->PsiZn == ERR ||
        Res2->Prop->PhiZn == ERR || Res2->Prop->PsiZn == ERR ||
        ResA->Prop->PhiZn == ERR || ResA->Prop->PsiZn == ERR ) 
      continue;

    if( Cn1 != Cn2 ) 
      Beg = 0;
    else
      Beg = R1+1;

    for( R3=Beg; R3<Chain[Cn2]->NRes; R3++ ) {

      /* Process anti-parallel strands */

      Res3   = Chain[Cn2]->Rsd[R3];

      if( (!Res3->Inv->NBondAcc && !Res3->Inv->NBondDnr ) || 
	  ((Cn1 != Cn2) && !Res3->Inv->InterchainHBonds) ) 
	continue;

      RB     = R3-1;
      R4     = R3-2;
      Res3p1 = Chain[Cn2]->Rsd[R3+1];
      ResB   = Chain[Cn2]->Rsd[RB];
      Res4   = Chain[Cn2]->Rsd[R4];
      
      if( Cn1 != Cn2 || R3 - R1 >= 3  )
	Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res3,Res1,Res1,Res3,
	     PhiPsiMap,PatN,&PatCntN,"1331",Cmd->Treshold_E1,Cmd,0);
      
      if( R2 < Chain[Cn1]->NRes && ((Cn1 != Cn2 && R4 >= 0) || R4-R2 >=2 ) )
	Link(HBond,Chain,Cn2,Cn1,Res3,Res1,Res2,Res4,ResB,ResA,
	     PhiPsiMap,PatN,&PatCntN,"3124",Cmd->Treshold_E1,Cmd,0);
      
      if( ((Cn1 != Cn2 && RB >= 0 ) || RB-R1 > 4) && 
	 ( RA >= Chain[Cn1]->NRes || (Cn1 == Cn2 && R3-RA <= 4 ) ||
	  !Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res3,ResA,NULL,Res3,
		PhiPsiMap,PatN,&PatCntN,"133A",Cmd->Treshold_E1,Cmd,1))
	 &&
	 ( R1-1 < 0 ||
	  !Link(HBond,Chain,Cn1,Cn2,Res1m1,ResB,ResB,Res1,NULL,ResB,
		PhiPsiMap,PatN,&PatCntN,"1-BB1",Cmd->Treshold_E1,Cmd,1)))
	Link(HBond,Chain,Cn1,Cn2,Res1,Res3,ResB,Res1,Res1,NULL,
	     PhiPsiMap,PatN,&PatCntN,"13B1",Cmd->Treshold_E1,Cmd,0);
      
      if( (RA < Chain[Cn1]->NRes && (Cn1 != Cn2 || R3-RA > 4)) &&
	 ( (Cn1 == Cn2 && RB-R1 <= 4 ) || (Cn1 != Cn2 && RB < 0 ) || 
	  !Link(HBond,Chain,Cn1,Cn2,Res1,Res3,ResB,Res1,Res1,NULL,
	        PhiPsiMap,PatN,&PatCntN,"13B1",Cmd->Treshold_E1,Cmd,1))
	 &&
	 ( R3+1 >= Chain[Cn2]->NRes ||
	  !Link(HBond,Chain,Cn1,Cn2,ResA,Res3p1,Res3,ResA,ResA,NULL,
		PhiPsiMap,PatN,&PatCntN,"A3+3A",Cmd->Treshold_E1,Cmd,1)))
	Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res3,ResA,NULL,Res3,
	     PhiPsiMap,PatN,&PatCntN,"133A",Cmd->Treshold_E1,Cmd,0);
      
      /* Process parallel strands */

      R4 = R3+2; 
      RB = R3+1;
      ResB   = Chain[Cn2]->Rsd[RB];
      Res4   = Chain[Cn2]->Rsd[R4];

      if( (Cn1 == Cn2 && abs(R3-R1) <= 3) || R4 >= Chain[Cn2]->NRes ) continue;
      
      if( R2 < Chain[Cn1]->NRes && (Cn1 != Cn2 || abs(R2-R3) > 3) )
	Link(HBond,Chain,Cn2,Cn1,Res3,Res1,Res2,Res3,Res3,ResA,
	     PhiPsiMap,PatP,&PatCntP,"3123",Cmd->Treshold_E2,Cmd,0);
      
      if( R4 < Chain[Cn2]->NRes && (Cn1 != Cn2 || abs(R4-R1) > 3) )
	Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res4,Res1,Res1,ResB,
	     PhiPsiMap,PatP,&PatCntP,"1341",Cmd->Treshold_E2,Cmd,0);
    }
  }
    
  FilterAntiPar(PatN,PatCntN);
  FilterPar(PatP,PatCntP);

  MergePatternsAntiPar(PatN,PatCntN);
  MergePatternsPar(PatP,PatCntP);

  if( Cmd->Info )  {
    PrintPatterns(PatN,PatCntN,Chain,Cn1,Cn2);
    PrintPatterns(PatP,PatCntP,Chain,Cn1,Cn2);
  }

  FillAsnAntiPar(AntiPar1,AntiPar2,Chain,Cn1,Cn2,PatN,PatCntN,Cmd);
  FillAsnPar(Par1,Par2,Chain,Cn1,Cn2,PatP,PatCntP,Cmd);

  Bridge(AntiPar1,AntiPar2,Chain,Cn1,Cn2,PatN,PatCntN);
  Bridge(Par1,Par2,Chain,Cn1,Cn2,PatP,PatCntP);

  for( i=0; i<Chain[Cn1]->NRes; i++ )
    if( AntiPar1[i] == 'N' || Par1[i] == 'P' ) 
      Chain[Cn1]->Rsd[i]->Prop->Asn = 'E';
    else
    if( AntiPar1[i] == 'B' || Par1[i] == 'B' )
      Chain[Cn1]->Rsd[i]->Prop->Asn = 'B';
    else
    if( AntiPar1[i] == 'b' || Par1[i] == 'b' )
      Chain[Cn1]->Rsd[i]->Prop->Asn = 'b';

  for( i=0; i<Chain[Cn2]->NRes; i++ )
    if( Chain[Cn2]->Rsd[i]->Prop->Asn == 'E' )
      continue;
    else
    if( AntiPar2[i] == 'N' || Par2[i] == 'P' ) 
      Chain[Cn2]->Rsd[i]->Prop->Asn = 'E';
    else
    if( AntiPar2[i] == 'B' || Par2[i] == 'B' ) 
      Chain[Cn2]->Rsd[i]->Prop->Asn = 'B';
    else
    if( AntiPar2[i] == 'b' || Par2[i] == 'b' ) 
      Chain[Cn2]->Rsd[i]->Prop->Asn = 'b';

/*
  for( i=0; i<PatCntN; i++ )
    free(PatN[i]);
  for( i=0; i<PatCntP; i++ )
    free(PatP[i]);
*/
  free(PatN);
  free(PatP);
  free(AntiPar1);
  free(Par1);
  free(AntiPar2);
  free(Par2);

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %r9, 0x38(%rsp)
movq %r8, 0x20(%rsp)
movq %rcx, 0x30(%rsp)
movl %edx, %ebx
movl %esi, %ebp
movq %rdi, %r14
xorl %eax, %eax
movl %eax, 0x14(%rsp)
movl %eax, 0x64(%rsp)
movl $0x61a80, %edi          # imm = 0x61A80
callq 0x5880
movq %rax, 0x28(%rsp)
movl $0x61a80, %edi          # imm = 0x61A80
callq 0x5880
movq %rax, 0x68(%rsp)
movl %ebp, 0xc(%rsp)
movslq %ebp, %rbp
movq (%r14,%rbp,8), %rax
movslq (%rax), %rdi
callq 0x5880
movq %rax, %r15
movq (%r14,%rbp,8), %rax
movslq (%rax), %rdi
callq 0x5880
movq %rax, %r12
movl %ebx, 0x10(%rsp)
movslq %ebx, %rbx
movq (%r14,%rbx,8), %rax
movslq (%rax), %rdi
callq 0x5880
movq %rax, %r13
movq (%r14,%rbx,8), %rax
movslq (%rax), %rdi
callq 0x5880
movq %rbp, %r8
movq (%r14,%rbp,8), %rcx
movl (%rcx), %esi
testl %esi, %esi
jle 0x676e
xorl %edi, %edi
movb $0x43, %dl
movb %dl, (%r15,%rdi)
movb %dl, (%r12,%rdi)
incq %rdi
movq (%r14,%r8,8), %rcx
movslq (%rcx), %rsi
cmpq %rsi, %rdi
jl 0x6757
movq %r8, 0x48(%rsp)
movq (%r14,%rbx,8), %r9
movl (%r9), %edx
testl %edx, %edx
movl 0x10(%rsp), %r10d
movl 0xc(%rsp), %r11d
jle 0x67b0
xorl %ecx, %ecx
movb $0x43, %sil
movb %sil, (%r13,%rcx)
movb %sil, (%rax,%rcx)
incq %rcx
movq (%r14,%rbx,8), %r9
movslq (%r9), %rdx
cmpq %rdx, %rcx
jl 0x678d
movq 0x48(%rsp), %rcx
movq (%r14,%rcx,8), %rcx
movl (%rcx), %esi
movq %rbx, 0x78(%rsp)
movq %rax, 0x80(%rsp)
movq %r12, 0x98(%rsp)
testl %esi, %esi
movq %r13, 0x88(%rsp)
jle 0x6f4f
movq %r15, 0xb8(%rsp)
movl $0x2, %r15d
xorl %eax, %eax
xorl %r13d, %r13d
xorl %ebx, %ebx
movq 0x68(%rcx), %rdi
movq (%rdi,%rbx,8), %r12
movq 0x770(%r12), %r8
cmpl $0x0, 0x30(%r8)
jne 0x680c
cmpl $0x0, 0x34(%r8)
je 0x6f22
cmpl %r10d, %r11d
je 0x681c
cmpl $0x0, 0x38(%r8)
je 0x6f22
leaq 0x2(%rbx), %rbp
movslq %esi, %r8
cmpq %r8, %rbp
jge 0x6f22
movq 0x768(%r12), %r8
cmpl $-0x1, 0xc(%r8)
je 0x6f22
cmpl $-0x1, 0x10(%r8)
je 0x6f22
movq 0x10(%rdi,%rbx,8), %r8
movq %r8, 0xa0(%rsp)
movq 0x768(%r8), %r8
cmpl $-0x1, 0xc(%r8)
je 0x6f22
cmpl $-0x1, 0x10(%r8)
je 0x6f22
movq 0x8(%rdi,%rbx,8), %r8
movq %r8, 0x70(%rsp)
movq 0x768(%r8), %r8
cmpl $-0x1, 0xc(%r8)
je 0x6f22
cmpl $-0x1, 0x10(%r8)
je 0x6f22
leaq 0x1(%rbx), %r8
cmpl %r10d, %r11d
movq %r8, 0xb0(%rsp)
cmovnel %eax, %r8d
cmpl %edx, %r8d
jge 0x6f22
movq %rbp, 0xa8(%rsp)
movq -0x8(%rdi,%rbx,8), %rax
movq %rax, 0xc0(%rsp)
movl %r8d, %ebp
movl %r15d, %eax
subl %r8d, %eax
movq 0x68(%r9), %rcx
movq (%rcx,%rbp,8), %rdx
movq %rdx, 0x18(%rsp)
movq 0x770(%rdx), %rdx
cmpl $0x0, 0x34(%rdx)
jne 0x68f9
cmpl $0x0, 0x30(%rdx)
je 0x6f04
cmpl %r10d, %r11d
je 0x6908
cmpl $0x0, 0x38(%rdx)
je 0x6f04
movl %eax, 0x40(%rsp)
movq 0x8(%rcx,%rbp,8), %rax
movq %rax, 0x90(%rsp)
movq -0x10(%rcx,%rbp,8), %rax
movq %rax, 0x58(%rsp)
movq -0x8(%rcx,%rbp,8), %rax
movq %rax, 0x50(%rsp)
cmpl %r10d, %r11d
jne 0x693e
movq %r13, %rax
addq %rbp, %rax
cmpq $0x3, %rax
jl 0x6995
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq %r12, %r8
movq 0x18(%rsp), %r9
pushq $0x0
pushq %rax
leaq 0x13275(%rip), %rax     # 0x19be0
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq %r9
pushq %r12
pushq %r12
pushq %r9
callq 0x71ab
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
movq 0x48(%rsp), %rdx
movq (%r14,%rdx,8), %rax
movslq (%rax), %rax
cmpq %rax, 0xa8(%rsp)
jge 0x6a44
cmpl %r10d, %r11d
setne %al
cmpq $0x2, %rbp
setae %cl
testb %cl, %al
jne 0x69d1
leaq -0x4(,%rbp), %rax
addq %r13, %rax
cmpq $0x2, %rax
jl 0x6a44
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r10d, %edx
movl %r11d, %ecx
movq 0x18(%rsp), %r8
movq %r12, %r9
pushq $0x0
pushq %rax
leaq 0x131e7(%rip), %rax     # 0x19be5
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq 0xa0(%rsp)
pushq 0x88(%rsp)
pushq 0x98(%rsp)
pushq 0xe8(%rsp)
callq 0x71ab
movq 0x98(%rsp), %rdx
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
cmpl %r10d, %r11d
setne %al
testq %rbp, %rbp
setne %cl
andb %al, %cl
leaq -0x1(,%rbp), %rsi
addq %r13, %rsi
cmpq $0x5, %rsi
setge %al
orb %cl, %al
cmpb $0x1, %al
jne 0x6be4
movq (%r14,%rdx,8), %rax
movslq (%rax), %rax
cmpq %rax, 0xb0(%rsp)
movq %rsi, 0x58(%rsp)
jge 0x6b03
cmpl %r10d, %r11d
jne 0x6a8f
cmpq $0x5, %rsi
jl 0x6b03
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq %r12, %r8
movq 0x18(%rsp), %r9
pushq $0x1
pushq %rax
leaq 0x1312e(%rip), %rax     # 0x19bea
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq %r9
pushq $0x0
pushq 0xb0(%rsp)
pushq %r9
callq 0x71ab
movq 0xa8(%rsp), %rsi
movq 0x98(%rsp), %rdx
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
testl %eax, %eax
jne 0x6be4
testq %rbx, %rbx
je 0x6b78
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq 0xc0(%rsp), %r8
movq 0x50(%rsp), %r9
pushq $0x1
pushq %rax
leaq 0x130b5(%rip), %rax     # 0x19bef
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq %r9
pushq $0x0
pushq %r12
pushq %r9
callq 0x71ab
movq 0xa8(%rsp), %rsi
movq 0x98(%rsp), %rdx
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
testl %eax, %eax
jne 0x6be4
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq %r12, %r8
movq 0x18(%rsp), %r9
pushq $0x0
pushq %rax
leaq 0x13050(%rip), %rax     # 0x19bf5
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq $0x0
pushq %r12
pushq %r12
pushq 0x98(%rsp)
callq 0x71ab
movq 0xa8(%rsp), %rsi
movq 0x98(%rsp), %rdx
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
movq (%r14,%rdx,8), %rax
movslq (%rax), %rax
cmpq %rax, 0xb0(%rsp)
jge 0x6d5f
cmpl %r10d, %r11d
jne 0x6c08
cmpq $0x5, %rsi
jl 0x6d5f
cmpl %r10d, %r11d
sete %al
setne %dl
cmpq $0x5, %rsi
setl %cl
testq %rbp, %rbp
sete %sil
testb %sil, %dl
jne 0x6c8c
andb %cl, %al
jne 0x6c8c
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq %r12, %r8
movq 0x18(%rsp), %r9
pushq $0x1
pushq %rax
leaq 0x12fa0(%rip), %rax     # 0x19bf5
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq $0x0
pushq %r12
pushq %r12
pushq 0x98(%rsp)
callq 0x71ab
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
testl %eax, %eax
jne 0x6d5f
leaq 0x1(%rbp), %rax
movq 0x78(%rsp), %rcx
movq (%r14,%rcx,8), %rcx
movslq (%rcx), %rcx
cmpq %rcx, %rax
jge 0x6d03
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq 0x70(%rsp), %r8
movq 0x90(%rsp), %r9
pushq $0x1
pushq %rax
leaq 0x12f27(%rip), %rax     # 0x19bfa
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq $0x0
pushq %r8
pushq %r8
pushq 0x60(%rsp)
callq 0x71ab
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
testl %eax, %eax
jne 0x6d5f
movq 0x20(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq %r12, %r8
movq 0x18(%rsp), %r9
pushq $0x0
pushq %rax
leaq 0x12eba(%rip), %rax     # 0x19bea
pushq %rax
leaq 0x2c(%rsp), %rax
pushq %rax
pushq 0x48(%rsp)
pushq 0x60(%rsp)
pushq %r9
pushq $0x0
pushq 0xb0(%rsp)
pushq %r9
callq 0x71ab
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
leal (%r13,%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
movq 0x78(%rsp), %rax
movq (%r14,%rax,8), %r9
movq 0x68(%r9), %rdx
movq 0x8(%rdx,%rbp,8), %rsi
movq 0x10(%rdx,%rbp,8), %rax
cmpl %r10d, %r11d
jne 0x6d90
cmpl $0x4, %ecx
jb 0x6f00
leaq 0x2(%rbp), %rdi
movslq (%r9), %rcx
cmpq %rcx, %rdi
jge 0x6f00
movq %rax, 0x58(%rsp)
movq 0x48(%rsp), %rax
movq (%r14,%rax,8), %rdx
movslq (%rdx), %rdx
cmpq %rdx, 0xa8(%rsp)
jge 0x6e6b
cmpl %r10d, %r11d
movl 0x40(%rsp), %eax
jne 0x6dd8
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
cmpl $0x4, %ecx
jb 0x6e7d
movq 0x20(%rsp), %rax
movss 0x1d24(%rax), %xmm0
movq %rdi, 0x90(%rsp)
movq 0x30(%rsp), %rdi
movq %rsi, 0x50(%rsp)
movq %r14, %rsi
movl %r10d, %edx
movl %r11d, %ecx
movq 0x18(%rsp), %r8
movq %r12, %r9
pushq $0x0
pushq %rax
leaq 0x12dee(%rip), %rax     # 0x19c00
pushq %rax
leaq 0x7c(%rsp), %rax
pushq %rax
pushq 0x88(%rsp)
pushq 0x60(%rsp)
pushq 0xa0(%rsp)
pushq %r8
pushq %r8
pushq 0xe8(%rsp)
callq 0x71ab
movq 0xe0(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
movq 0x78(%rsp), %rax
movq (%r14,%rax,8), %r9
movl 0x40(%rsp), %eax
movslq (%r9), %rcx
jmp 0x6e6f
movl 0x40(%rsp), %eax
cmpq %rcx, %rdi
jge 0x6f04
cmpl %r10d, %r11d
jne 0x6e8e
leal 0x2(%r13,%rbp), %ecx
movl %ecx, %edx
negl %edx
cmovsl %ecx, %edx
cmpl $0x4, %edx
jb 0x6f04
movq %rsi, 0x50(%rsp)
movq 0x20(%rsp), %rax
movss 0x1d24(%rax), %xmm0
movq 0x30(%rsp), %rdi
movq %r14, %rsi
movl %r11d, %edx
movl %r10d, %ecx
movq %r12, %r8
movq 0x18(%rsp), %r9
pushq $0x0
pushq %rax
leaq 0x12d45(%rip), %rax     # 0x19c05
pushq %rax
leaq 0x7c(%rsp), %rax
pushq %rax
pushq 0x88(%rsp)
pushq 0x60(%rsp)
pushq 0x80(%rsp)
pushq %r12
pushq %r12
pushq 0xa0(%rsp)
callq 0x71ab
movl 0x5c(%rsp), %r11d
movl 0x60(%rsp), %r10d
addq $0x50, %rsp
movq 0x78(%rsp), %rax
movq (%r14,%rax,8), %r9
movl 0x40(%rsp), %eax
incq %rbp
movslq (%r9), %rdx
decl %eax
cmpq %rdx, %rbp
jl 0x68d5
movq 0x48(%rsp), %rax
movq (%r14,%rax,8), %rcx
movl (%rcx), %esi
xorl %eax, %eax
incq %rbx
movslq %esi, %rdi
incl %r15d
decq %r13
cmpq %rdi, %rbx
jl 0x67ea
movl 0x14(%rsp), %ebp
movl 0x64(%rsp), %r12d
movq 0x68(%rsp), %r13
movq 0xb8(%rsp), %r15
jmp 0x6f59
xorl %r12d, %r12d
xorl %ebp, %ebp
movq 0x68(%rsp), %r13
movq 0x28(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %esi
callq 0xe903
movq %r13, %rdi
movl %r12d, %esi
callq 0xeb3d
movq %rbx, %rdi
movq %rbp, 0x40(%rsp)
movl %ebp, %esi
callq 0xa568
movq %r13, %rdi
movq %r12, 0x18(%rsp)
movl %r12d, %esi
callq 0xb6e0
movq 0x20(%rsp), %rax
cmpl $0x0, 0x1d60(%rax)
movl 0x10(%rsp), %ebp
movl 0xc(%rsp), %r12d
je 0x6fd5
movq %rbx, %rdi
movq 0x40(%rsp), %rsi
movq %r14, %rdx
movl %r12d, %ecx
movl %ebp, %r8d
callq 0x758c
movq %r13, %rdi
movq 0x18(%rsp), %rsi
movq %r14, %rdx
movl %r12d, %ecx
movl %ebp, %r8d
callq 0x758c
movq %r15, %rdi
movq 0x88(%rsp), %rsi
movq %r14, %rdx
movl %r12d, %ecx
movl %ebp, %r8d
movq %rbx, %r9
movq 0x20(%rsp), %r12
pushq %r12
pushq 0x48(%rsp)
callq 0xc824
addq $0x10, %rsp
movq 0x98(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq %r14, %rdx
movl 0xc(%rsp), %ebx
movl %ebx, %ecx
movl %ebp, %r8d
movq %r13, %r9
pushq %r12
pushq 0x20(%rsp)
callq 0xd97d
addq $0x8, %rsp
movq %r15, %rdi
movq 0x90(%rsp), %rsi
movq %r14, %rdx
movl %ebx, %ecx
movl %ebp, %r8d
movq 0x30(%rsp), %r9
pushq 0x48(%rsp)
movq 0xa8(%rsp), %r13
callq 0x78e5
addq $0x8, %rsp
movq %r13, %rdi
movq 0x88(%rsp), %rsi
movq %r14, %rdx
movl %ebx, %ecx
movl %ebp, %r8d
movq 0x70(%rsp), %r9
movq %r9, %rbx
pushq 0x20(%rsp)
callq 0x78e5
addq $0x10, %rsp
movq 0x48(%rsp), %rax
movq (%r14,%rax,8), %rax
movslq (%rax), %rcx
testq %rcx, %rcx
jle 0x70eb
xorl %edx, %edx
movb (%r15,%rdx), %dil
movb $0x45, %sil
cmpb $0x4e, %dil
je 0x70ae
movb (%r13,%rdx), %r8b
cmpb $0x50, %r8b
jne 0x70cb
movq 0x68(%rax), %rdi
movq (%rdi,%rdx,8), %rdi
movq 0x768(%rdi), %rdi
movb %sil, 0x1c(%rdi)
incq %rdx
cmpq %rdx, %rcx
jne 0x7096
jmp 0x70eb
movb $0x42, %sil
cmpb $0x42, %dil
je 0x70ae
cmpb $0x42, %r8b
je 0x70ae
movb $0x62, %sil
cmpb $0x62, %dil
je 0x70ae
cmpb $0x62, %r8b
jne 0x70c1
jmp 0x70ae
movq 0x78(%rsp), %rax
movq (%r14,%rax,8), %rcx
movslq (%rcx), %rax
testq %rax, %rax
movq 0x88(%rsp), %r14
movq 0x80(%rsp), %r12
jle 0x7168
movq 0x68(%rcx), %rcx
xorl %edx, %edx
movq (%rcx,%rdx,8), %rsi
movq 0x768(%rsi), %rsi
cmpb $0x45, 0x1c(%rsi)
je 0x713e
movb (%r14,%rdx), %r8b
movb $0x45, %dil
cmpb $0x4e, %r8b
je 0x713a
movb (%r12,%rdx), %r9b
cmpb $0x50, %r9b
jne 0x7148
movb %dil, 0x1c(%rsi)
incq %rdx
cmpq %rdx, %rax
jne 0x7112
jmp 0x7168
movb $0x42, %dil
cmpb $0x42, %r8b
je 0x713a
cmpb $0x42, %r9b
je 0x713a
movb $0x62, %dil
cmpb $0x62, %r8b
je 0x713a
cmpb $0x62, %r9b
jne 0x713e
jmp 0x713a
movq 0x28(%rsp), %rdi
callq 0x2040
movq %rbx, %rdi
callq 0x2040
movq %r15, %rdi
callq 0x2040
movq %r13, %rdi
callq 0x2040
movq %r14, %rdi
callq 0x2040
movq %r12, %rdi
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2040