// File: /workspace/github_cpp_makefile_star2_O3/ncbi[P]amr/seq.cpp
// Function: Seq_sp::Dna::makePeptide(char, unsigned char, bool, bool, unsigned long&) const
Peptide Dna::makePeptide (Frame frame,
                          Gencode gencode,
                          bool lowercasePossibleStartCodon,
                          bool firstStartCodon2M,
                          size_t &translationStart) const
{
  ASSERT (isFrame (frame));
  IMPLY (firstStartCodon2M, lowercasePossibleStartCodon);

  const string peptideName (getId () + ".fr" + to_string ((int) frame));
  const size_t frameOffset = (size_t) abs (frame) - 1;
  ASSERT (frameOffset <= 2);
  const size_t aaSeqLen = seq. size () >= 3 ? (seq. size () - frameOffset) / 3 : 0;

  Peptide peptide (peptideName, aaSeqLen, false);
  peptide. pseudo = true;

  // dna
  unique_ptr<Dna> compDna;
  if (frame < 0)
    compDna. reset (makeComplementary ());
  const Dna* dna = (frame < 0) ? compDna. get () : this;
  ASSERT (dna->seq. size () == seq. size ());
  
  translationStart = frame > 0 ? frameOffset : dna->seq. size () - frameOffset;

  const char* s = dna->seq. c_str () + frameOffset;
  FOR (size_t, j, aaSeqLen)
  {
    peptide. seq [j] = codon2aa (s, gencode, lowercasePossibleStartCodon);
    s += 3;
  }
  ASSERT (peptide. seq [aaSeqLen] == '\0');
  
  if (   ! peptide. seq. empty () 
      && firstStartCodon2M 
      && isLower (peptide. seq [0])
     )
  	peptide. seq [0] = 'm';

  return peptide;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movl %r9d, %r14d
movl %r8d, %ebp
movl %ecx, %r12d
movl %edx, %r15d
movq %rsi, %r13
movq %rdi, %rbx
callq 0xb070
movq %rax, 0x110(%rsp)
movl $0x0, (%rax)
leal 0x3(%r15), %eax
cmpl $0x6, %eax
ja 0x709bb
cmpl $0x3, %eax
je 0x709bb
movl %r12d, 0x120(%rsp)
xorb $0x1, %r14b
movl %r14d, %eax
orb %bpl, %al
je 0x70733
movl %ebp, 0x11c(%rsp)
leaq 0x8(%r13), %r12
movq %r12, %rdi
movl $0x20, %esi
xorl %edx, %edx
callq 0xb760
cmpq $-0x1, %rax
jne 0x703f0
movq 0x10(%r13), %rax
leaq 0x48(%rsp), %rbp
movq %rbp, %rdi
movq %r12, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0xb5d0
leaq 0x28154(%rip), %rsi     # 0x98560
movq %rbp, %rdi
callq 0xbb10
leaq 0x38(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movl %r14d, 0x124(%rsp)
je 0x70443
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x70449
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movsbl %r15b, %ebp
movl %ebp, %r14d
shrl $0x1f, %r14d
leal 0x1(%r14), %esi
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x8(%rsp), %rdi
movl $0x2d, %edx
callq 0xb670
movl %ebp, %r12d
negl %r12d
cmovsl %ebp, %r12d
movl %r14d, %edi
addq 0x8(%rsp), %rdi
movl $0x1, %esi
movl %r12d, %edx
callq 0xf049
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %r8
movq 0x10(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
leaq 0x38(%rsp), %r14
cmpq %r14, %rcx
je 0x704ce
movq 0x38(%rsp), %rdi
movq 0x8(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x704f1
movl $0xf, %edi
leaq 0x18(%rsp), %r9
cmpq %r9, %rsi
je 0x704ec
movq 0x18(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x704fd
leaq 0x28(%rsp), %rdi
callq 0xb1b0
jmp 0x7050b
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xb620
leaq 0x98(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x70538
movq %rsi, 0x88(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x98(%rsp)
jmp 0x7053e
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x90(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7057a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb5a0
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x70591
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb5a0
leaq 0x58(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x705ac
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb5a0
movl %r12d, %r12d
decq %r12
movq 0x110(%rsp), %rax
movl $0x0, (%rax)
cmpq $0x3, %r12
jae 0x707cc
movq 0x30(%r13), %rax
cmpq $0x3, %rax
jb 0x705ec
subq %r12, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movq %rdx, %rbp
shrq %rbp
jmp 0x705ee
xorl %ebp, %ebp
leaq 0x88(%rsp), %rsi
movq %rbx, %rdi
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x8fac6
leaq 0x48416(%rip), %rax     # 0xb8a20
movq %rax, (%rbx)
movb $0x1, 0x49(%rbx)
testb %r15b, %r15b
js 0x70627
movq $0x0, 0x108(%rsp)
movq %r13, %rax
jmp 0x70637
movq %r13, %rdi
callq 0x6fea0
movq %rax, 0x108(%rsp)
movq 0x110(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x30(%rax), %rcx
cmpq 0x30(%r13), %rcx
jne 0x70873
movq 0x180(%rsp), %rdx
subq %r12, %rcx
testb %r15b, %r15b
cmovgq %r12, %rcx
movq %rcx, (%rdx)
testq %rbp, %rbp
je 0x706a8
addq 0x28(%rax), %r12
xorl %r14d, %r14d
movzbl 0x120(%rsp), %r15d
movzbl 0x11c(%rsp), %r13d
movq %r12, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x6e54f
movq 0x28(%rbx), %rcx
movb %al, (%rcx,%r14)
addq $0x3, %r12
incq %r14
cmpq %r14, %rbp
jne 0x70686
movq 0x110(%rsp), %rax
movl $0x0, (%rax)
movq 0x28(%rbx), %r14
cmpb $0x0, (%r14,%rbp)
jne 0x70917
cmpq $0x0, 0x30(%rbx)
sete %al
orb 0x124(%rsp), %al
jne 0x706ea
movsbl (%r14), %ebp
movl %ebp, %edi
callq 0xb840
cmpb %al, %bpl
jne 0x706ea
movb $0x6d, (%r14)
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x706fd
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7071e
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb5a0
movq %rbx, %rax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0xb6b0
testl %eax, %eax
jne 0x70a54
leaq 0xf8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x278ff(%rip), %rsi     # 0x98052
leaq 0x27908(%rip), %rdx     # 0x98062
leaq 0xe8(%rsp), %rdi
callq 0xdc76
leaq 0xc8(%rsp), %rdi
movl $0x7d4, %esi            # imm = 0x7D4
callq 0xe1b2
leaq 0x8(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
callq 0xe10a
leaq 0x22a37(%rip), %rsi     # 0x931d1
leaq 0x8(%rsp), %rdi
callq 0xbb10
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70a5e
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x70a6b
movq %r14, %r13
callq 0xb6b0
testl %eax, %eax
jne 0x70a54
leaq 0xd8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x27863(%rip), %rsi     # 0x98052
leaq 0x2786c(%rip), %rdx     # 0x98062
leaq 0xc8(%rsp), %rdi
callq 0xdc76
leaq 0xa8(%rsp), %rdi
movl $0x7d8, %esi            # imm = 0x7D8
callq 0xe1b2
leaq 0xe8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0xe10a
leaq 0x22998(%rip), %rsi     # 0x931d1
leaq 0xe8(%rsp), %rdi
callq 0xbb10
leaq 0x18(%rsp), %rcx
movq %rcx, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70ae2
movups (%rcx), %xmm0
leaq 0x18(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x70aef
callq 0xb6b0
testl %eax, %eax
jne 0x70a54
leaq 0xd8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x277bf(%rip), %rsi     # 0x98052
leaq 0x277c8(%rip), %rdx     # 0x98062
leaq 0xc8(%rsp), %rdi
callq 0xdc76
leaq 0xa8(%rsp), %rdi
movl $0x7e3, %esi            # imm = 0x7E3
callq 0xe1b2
leaq 0xe8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0xe10a
leaq 0x228f4(%rip), %rsi     # 0x931d1
leaq 0xe8(%rsp), %rdi
callq 0xbb10
leaq 0x18(%rsp), %rcx
movq %rcx, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70b6c
movups (%rcx), %xmm0
leaq 0x18(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x70b79
callq 0xb6b0
testl %eax, %eax
jne 0x70a54
leaq 0xd8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2771b(%rip), %rsi     # 0x98052
leaq 0x27724(%rip), %rdx     # 0x98062
leaq 0xc8(%rsp), %rdi
callq 0xdc76
leaq 0xa8(%rsp), %rdi
movl $0x7ed, %esi            # imm = 0x7ED
callq 0xe1b2
leaq 0xe8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0xe10a
leaq 0x22850(%rip), %rsi     # 0x931d1
leaq 0xe8(%rsp), %rdi
callq 0xbb10
leaq 0x18(%rsp), %rcx
movq %rcx, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70bf6
movups (%rcx), %xmm0
leaq 0x18(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x70c03
callq 0xb6b0
testl %eax, %eax
jne 0x70a54
leaq 0xf8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x27677(%rip), %rsi     # 0x98052
leaq 0x27680(%rip), %rdx     # 0x98062
leaq 0xe8(%rsp), %rdi
callq 0xdc76
leaq 0xc8(%rsp), %rdi
movl $0x7d3, %esi            # imm = 0x7D3
callq 0xe1b2
leaq 0x8(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
callq 0xe10a
leaq 0x227af(%rip), %rsi     # 0x931d1
leaq 0x8(%rsp), %rdi
callq 0xbb10
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70e5f
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x70e6c
movl $0x1, %edi
callq 0xb6d0
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x78(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x27a53(%rip), %rsi     # 0x984e7
leaq 0x27a98(%rip), %rdx     # 0x98533
leaq 0x68(%rsp), %rdi
callq 0xdc76
leaq 0x22e05(%rip), %rsi     # 0x938b1
leaq 0x68(%rsp), %rdi
callq 0xbb10
leaq 0xb8(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70c80
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x70c93
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x138(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x279cd(%rip), %rsi     # 0x984e7
leaq 0x27a12(%rip), %rdx     # 0x98533
leaq 0x128(%rsp), %rdi
callq 0xdc76
leaq 0x22d7c(%rip), %rsi     # 0x938b1
leaq 0x128(%rsp), %rdi
callq 0xbb10
leaq 0x78(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70cfd
movups (%rcx), %xmm0
movups %xmm0, (%r12)
jmp 0x70d0a
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x138(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x27942(%rip), %rsi     # 0x984e7
leaq 0x27987(%rip), %rdx     # 0x98533
leaq 0x128(%rsp), %rdi
callq 0xdc76
leaq 0x22cf1(%rip), %rsi     # 0x938b1
leaq 0x128(%rsp), %rdi
callq 0xbb10
leaq 0x78(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70d73
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x70d80
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x138(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x278b8(%rip), %rsi     # 0x984e7
leaq 0x278fd(%rip), %rdx     # 0x98533
leaq 0x128(%rsp), %rdi
callq 0xdc76
leaq 0x22c67(%rip), %rsi     # 0x938b1
leaq 0x128(%rsp), %rdi
callq 0xbb10
leaq 0x78(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70de9
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x70df6
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
movq 0x8(%rax), %rsi
leaq 0xa8(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xe10a
leaq 0x2787c(%rip), %rsi     # 0x98544
leaq 0x28(%rsp), %rdi
callq 0xbb10
leaq 0x98(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70ee3
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x70ef6
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
movq 0x8(%rax), %rsi
leaq 0x68(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe10a
leaq 0x27828(%rip), %rsi     # 0x98564
leaq 0x48(%rsp), %rdi
callq 0xbb10
leaq 0x38(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70f1a
movups (%rcx), %xmm0
leaq 0x38(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x70f27
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
movq 0x8(%rax), %rsi
leaq 0x68(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe10a
leaq 0x277c3(%rip), %rsi     # 0x98575
leaq 0x48(%rsp), %rdi
callq 0xbb10
leaq 0x38(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70f48
movups (%rcx), %xmm0
leaq 0x38(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x70f55
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
movq 0x8(%rax), %rsi
leaq 0x68(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xe10a
leaq 0x2776f(%rip), %rsi     # 0x98597
leaq 0x48(%rsp), %rdi
callq 0xbb10
leaq 0x38(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70f76
movups (%rcx), %xmm0
leaq 0x38(%rsp), %rdx
movups %xmm0, (%rdx)
jmp 0x70f83
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x78(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x27652(%rip), %rsi     # 0x984e7
leaq 0x27697(%rip), %rdx     # 0x98533
leaq 0x68(%rsp), %rdi
callq 0xdc76
leaq 0x22a04(%rip), %rsi     # 0x938b1
leaq 0x68(%rsp), %rdi
callq 0xbb10
leaq 0xb8(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x70fa4
movups (%rcx), %xmm0
movups %xmm0, (%r13)
jmp 0x70fb7
movq %rdx, 0x88(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x98(%rsp)
movq 0x8(%rax), %rdx
leaq 0x88(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x1155a
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
movq 0x8(%rax), %rdx
leaq 0x28(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x1155a
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
movq 0x8(%rax), %rdx
leaq 0x28(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x1155a
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
movq 0x8(%rax), %rdx
leaq 0x28(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x1155a
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
movq 0x8(%rax), %rsi
leaq 0xa8(%rsp), %rdx
movq %rsi, 0x8(%rdx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xe10a
leaq 0x27548(%rip), %rsi     # 0x98534
leaq 0x28(%rsp), %rdi
callq 0xbb10
leaq 0x98(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x7101a
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
jmp 0x7102d
movq %rdx, 0x88(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x98(%rsp)
movq 0x8(%rax), %rdx
leaq 0x88(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x1155a
jmp 0x710ef
jmp 0x71111
jmp 0x71170
jmp 0x711dd
jmp 0x71069
jmp 0x7108a
movq %rax, %r14
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x7108d
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x7108d
movq %rax, %r14
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x7113b
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x7113b
movq %rax, %r14
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x710d6
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x710d6
movq %rax, %r14
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x71157
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71157
movq %rax, %r14
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
je 0x71114
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71114
movq %rax, %r14
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x71173
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71173
jmp 0x71242
jmp 0x71138
movq %rax, %r14
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x7119c
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x7119c
movq %rax, %r14
movq 0x68(%rsp), %rdi
cmpq %r12, %rdi
je 0x711be
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x711be
movq %rax, %r14
movq 0xa8(%rsp), %rdi
cmpq %r13, %rdi
je 0x711e0
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x711e0
jmp 0x712b1
jmp 0x71199
movq %rax, %r14
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x71203
movq 0x138(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71203
movq %rax, %r14
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x71224
movq 0x138(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71224
movq %rax, %r14
movq 0x68(%rsp), %rdi
cmpq %r12, %rdi
je 0x71245
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71245
jmp 0x71324
jmp 0x71200
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x71268
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71268
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7128e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x7128e
movq %rax, %r14
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x712b4
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x712b4
jmp 0x7139e
jmp 0x71265
movq %rax, %r14
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x712db
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x712db
movq %rax, %r14
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x71301
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71301
movq %rax, %r14
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x71327
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71327
jmp 0x713c5
jmp 0x712d8
movq %rax, %r14
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7134f
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x7134f
movq %rax, %r14
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x71378
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71378
movq %rax, %r14
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x713a1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x713a1
jmp 0x7134c
movq %rax, %r14
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x71434
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71434
movq %rax, %r14
movq 0xc8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x71455
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x71455
movq %rax, %r14
movq 0xe8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x71476
movq 0xf8(%rsp), %rsi
jmp 0x7146e
jmp 0x71431
jmp 0x71431
jmp 0x713d2
movq %rax, %r14
jmp 0x71476
movq %rax, %r14
jmp 0x7144d
movq %rax, %r14
jmp 0x71455
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x713fb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x713fb
movq %rax, %r14
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x7141c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb5a0
jmp 0x7141c
movq %rax, %r14
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x71476
movq 0x58(%rsp), %rsi
jmp 0x7146e
movq %rax, %r14
cmpq $0x0, 0x108(%rsp)
je 0x7144d
movq 0x108(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq %rbx, %rdi
callq 0x8fa26
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x71476
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb5a0
movq %r14, %rdi
callq 0xba60