// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::DnaAnnot::run()
const Cds* DnaAnnot::run ()
{
  sort (cdss);
  
  
  // Dynamic programming
  Vector<const Cds*> nexts;
  FFOR (size_t, i, cdss. size ())
  {
  	// cdss[j] are optimized for all j < i
  	
  	Cds& cds = cdss [i];
  	IMPLY (i, cds. left () >= cdss [i - 1]. left ());

  	// Optimization of cdss[i]
    // cds.{sumLen,bestPrev}    	
  	ASSERT (! cds. bestPrev);
  	cds. sumLen = cds. sizeEffective ();
  	for (const Cds* prev : cds. prevs)
  	{
  	  const long sumLen_new = prev->sumLen  + cds. getLenIncrease (*prev);
  	  if (   cds. sumLen < sumLen_new
  	      || (   cds. sumLen == sumLen_new   // tie resolution
  	        #if 1
  	          && prev < cds. bestPrev
  	        #else
  	          && cds. bestPrev 
  	          && prev->refProt < cds. bestPrev->refProt
  	        #endif
  	         )
  	     )  
  	  {
  	    cds. sumLen = sumLen_new;
  	  	cds. bestPrev = prev;
  	  }
  	}
  	IMPLY (! cds. prevs. empty (), cds. bestPrev && cds. sumLen > 0);
  	

    // Cds::prevs
  	nexts. clear ();  // Cds::coexists(cds)
  	FOR_START (size_t, j, i + 1, cdss. size ())
  	{
  		Cds& next = cdss [j];
  		if (! cds. coexists (next))
  			continue;
  		
  		bool tooFar = false;
  	  const int nextLenIncrease = next. getLenIncrease (cds);
  	  for (const Cds* next_old : nexts)
  	    if (   next_old->coexists (next)
  	    	  && next. getLenIncrease (*next_old) + next_old->getLenIncrease (cds) > nextLenIncrease
  	    	 )
  	    {
  	    	tooFar = true;
  	    	break;
  	    }
  	  if (tooFar)
  	  	break;
  	  	
  	  nexts << & next;
  		next. prevs << & cds;
  	}
  }


  const Cds* cds_last = nullptr;
  long sumLen_max = 0;
  for (const Cds& cds : cdss)
    if (maximize (sumLen_max, cds. sumLen))
    	cds_last = & cds;


  return cds_last;
}

// Assembly:
subq $0x4b8, %rsp            # imm = 0x4B8
movq %rdi, 0x4b0(%rsp)
movq 0x4b0(%rsp), %rdi
movq %rdi, 0x90(%rsp)
addq $0x8, %rdi
callq 0xd8a10
leaq 0x490(%rsp), %rdi
callq 0xd8a50
movq 0x90(%rsp), %rdi
movq $0x0, 0x488(%rsp)
addq $0x8, %rdi
callq 0xd8a80
movq %rax, 0x480(%rsp)
movq 0x488(%rsp), %rax
cmpq 0x480(%rsp), %rax
jae 0xc1e2c
movq 0x90(%rsp), %rdi
addq $0x8, %rdi
movq 0x488(%rsp), %rsi
callq 0xd8aa0
movq %rax, 0x88(%rsp)
jmp 0xc11d3
movq 0x88(%rsp), %rax
movq %rax, 0x478(%rsp)
cmpq $0x0, 0x488(%rsp)
je 0xc1500
callq 0xd0a0
movl $0x0, (%rax)
movq 0x478(%rsp), %rdi
callq 0xd88d0
movq %rax, 0x80(%rsp)
jmp 0xc1214
movq 0x90(%rsp), %rdi
addq $0x8, %rdi
movq 0x488(%rsp), %rsi
decq %rsi
callq 0xd8aa0
movq %rax, 0x78(%rsp)
jmp 0xc1237
movq 0x78(%rsp), %rdi
callq 0xd88d0
movq %rax, 0x70(%rsp)
jmp 0xc1248
movq 0x80(%rsp), %rax
movq 0x70(%rsp), %rcx
cmpq %rcx, %rax
jae 0xc14fe
callq 0xd8c0
cmpl $0x0, %eax
jne 0xc14f4
leaq 0x3c7(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0xdd50
movq 0x68(%rsp), %rdx
leaq 0x271bc(%rip), %rsi     # 0xe8446
leaq 0x3c8(%rsp), %rdi
callq 0xfae0
jmp 0xc1299
leaq 0x3a0(%rsp), %rdi
movl $0xf88, %esi            # imm = 0xF88
callq 0x11600
jmp 0xc12ad
leaq 0x3e8(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
leaq 0x3a0(%rsp), %rdx
callq 0x11510
jmp 0xc12cc
leaq 0x21efe(%rip), %rdx     # 0xe31d1
leaq 0x408(%rsp), %rdi
leaq 0x3e8(%rsp), %rsi
callq 0x114c0
jmp 0xc12ea
leaq 0x35f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xdd50
movq 0x60(%rsp), %rdx
leaq 0x280cb(%rip), %rsi     # 0xe93d3
leaq 0x360(%rsp), %rdi
callq 0xfae0
jmp 0xc1317
leaq 0x22686(%rip), %rdx     # 0xe39a4
leaq 0x380(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0x114c0
jmp 0xc1335
leaq 0x428(%rsp), %rdi
leaq 0x408(%rsp), %rsi
leaq 0x380(%rsp), %rdx
callq 0x11510
jmp 0xc1354
leaq 0x2809b(%rip), %rdx     # 0xe93f6
leaq 0x448(%rsp), %rdi
leaq 0x428(%rsp), %rsi
callq 0x114c0
jmp 0xc1372
leaq 0x448(%rsp), %rdi
callq 0x173d0
jmp 0xc1381
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1f21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc14e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc14d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc14c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc14bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc14a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1494
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1487
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc147a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x448(%rsp), %rdi
callq 0xdf08
leaq 0x428(%rsp), %rdi
callq 0xdf08
leaq 0x380(%rsp), %rdi
callq 0xdf08
leaq 0x360(%rsp), %rdi
callq 0xdf08
leaq 0x35f(%rsp), %rdi
callq 0xd7a0
leaq 0x408(%rsp), %rdi
callq 0xdf08
leaq 0x3e8(%rsp), %rdi
callq 0xdf08
leaq 0x3a0(%rsp), %rdi
callq 0xdf08
leaq 0x3c8(%rsp), %rdi
callq 0xdf08
leaq 0x3c7(%rsp), %rdi
callq 0xd7a0
jmp 0xc1f21
movl $0x1, %edi
callq 0xd8e0
jmp 0xc1500
callq 0xd0a0
movl $0x0, (%rax)
movq 0x478(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0xc17a5
callq 0xd8c0
cmpl $0x0, %eax
jne 0xc179b
leaq 0x2b7(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xdd50
movq 0x58(%rsp), %rdx
leaq 0x26efc(%rip), %rsi     # 0xe8446
leaq 0x2b8(%rsp), %rdi
callq 0xfae0
jmp 0xc1559
leaq 0x290(%rsp), %rdi
movl $0xf8c, %esi            # imm = 0xF8C
callq 0x11600
jmp 0xc156d
leaq 0x2d8(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
leaq 0x290(%rsp), %rdx
callq 0x11510
jmp 0xc158c
leaq 0x21c3e(%rip), %rdx     # 0xe31d1
leaq 0x2f8(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x114c0
jmp 0xc15aa
leaq 0x24f(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xdd50
movq 0x50(%rsp), %rdx
leaq 0x27e0b(%rip), %rsi     # 0xe93d3
leaq 0x250(%rsp), %rdi
callq 0xfae0
jmp 0xc15d7
leaq 0x223c6(%rip), %rdx     # 0xe39a4
leaq 0x270(%rsp), %rdi
leaq 0x250(%rsp), %rsi
callq 0x114c0
jmp 0xc15f5
leaq 0x318(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
leaq 0x270(%rsp), %rdx
callq 0x11510
jmp 0xc1614
leaq 0x27e01(%rip), %rdx     # 0xe941c
leaq 0x338(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0x114c0
jmp 0xc1632
leaq 0x338(%rsp), %rdi
callq 0x173d0
jmp 0xc1641
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1789
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc177c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc176f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1762
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1748
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc173b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc172e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1721
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x338(%rsp), %rdi
callq 0xdf08
leaq 0x318(%rsp), %rdi
callq 0xdf08
leaq 0x270(%rsp), %rdi
callq 0xdf08
leaq 0x250(%rsp), %rdi
callq 0xdf08
leaq 0x24f(%rsp), %rdi
callq 0xd7a0
leaq 0x2f8(%rsp), %rdi
callq 0xdf08
leaq 0x2d8(%rsp), %rdi
callq 0xdf08
leaq 0x290(%rsp), %rdi
callq 0xdf08
leaq 0x2b8(%rsp), %rdi
callq 0xdf08
leaq 0x2b7(%rsp), %rdi
callq 0xd7a0
jmp 0xc1f21
movl $0x1, %edi
callq 0xd8e0
movq 0x478(%rsp), %rdi
callq 0xd88b0
movl %eax, 0x4c(%rsp)
jmp 0xc17b8
movl 0x4c(%rsp), %eax
movslq %eax, %rcx
movq 0x478(%rsp), %rax
movq %rcx, 0x68(%rax)
movq 0x478(%rsp), %rax
addq $0x40, %rax
movq %rax, 0x240(%rsp)
movq 0x240(%rsp), %rdi
callq 0xd8b60
movq %rax, 0x238(%rsp)
movq 0x240(%rsp), %rdi
callq 0xd8b90
movq %rax, 0x230(%rsp)
leaq 0x238(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0xd8bc0
testb $0x1, %al
jne 0xc1827
jmp 0xc18f8
leaq 0x238(%rsp), %rdi
callq 0xd8c00
movq (%rax), %rax
movq %rax, 0x228(%rsp)
movq 0x228(%rsp), %rsi
movq 0x68(%rsi), %rax
movq %rax, 0x40(%rsp)
movq 0x478(%rsp), %rdi
callq 0xc0d20
movl %eax, 0x48(%rsp)
jmp 0xc1863
movq 0x40(%rsp), %rax
movl 0x48(%rsp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x220(%rsp)
movq 0x478(%rsp), %rax
movq 0x68(%rax), %rax
cmpq 0x220(%rsp), %rax
jl 0xc18bc
movq 0x478(%rsp), %rax
movq 0x68(%rax), %rax
cmpq 0x220(%rsp), %rax
jne 0xc18e4
movq 0x228(%rsp), %rax
movq 0x478(%rsp), %rcx
cmpq 0x60(%rcx), %rax
jae 0xc18e4
movq 0x220(%rsp), %rcx
movq 0x478(%rsp), %rax
movq %rcx, 0x68(%rax)
movq 0x228(%rsp), %rcx
movq 0x478(%rsp), %rax
movq %rcx, 0x60(%rax)
jmp 0xc18e6
leaq 0x238(%rsp), %rdi
callq 0xd8c10
jmp 0xc1809
movq 0x478(%rsp), %rdi
addq $0x40, %rdi
callq 0xd8c30
testb $0x1, %al
jne 0xc1bc7
callq 0xd0a0
movl $0x0, (%rax)
movq 0x478(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0xc193e
movq 0x478(%rsp), %rax
cmpq $0x0, 0x68(%rax)
jg 0xc1bc5
callq 0xd8c0
cmpl $0x0, %eax
jne 0xc1bbb
leaq 0x17f(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xdd50
movq 0x38(%rsp), %rdx
leaq 0x26adc(%rip), %rsi     # 0xe8446
leaq 0x180(%rsp), %rdi
callq 0xfae0
jmp 0xc1979
leaq 0x158(%rsp), %rdi
movl $0xfa0, %esi            # imm = 0xFA0
callq 0x11600
jmp 0xc198d
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x158(%rsp), %rdx
callq 0x11510
jmp 0xc19ac
leaq 0x2181e(%rip), %rdx     # 0xe31d1
leaq 0x1c0(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x114c0
jmp 0xc19ca
leaq 0x117(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xdd50
movq 0x30(%rsp), %rdx
leaq 0x279eb(%rip), %rsi     # 0xe93d3
leaq 0x118(%rsp), %rdi
callq 0xfae0
jmp 0xc19f7
leaq 0x21fa6(%rip), %rdx     # 0xe39a4
leaq 0x138(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x114c0
jmp 0xc1a15
leaq 0x1e0(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
leaq 0x138(%rsp), %rdx
callq 0x11510
jmp 0xc1a34
leaq 0x279f1(%rip), %rdx     # 0xe942c
leaq 0x200(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x114c0
jmp 0xc1a52
leaq 0x200(%rsp), %rdi
callq 0x173d0
jmp 0xc1a61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1ba9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1b9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1b8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1b82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1b68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1b5b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1b4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0xc1b41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x200(%rsp), %rdi
callq 0xdf08
leaq 0x1e0(%rsp), %rdi
callq 0xdf08
leaq 0x138(%rsp), %rdi
callq 0xdf08
leaq 0x118(%rsp), %rdi
callq 0xdf08
leaq 0x117(%rsp), %rdi
callq 0xd7a0
leaq 0x1c0(%rsp), %rdi
callq 0xdf08
leaq 0x1a0(%rsp), %rdi
callq 0xdf08
leaq 0x158(%rsp), %rdi
callq 0xdf08
leaq 0x180(%rsp), %rdi
callq 0xdf08
leaq 0x17f(%rsp), %rdi
callq 0xd7a0
jmp 0xc1f21
movl $0x1, %edi
callq 0xd8e0
jmp 0xc1bc7
leaq 0x490(%rsp), %rdi
callq 0xd8c80
movq 0x488(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x108(%rsp)
movq 0x90(%rsp), %rdi
movq 0x108(%rsp), %rax
movq %rax, 0x28(%rsp)
addq $0x8, %rdi
callq 0xd8a80
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jae 0xc1e11
movq 0x90(%rsp), %rdi
addq $0x8, %rdi
movq 0x108(%rsp), %rsi
callq 0xd8aa0
movq %rax, 0x20(%rsp)
jmp 0xc1c37
movq 0x20(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x478(%rsp), %rdi
movq 0x100(%rsp), %rsi
callq 0xc0900
movb %al, 0x1f(%rsp)
jmp 0xc1c5f
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0xc1c6e
jmp 0xc1c69
jmp 0xc1df8
movb $0x0, 0xff(%rsp)
movq 0x100(%rsp), %rdi
movq 0x478(%rsp), %rsi
callq 0xc0d20
movl %eax, 0x18(%rsp)
jmp 0xc1c91
movl 0x18(%rsp), %eax
movl %eax, 0xf8(%rsp)
leaq 0x490(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rdi
callq 0xd8b60
movq %rax, 0xe8(%rsp)
movq 0xf0(%rsp), %rdi
callq 0xd8b90
movq %rax, 0xe0(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0xd8bc0
testb $0x1, %al
jne 0xc1cf4
jmp 0xc1d98
leaq 0xe8(%rsp), %rdi
callq 0xd8c00
movq (%rax), %rax
movq %rax, 0xd8(%rsp)
movq 0xd8(%rsp), %rdi
movq 0x100(%rsp), %rsi
callq 0xc0900
movb %al, 0x17(%rsp)
jmp 0xc1d27
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0xc1d31
jmp 0xc1d84
movq 0x100(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0xc0d20
movl %eax, 0x10(%rsp)
jmp 0xc1d4c
movq 0xd8(%rsp), %rdi
movq 0x478(%rsp), %rsi
callq 0xc0d20
movl %eax, 0xc(%rsp)
jmp 0xc1d67
movl 0xc(%rsp), %ecx
movl 0x10(%rsp), %eax
addl %ecx, %eax
cmpl 0xf8(%rsp), %eax
jle 0xc1d84
movb $0x1, 0xff(%rsp)
jmp 0xc1d98
jmp 0xc1d86
leaq 0xe8(%rsp), %rdi
callq 0xd8c10
jmp 0xc1cd6
testb $0x1, 0xff(%rsp)
je 0xc1da4
jmp 0xc1e11
movq 0x100(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0x490(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0xd8ca0
jmp 0xc1dcb
movq 0x100(%rsp), %rdi
addq $0x40, %rdi
movq 0x478(%rsp), %rax
movq %rax, 0xc8(%rsp)
leaq 0xc8(%rsp), %rsi
callq 0xd8ca0
jmp 0xc1df6
jmp 0xc1df8
movq 0x108(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x108(%rsp)
jmp 0xc1be8
jmp 0xc1e13
movq 0x488(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x488(%rsp)
jmp 0xc119a
movq 0x90(%rsp), %rax
movq $0x0, 0xc0(%rsp)
movq $0x0, 0xb8(%rsp)
addq $0x8, %rax
movq %rax, 0xb0(%rsp)
movq 0xb0(%rsp), %rdi
callq 0xd8ce0
movq %rax, 0xa8(%rsp)
movq 0xb0(%rsp), %rdi
callq 0xd8d10
movq %rax, 0xa0(%rsp)
leaq 0xa8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0xd8d40
testb $0x1, %al
jne 0xc1e9d
jmp 0xc1efc
leaq 0xa8(%rsp), %rdi
callq 0xd8d80
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rax
movq 0x68(%rax), %rsi
leaq 0xb8(%rsp), %rdi
callq 0xd8d90
movb %al, 0xb(%rsp)
jmp 0xc1ed1
movb 0xb(%rsp), %al
testb $0x1, %al
jne 0xc1edb
jmp 0xc1eeb
movq 0x98(%rsp), %rax
movq %rax, 0xc0(%rsp)
jmp 0xc1eed
leaq 0xa8(%rsp), %rdi
callq 0xd8dd0
jmp 0xc1e82
movq 0xc0(%rsp), %rax
movq %rax, (%rsp)
leaq 0x490(%rsp), %rdi
callq 0xd8df0
movq (%rsp), %rax
addq $0x4b8, %rsp            # imm = 0x4B8
retq
leaq 0x490(%rsp), %rdi
callq 0xd8df0
movq 0x470(%rsp), %rdi
callq 0xdd40
nopl (%rax,%rax)