// File: /workspace/github_c_makefile_star2_O0/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 $0x138, %rsp            # imm = 0x138
movq %rdi, 0x130(%rsp)
movl %esi, 0x12c(%rsp)
movl %edx, 0x128(%rsp)
movq %rcx, 0x120(%rsp)
movq %r8, 0x118(%rsp)
movq %r9, 0x110(%rsp)
movl $0x0, 0xa4(%rsp)
movl $0x0, 0xa0(%rsp)
movl $0x61a80, %edi          # imm = 0x61A80
callq 0x7360
movq %rax, 0x108(%rsp)
movl $0x61a80, %edi          # imm = 0x61A80
callq 0x7360
movq %rax, 0x100(%rsp)
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq (%rax), %rdi
shlq $0x0, %rdi
callq 0x7360
movq %rax, 0x90(%rsp)
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq (%rax), %rdi
shlq $0x0, %rdi
callq 0x7360
movq %rax, 0x88(%rsp)
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq (%rax), %rdi
shlq $0x0, %rdi
callq 0x7360
movq %rax, 0x80(%rsp)
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq (%rax), %rdi
shlq $0x0, %rdi
callq 0x7360
movq %rax, 0x78(%rsp)
movl $0x0, 0x74(%rsp)
movl 0x74(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x8849
movq 0x90(%rsp), %rax
movslq 0x74(%rsp), %rcx
movb $0x43, (%rax,%rcx)
movq 0x88(%rsp), %rax
movslq 0x74(%rsp), %rcx
movb $0x43, (%rax,%rcx)
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x87fe
movl $0x0, 0x74(%rsp)
movl 0x74(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x128(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x8899
movq 0x80(%rsp), %rax
movslq 0x74(%rsp), %rcx
movb $0x43, (%rax,%rcx)
movq 0x78(%rsp), %rax
movslq 0x74(%rsp), %rcx
movb $0x43, (%rax,%rcx)
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x8851
movl $0x0, 0xbc(%rsp)
movl 0xbc(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x9734
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xbc(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xf8(%rsp)
movq 0xf8(%rsp), %rax
movq 0x770(%rax), %rax
cmpl $0x0, 0x30(%rax)
jne 0x891d
movq 0xf8(%rsp), %rax
movq 0x770(%rax), %rax
cmpl $0x0, 0x34(%rax)
je 0x8942
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
je 0x8947
movq 0xf8(%rsp), %rax
movq 0x770(%rax), %rax
cmpl $0x0, 0x38(%rax)
jne 0x8947
jmp 0x971e
movl 0xbc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xac(%rsp)
movl 0xbc(%rsp), %eax
addl $0x2, %eax
movl %eax, 0xb4(%rsp)
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movl 0xbc(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xc8(%rsp)
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xac(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xd8(%rsp)
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xb4(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xe8(%rsp)
movl 0xb4(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x8a8f
movq 0xf8(%rsp), %rax
movq 0x768(%rax), %rax
cmpl $-0x1, 0xc(%rax)
je 0x8a8f
movq 0xf8(%rsp), %rax
movq 0x768(%rax), %rax
cmpl $-0x1, 0x10(%rax)
je 0x8a8f
movq 0xe8(%rsp), %rax
movq 0x768(%rax), %rax
cmpl $-0x1, 0xc(%rax)
je 0x8a8f
movq 0xe8(%rsp), %rax
movq 0x768(%rax), %rax
cmpl $-0x1, 0x10(%rax)
je 0x8a8f
movq 0xd8(%rsp), %rax
movq 0x768(%rax), %rax
cmpl $-0x1, 0xc(%rax)
je 0x8a8f
movq 0xd8(%rsp), %rax
movq 0x768(%rax), %rax
cmpl $-0x1, 0x10(%rax)
jne 0x8a94
jmp 0x971e
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
je 0x8ab1
movl $0x0, 0x9c(%rsp)
jmp 0x8ac2
movl 0xbc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x9c(%rsp)
movl 0x9c(%rsp), %eax
movl %eax, 0xb8(%rsp)
movl 0xb8(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x128(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x971c
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xb8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rax
movq 0x770(%rax), %rax
cmpl $0x0, 0x34(%rax)
jne 0x8b49
movq 0xf0(%rsp), %rax
movq 0x770(%rax), %rax
cmpl $0x0, 0x30(%rax)
je 0x8b6e
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
je 0x8b73
movq 0xf0(%rsp), %rax
movq 0x770(%rax), %rax
cmpl $0x0, 0x38(%rax)
jne 0x8b73
jmp 0x9706
movl 0xb8(%rsp), %eax
subl $0x1, %eax
movl %eax, 0xa8(%rsp)
movl 0xb8(%rsp), %eax
subl $0x2, %eax
movl %eax, 0xb0(%rsp)
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movl 0xb8(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xc0(%rsp)
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xa8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xd0(%rsp)
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xb0(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xe0(%rsp)
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
jne 0x8c45
movl 0xb8(%rsp), %eax
subl 0xbc(%rsp), %eax
cmpl $0x3, %eax
jl 0x8d0f
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xf8(%rsp), %r8
movq 0xf0(%rsp), %r9
movq 0xf0(%rsp), %rbp
movq 0xf8(%rsp), %r13
movq 0xf8(%rsp), %r12
movq 0xf0(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
movq %rax, 0x68(%rsp)
leaq 0xa4(%rsp), %r11
leaq 0x22e6a(%rip), %r10     # 0x2bb39
xorl %eax, %eax
movq 0x68(%rsp), %rax
movq %rbp, (%rsp)
movq %r13, 0x8(%rsp)
movq %r12, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x0, 0x48(%rsp)
callq 0x9c30
movl 0xb4(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x8e2d
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
je 0x8d4c
cmpl $0x0, 0xb0(%rsp)
jge 0x8d63
movl 0xb0(%rsp), %eax
subl 0xb4(%rsp), %eax
cmpl $0x2, %eax
jl 0x8e2d
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x128(%rsp), %edx
movl 0x12c(%rsp), %ecx
movq 0xf0(%rsp), %r8
movq 0xf8(%rsp), %r9
movq 0xe8(%rsp), %rbp
movq 0xe0(%rsp), %r13
movq 0xd0(%rsp), %r12
movq 0xd8(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0xa4(%rsp), %r11
leaq 0x22d51(%rip), %r10     # 0x2bb3e
xorl %eax, %eax
movq 0x60(%rsp), %rax
movq %rbp, (%rsp)
movq %r13, 0x8(%rsp)
movq %r12, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x0, 0x48(%rsp)
callq 0x9c30
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
je 0x8e47
cmpl $0x0, 0xa8(%rsp)
jge 0x8e5e
movl 0xa8(%rsp), %eax
subl 0xbc(%rsp), %eax
cmpl $0x4, %eax
jle 0x9106
movl 0xac(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x8f6e
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
jne 0x8ea8
movl 0xb8(%rsp), %eax
subl 0xac(%rsp), %eax
cmpl $0x4, %eax
jle 0x8f6e
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xf8(%rsp), %r8
movq 0xf0(%rsp), %r9
movq 0xf0(%rsp), %r13
movq 0xd8(%rsp), %r12
movq 0xf0(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
xorl %r10d, %r10d
leaq 0xa4(%rsp), %r11
leaq 0x22c1b(%rip), %r10     # 0x2bb43
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x1, 0x48(%rsp)
callq 0x9c30
cmpl $0x0, %eax
jne 0x9106
movl 0xbc(%rsp), %eax
subl $0x1, %eax
cmpl $0x0, %eax
jl 0x9047
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xc8(%rsp), %r8
movq 0xd0(%rsp), %r9
movq 0xd0(%rsp), %r13
movq 0xf8(%rsp), %r12
movq 0xd0(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
xorl %r10d, %r10d
leaq 0xa4(%rsp), %r11
leaq 0x22b47(%rip), %r10     # 0x2bb48
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x1, 0x48(%rsp)
callq 0x9c30
cmpl $0x0, %eax
jne 0x9106
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xf8(%rsp), %r8
movq 0xf0(%rsp), %r9
movq 0xd0(%rsp), %r13
movq 0xf8(%rsp), %r12
movq 0xf8(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
xorl %r10d, %r10d
leaq 0xa4(%rsp), %r11
leaq 0x22a87(%rip), %r10     # 0x2bb4e
xorl %ebp, %ebp
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x0, 0x48(%rsp)
callq 0x9c30
movl 0xac(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x9406
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
jne 0x9150
movl 0xb8(%rsp), %eax
subl 0xac(%rsp), %eax
cmpl $0x4, %eax
jle 0x9406
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
jne 0x9177
movl 0xa8(%rsp), %eax
subl 0xbc(%rsp), %eax
cmpl $0x4, %eax
jle 0x925b
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
je 0x9195
cmpl $0x0, 0xa8(%rsp)
jl 0x925b
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xf8(%rsp), %r8
movq 0xf0(%rsp), %r9
movq 0xd0(%rsp), %r13
movq 0xf8(%rsp), %r12
movq 0xf8(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
xorl %r10d, %r10d
leaq 0xa4(%rsp), %r11
leaq 0x22939(%rip), %r10     # 0x2bb4e
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x1, 0x48(%rsp)
callq 0x9c30
cmpl $0x0, %eax
jne 0x9406
movl 0xb8(%rsp), %eax
addl $0x1, %eax
movq 0x130(%rsp), %rcx
movslq 0x128(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x9347
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xd8(%rsp), %r8
movq 0xc0(%rsp), %r9
movq 0xf0(%rsp), %r13
movq 0xd8(%rsp), %r12
movq 0xd8(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
xorl %r10d, %r10d
leaq 0xa4(%rsp), %r11
leaq 0x22852(%rip), %r10     # 0x2bb53
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x1, 0x48(%rsp)
callq 0x9c30
cmpl $0x0, %eax
jne 0x9406
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xf8(%rsp), %r8
movq 0xf0(%rsp), %r9
movq 0xf0(%rsp), %r13
movq 0xd8(%rsp), %r12
movq 0xf0(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d20(%rax), %xmm0
movq 0x118(%rsp), %rax
xorl %r10d, %r10d
leaq 0xa4(%rsp), %r11
leaq 0x2277c(%rip), %r10     # 0x2bb43
xorl %ebp, %ebp
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x0, 0x48(%rsp)
callq 0x9c30
movl 0xb8(%rsp), %eax
addl $0x2, %eax
movl %eax, 0xb0(%rsp)
movl 0xb8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa8(%rsp)
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xa8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xd0(%rsp)
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0xb0(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xe0(%rsp)
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
jne 0x94aa
movl 0xb8(%rsp), %eax
subl 0xbc(%rsp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
cmpl $0x3, %eax
jle 0x94c9
movl 0xb0(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x128(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jl 0x94ce
jmp 0x9706
movl 0xb4(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x95e9
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
jne 0x951f
movl 0xb4(%rsp), %eax
subl 0xb8(%rsp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
cmpl $0x3, %eax
jle 0x95e9
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x128(%rsp), %edx
movl 0x12c(%rsp), %ecx
movq 0xf0(%rsp), %r8
movq 0xf8(%rsp), %r9
movq 0xe8(%rsp), %rbp
movq 0xf0(%rsp), %r13
movq 0xf0(%rsp), %r12
movq 0xd8(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x100(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d24(%rax), %xmm0
movq 0x118(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0xa0(%rsp), %r11
leaq 0x225b0(%rip), %r10     # 0x2bb59
xorl %eax, %eax
movq 0x58(%rsp), %rax
movq %rbp, (%rsp)
movq %r13, 0x8(%rsp)
movq %r12, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x0, 0x48(%rsp)
callq 0x9c30
movl 0xb0(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x128(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x9704
movl 0x12c(%rsp), %eax
cmpl 0x128(%rsp), %eax
jne 0x963a
movl 0xb0(%rsp), %eax
subl 0xbc(%rsp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
cmpl $0x3, %eax
jle 0x9704
movq 0x120(%rsp), %rdi
movq 0x130(%rsp), %rsi
movl 0x12c(%rsp), %edx
movl 0x128(%rsp), %ecx
movq 0xf8(%rsp), %r8
movq 0xf0(%rsp), %r9
movq 0xe0(%rsp), %rbp
movq 0xf8(%rsp), %r13
movq 0xf8(%rsp), %r12
movq 0xd0(%rsp), %r15
movq 0x110(%rsp), %r14
movq 0x100(%rsp), %rbx
movq 0x118(%rsp), %rax
movss 0x1d24(%rax), %xmm0
movq 0x118(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0xa0(%rsp), %r11
leaq 0x2249a(%rip), %r10     # 0x2bb5e
xorl %eax, %eax
movq 0x50(%rsp), %rax
movq %rbp, (%rsp)
movq %r13, 0x8(%rsp)
movq %r12, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
movl $0x0, 0x48(%rsp)
callq 0x9c30
jmp 0x9706
movl 0xb8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xb8(%rsp)
jmp 0x8ad0
jmp 0x971e
movl 0xbc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xbc(%rsp)
jmp 0x88a4
movq 0x108(%rsp), %rdi
movl 0xa4(%rsp), %esi
callq 0x18d80
movq 0x100(%rsp), %rdi
movl 0xa0(%rsp), %esi
callq 0x19130
movq 0x108(%rsp), %rdi
movl 0xa4(%rsp), %esi
callq 0x10c10
movq 0x100(%rsp), %rdi
movl 0xa0(%rsp), %esi
callq 0x12a40
movq 0x118(%rsp), %rax
cmpl $0x0, 0x1d60(%rax)
je 0x97eb
movq 0x108(%rsp), %rdi
movl 0xa4(%rsp), %esi
movq 0x130(%rsp), %rdx
movl 0x12c(%rsp), %ecx
movl 0x128(%rsp), %r8d
callq 0xa3e0
movq 0x100(%rsp), %rdi
movl 0xa0(%rsp), %esi
movq 0x130(%rsp), %rdx
movl 0x12c(%rsp), %ecx
movl 0x128(%rsp), %r8d
callq 0xa3e0
movq 0x90(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq 0x130(%rsp), %rdx
movl 0x12c(%rsp), %ecx
movl 0x128(%rsp), %r8d
movq 0x108(%rsp), %r9
movl 0xa4(%rsp), %r10d
movq 0x118(%rsp), %rax
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x147e0
movq 0x88(%rsp), %rdi
movq 0x78(%rsp), %rsi
movq 0x130(%rsp), %rdx
movl 0x12c(%rsp), %ecx
movl 0x128(%rsp), %r8d
movq 0x100(%rsp), %r9
movl 0xa0(%rsp), %r10d
movq 0x118(%rsp), %rax
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x16df0
movq 0x90(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq 0x130(%rsp), %rdx
movl 0x12c(%rsp), %ecx
movl 0x128(%rsp), %r8d
movq 0x108(%rsp), %r9
movl 0xa4(%rsp), %eax
movl %eax, (%rsp)
callq 0xac10
movq 0x88(%rsp), %rdi
movq 0x78(%rsp), %rsi
movq 0x130(%rsp), %rdx
movl 0x12c(%rsp), %ecx
movl 0x128(%rsp), %r8d
movq 0x100(%rsp), %r9
movl 0xa0(%rsp), %eax
movl %eax, (%rsp)
callq 0xac10
movl $0x0, 0x74(%rsp)
movl 0x74(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x12c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x9a48
movq 0x90(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x4e, %eax
je 0x994f
movq 0x88(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x50, %eax
jne 0x9980
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x768(%rax), %rax
movb $0x45, 0x1c(%rax)
jmp 0x9a36
movq 0x90(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x42, %eax
je 0x99ac
movq 0x88(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x42, %eax
jne 0x99da
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x768(%rax), %rax
movb $0x42, 0x1c(%rax)
jmp 0x9a34
movq 0x90(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x62, %eax
je 0x9a06
movq 0x88(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x62, %eax
jne 0x9a32
movq 0x130(%rsp), %rax
movslq 0x12c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x768(%rax), %rax
movb $0x62, 0x1c(%rax)
jmp 0x9a34
jmp 0x9a36
jmp 0x9a38
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x9903
movl $0x0, 0x74(%rsp)
movl 0x74(%rsp), %eax
movq 0x130(%rsp), %rcx
movslq 0x128(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl (%rcx), %eax
jge 0x9bc4
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x768(%rax), %rax
movsbl 0x1c(%rax), %eax
cmpl $0x45, %eax
jne 0x9aa6
jmp 0x9bb4
movq 0x80(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x4e, %eax
je 0x9acf
movq 0x78(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x50, %eax
jne 0x9b00
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x768(%rax), %rax
movb $0x45, 0x1c(%rax)
jmp 0x9bb0
movq 0x80(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x42, %eax
je 0x9b29
movq 0x78(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x42, %eax
jne 0x9b57
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x768(%rax), %rax
movb $0x42, 0x1c(%rax)
jmp 0x9bae
movq 0x80(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x62, %eax
je 0x9b80
movq 0x78(%rsp), %rax
movslq 0x74(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x62, %eax
jne 0x9bac
movq 0x130(%rsp), %rax
movslq 0x128(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x68(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x768(%rax), %rax
movb $0x62, 0x1c(%rax)
jmp 0x9bae
jmp 0x9bb0
jmp 0x9bb2
jmp 0x9bb4
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x9a50
movq 0x108(%rsp), %rdi
callq 0x2030
movq 0x100(%rsp), %rdi
callq 0x2030
movq 0x90(%rsp), %rdi
callq 0x2030
movq 0x88(%rsp), %rdi
callq 0x2030
movq 0x80(%rsp), %rdi
callq 0x2030
movq 0x78(%rsp), %rdi
callq 0x2030
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)