// File: Kingsford-Group[P]ghost2/src/GHOST.cpp
// Function: computeAlignment(ConfigData)
void computeAlignment(ConfigData c)
{
  // read in graphs
  Graph G,H;
  if(c.Ggraph.substr(c.Ggraph.size()-5) == ".gexf")
    G = readFromGexf(c.Ggraph, c.directed);
  else if(c.Ggraph.substr(c.Ggraph.size()-4) == ".net")
    G = readFromNet(c.Ggraph, c.directed);
  else {cout << "bad extension: " << c.Ggraph << "\n"; exit(0);}

  if(c.Hgraph.substr(c.Hgraph.size()-5) == ".gexf")
    H = readFromGexf(c.Hgraph, c.directed);
  else if(c.Hgraph.substr(c.Hgraph.size()-4) == ".net")
    H = readFromNet(c.Hgraph, c.directed);
  else {cout << "bad extension: " << c.Hgraph << "\n"; exit(0);}

  // if all but localImprove already done, skip to localImprove
  if(c.AlignFile != "")
  {
    bmap align = readAlignment(c.AlignFile);
    printICS(G, H, align);
    if(c.searchiter != 0){
      // get evalues if given
      blastMap *evals = new blastMap;
      if(c.SeqScores == "")
        evals = NULL;
      else
        *evals = getBlastMap(c.SeqScores);
      localImprove(G, H, evals, &align, c.searchiter, c.ratio, c.numProcessors);
      printICS(G, H, align);
      delete evals;
    }
    return;
  }

  // read in evals
  blastMap *evals = new blastMap;
  if(c.SeqScores == "")
    evals = NULL;
  else
    *evals = getBlastMap(c.SeqScores);

  // generate distances
  vector<D_alpha> dist;
  if(c.DistFile == "")
  {
      // if user wants to generate the alternate dists, do so here
      if(c.alternateDistances)
      {
        writeAlternateDistances(&G, &H);
        c.DistFile=G.getName()+"_vs_"+H.getName()+".df";
      }
      else
      {
        // compute spectral signatures of both graphs
        if(c.Gsigs == "")
        {
          computeSpectralSignatures(&G, c.hops, c.numProcessors, c.SigApprox);
          c.Gsigs = (G.getName() + ".sig.gz");
        }
        else
        {
          unsigned start = c.Gsigs.find_last_of("/");
          if(start == string::npos) start = -1;
          string name = c.Gsigs.substr(start+1);
          if(name != (G.getName() + ".sig.gz"))
          {
            cout << "file: " << c.Gsigs << " does match the network file name.\n" <<
            "please correct before continuing.";
            exit(0);
          }
        }
        if(c.Hsigs == "")
        {
          computeSpectralSignatures(&H, c.hops, c.numProcessors, c.SigApprox);
          c.Hsigs = (H.getName() + ".sig.gz");
        }
        else
        {
          unsigned start = c.Hsigs.find_last_of("/");
          if(start == string::npos) start = -1;
          string name = c.Hsigs.substr(start+1);
          if(name != (H.getName() + ".sig.gz"))
          {
            cout << "file: " << c.Hsigs << " does match the network file name.\n" <<
            "please correct before continuing.";
            exit(0);
          }
        }
        if(c.dumpSignatures) return;
      }

      // undirected for second half
      G.direct(false); H.direct(false);

      dist =
          getDistances(c.Gsigs, c.Hsigs, (G.getName()+"_vs_"+H.getName()+".sdf"),
                  c.alpha, c.beta, evals , c.numProcessors);
      if(c.dumpDistances) { delete evals; return; }
  }
  else
      dist = getDistancesFromFile(c.DistFile, c.alpha, c.beta, evals);

  // align graphs
  bmap f = alignGraphs(G, H, dist, c.nneighbors, c.seedSkip);
  localImprove(G, H, evals, &f, c.searchiter, c.ratio, c.numProcessors);
  printICS(G, H, f);
  delete evals;
  printMap(f, G.getName(), H.getName());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xbb0, %rsp            # imm = 0xBB0
movq %rdi, -0xad8(%rbp)
movq %rdi, -0x8(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x23b50
leaq -0x118(%rbp), %rdi
callq 0x23b50
jmp 0x20f70
movq -0xad8(%rbp), %rdi
callq 0x104f0
movq -0xad8(%rbp), %rsi
movq %rax, %rdx
addq $-0x5, %rdx
leaq -0x148(%rbp), %rdi
movq $-0x1, %rcx
callq 0x10740
jmp 0x20f9f
leaq 0x9b7be(%rip), %rsi     # 0xbc764
leaq -0x148(%rbp), %rdi
callq 0x233d0
movb %al, -0xad9(%rbp)
jmp 0x20fba
leaq -0x148(%rbp), %rdi
callq 0x10460
movb -0xad9(%rbp), %al
testb $0x1, %al
jne 0x20fd5
jmp 0x210b4
movq -0xad8(%rbp), %rsi
leaq -0x1f0(%rbp), %rdi
callq 0x10300
jmp 0x20fea
movq -0xad8(%rbp), %rax
movzbl 0x133(%rax), %edx
andl $0x1, %edx
leaq -0x1d0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x138f0
jmp 0x21010
leaq -0x90(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x2b1e0
leaq -0x1d0(%rbp), %rdi
callq 0x23d50
leaq -0x1f0(%rbp), %rdi
callq 0x10460
jmp 0x21220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x225a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x2259b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq -0xad8(%rbp), %rdi
callq 0x104f0
movq -0xad8(%rbp), %rsi
movq %rax, %rdx
addq $-0x4, %rdx
leaq -0x210(%rbp), %rdi
movq $-0x1, %rcx
callq 0x10740
jmp 0x210e3
leaq 0x9b6d6(%rip), %rsi     # 0xbc7c0
leaq -0x210(%rbp), %rdi
callq 0x233d0
movb %al, -0xada(%rbp)
jmp 0x210fe
leaq -0x210(%rbp), %rdi
callq 0x10460
movb -0xada(%rbp), %al
testb $0x1, %al
jne 0x21119
jmp 0x211ca
movq -0xad8(%rbp), %rsi
leaq -0x2b8(%rbp), %rdi
callq 0x10300
jmp 0x2112e
movq -0xad8(%rbp), %rax
movzbl 0x133(%rax), %edx
andl $0x1, %edx
leaq -0x298(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x13d70
jmp 0x21154
leaq -0x90(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x2b1e0
leaq -0x298(%rbp), %rdi
callq 0x23d50
leaq -0x2b8(%rbp), %rdi
callq 0x10460
jmp 0x2121e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq 0x10fdc7(%rip), %rdi    # 0x130f98
leaq 0x9b825(%rip), %rsi     # 0xbc9fd
callq 0x106c0
movq %rax, -0xae8(%rbp)
jmp 0x211e6
movq -0xad8(%rbp), %rsi
movq -0xae8(%rbp), %rdi
callq 0x10600
movq %rax, -0xaf0(%rbp)
jmp 0x21202
movq -0xaf0(%rbp), %rdi
leaq 0x9b3f7(%rip), %rsi     # 0xbc607
callq 0x106c0
jmp 0x21217
xorl %edi, %edi
callq 0x10890
jmp 0x21220
movq -0xad8(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0xaf8(%rbp)
callq 0x104f0
movq -0xaf8(%rbp), %rsi
movq %rax, %rdx
addq $-0x5, %rdx
leaq -0x2d8(%rbp), %rdi
movq $-0x1, %rcx
callq 0x10740
jmp 0x2125a
leaq 0x9b503(%rip), %rsi     # 0xbc764
leaq -0x2d8(%rbp), %rdi
callq 0x233d0
movb %al, -0xaf9(%rbp)
jmp 0x21275
leaq -0x2d8(%rbp), %rdi
callq 0x10460
movb -0xaf9(%rbp), %al
testb $0x1, %al
jne 0x21290
jmp 0x21345
movq -0xad8(%rbp), %rsi
addq $0x20, %rsi
leaq -0x380(%rbp), %rdi
callq 0x10300
jmp 0x212a9
movq -0xad8(%rbp), %rax
movzbl 0x133(%rax), %edx
andl $0x1, %edx
leaq -0x360(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x138f0
jmp 0x212cf
leaq -0x118(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x2b1e0
leaq -0x360(%rbp), %rdi
callq 0x23d50
leaq -0x380(%rbp), %rdi
callq 0x10460
jmp 0x214c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq -0xad8(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0xb08(%rbp)
callq 0x104f0
movq -0xb08(%rbp), %rsi
movq %rax, %rdx
addq $-0x4, %rdx
leaq -0x3a0(%rbp), %rdi
movq $-0x1, %rcx
callq 0x10740
jmp 0x2137f
leaq 0x9b43a(%rip), %rsi     # 0xbc7c0
leaq -0x3a0(%rbp), %rdi
callq 0x233d0
movb %al, -0xb09(%rbp)
jmp 0x2139a
leaq -0x3a0(%rbp), %rdi
callq 0x10460
movb -0xb09(%rbp), %al
testb $0x1, %al
jne 0x213b5
jmp 0x2146a
movq -0xad8(%rbp), %rsi
addq $0x20, %rsi
leaq -0x448(%rbp), %rdi
callq 0x10300
jmp 0x213ce
movq -0xad8(%rbp), %rax
movzbl 0x133(%rax), %edx
andl $0x1, %edx
leaq -0x428(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x13d70
jmp 0x213f4
leaq -0x118(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x2b1e0
leaq -0x428(%rbp), %rdi
callq 0x23d50
leaq -0x448(%rbp), %rdi
callq 0x10460
jmp 0x214c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x448(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq 0x10fb27(%rip), %rdi    # 0x130f98
leaq 0x9b585(%rip), %rsi     # 0xbc9fd
callq 0x106c0
movq %rax, -0xb18(%rbp)
jmp 0x21486
movq -0xb18(%rbp), %rdi
movq -0xad8(%rbp), %rsi
addq $0x20, %rsi
callq 0x10600
movq %rax, -0xb20(%rbp)
jmp 0x214a6
movq -0xb20(%rbp), %rdi
leaq 0x9b153(%rip), %rsi     # 0xbc607
callq 0x106c0
jmp 0x214bb
xorl %edi, %edi
callq 0x10890
jmp 0x214c4
movq -0xad8(%rbp), %rdi
addq $0xa0, %rdi
leaq 0x9b3b3(%rip), %rsi     # 0xbc88c
callq 0x23540
movb %al, -0xb21(%rbp)
jmp 0x214e6
movb -0xb21(%rbp), %al
testb $0x1, %al
jne 0x214f5
jmp 0x21767
movq -0xad8(%rbp), %rsi
addq $0xa0, %rsi
leaq -0x510(%rbp), %rdi
callq 0x10300
jmp 0x21511
leaq -0x4f0(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x20b90
jmp 0x21526
leaq -0x510(%rbp), %rdi
callq 0x10460
leaq -0x90(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x4f0(%rbp), %rdx
callq 0x1f120
jmp 0x2154e
movq -0xad8(%rbp), %rax
cmpl $0x0, 0x10c(%rax)
je 0x2173b
movl $0x30, %edi
callq 0x106e0
movq %rax, -0xb30(%rbp)
jmp 0x21575
movq -0xb30(%rbp), %rdi
callq 0x266b0
jmp 0x21583
movq -0xad8(%rbp), %rdi
movq -0xb30(%rbp), %rax
movq %rax, -0x518(%rbp)
subq $-0x80, %rdi
leaq 0x9b2e9(%rip), %rsi     # 0xbc88c
callq 0x233d0
movb %al, -0xb31(%rbp)
jmp 0x215b0
movb -0xb31(%rbp), %al
testb $0x1, %al
jne 0x215bc
jmp 0x2162e
movq $0x0, -0x518(%rbp)
jmp 0x216ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x510(%rbp), %rdi
callq 0x10460
jmp 0x2259b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x21756
movq -0xb30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
movl $0x30, %esi
callq 0x10710
jmp 0x21756
movq -0xad8(%rbp), %rsi
subq $-0x80, %rsi
leaq -0x568(%rbp), %rdi
callq 0x10300
jmp 0x21647
leaq -0x548(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0x17040
jmp 0x2165c
movq -0x518(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0x2b250
leaq -0x548(%rbp), %rdi
callq 0x26810
leaq -0x568(%rbp), %rdi
callq 0x10460
jmp 0x216ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x10460
jmp 0x21756
movq -0xad8(%rbp), %rax
movq -0x518(%rbp), %rdx
movl 0x100(%rax), %r9d
movl 0x10c(%rax), %r8d
movsd 0x120(%rax), %xmm0
leaq -0x90(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x4f0(%rbp), %rcx
callq 0x20810
jmp 0x216ec
leaq -0x90(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x4f0(%rbp), %rdx
callq 0x1f120
jmp 0x21708
movq -0x518(%rbp), %rax
movq %rax, -0xb40(%rbp)
cmpq $0x0, %rax
je 0x21739
movq -0xb40(%rbp), %rdi
callq 0x26810
movq -0xb40(%rbp), %rdi
movl $0x30, %esi
callq 0x10710
jmp 0x2173b
movl $0x1, -0x56c(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x29ca0
jmp 0x224f0
leaq -0x4f0(%rbp), %rdi
callq 0x29ca0
jmp 0x2259b
movl $0x30, %edi
callq 0x106e0
movq %rax, -0xb48(%rbp)
jmp 0x2177a
movq -0xb48(%rbp), %rdi
callq 0x266b0
jmp 0x21788
movq -0xad8(%rbp), %rdi
movq -0xb48(%rbp), %rax
movq %rax, -0x578(%rbp)
subq $-0x80, %rdi
leaq 0x9b0e4(%rip), %rsi     # 0xbc88c
callq 0x233d0
movb %al, -0xb49(%rbp)
jmp 0x217b5
movb -0xb49(%rbp), %al
testb $0x1, %al
jne 0x217c1
jmp 0x217f9
movq $0x0, -0x578(%rbp)
jmp 0x21877
movq -0xb48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
movl $0x30, %esi
callq 0x10710
jmp 0x2259b
movq -0xad8(%rbp), %rsi
subq $-0x80, %rsi
leaq -0x5c8(%rbp), %rdi
callq 0x10300
jmp 0x21812
leaq -0x5a8(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
callq 0x17040
jmp 0x21827
movq -0x578(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x2b250
leaq -0x5a8(%rbp), %rdi
callq 0x26810
leaq -0x5c8(%rbp), %rdi
callq 0x10460
jmp 0x21877
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x5c8(%rbp), %rdi
callq 0x10460
jmp 0x2259b
leaq -0x5e0(%rbp), %rdi
callq 0x27ed0
movq -0xad8(%rbp), %rdi
addq $0xc0, %rdi
leaq 0x9aff4(%rip), %rsi     # 0xbc88c
callq 0x233d0
movb %al, -0xb4a(%rbp)
jmp 0x218a5
movb -0xb4a(%rbp), %al
testb $0x1, %al
jne 0x218b4
jmp 0x222ea
movq -0xad8(%rbp), %rax
testb $0x1, 0x132(%rax)
je 0x21a50
leaq -0x90(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x1a3b0
jmp 0x218dd
leaq -0x660(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x23c90
jmp 0x218f2
leaq 0x9b04f(%rip), %rdx     # 0xbc948
leaq -0x640(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x23850
jmp 0x2190e
leaq -0x680(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x23c90
jmp 0x21923
leaq -0x620(%rbp), %rdi
leaq -0x640(%rbp), %rsi
leaq -0x680(%rbp), %rdx
callq 0x28320
jmp 0x2193f
leaq 0x9b007(%rip), %rdx     # 0xbc94d
leaq -0x600(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0x23850
jmp 0x2195b
movq -0xad8(%rbp), %rdi
addq $0xc0, %rdi
leaq -0x600(%rbp), %rsi
callq 0x108a0
leaq -0x600(%rbp), %rdi
callq 0x10460
leaq -0x620(%rbp), %rdi
callq 0x10460
leaq -0x680(%rbp), %rdi
callq 0x10460
leaq -0x640(%rbp), %rdi
callq 0x10460
leaq -0x660(%rbp), %rdi
callq 0x10460
jmp 0x2201d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x2258f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x21a3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x21a33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x21a27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x10460
leaq -0x680(%rbp), %rdi
callq 0x10460
leaq -0x640(%rbp), %rdi
callq 0x10460
leaq -0x660(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq -0xad8(%rbp), %rdi
addq $0x40, %rdi
leaq 0x9ae2a(%rip), %rsi     # 0xbc88c
callq 0x233d0
movb %al, -0xb4b(%rbp)
jmp 0x21a6f
movb -0xb4b(%rbp), %al
testb $0x1, %al
jne 0x21a7e
jmp 0x21b8a
movq -0xad8(%rbp), %rsi
movl 0x100(%rsi), %eax
movl %eax, -0xb54(%rbp)
movl 0x104(%rsi), %eax
movl %eax, -0xb50(%rbp)
addq $0xe0, %rsi
leaq -0x6a0(%rbp), %rdi
callq 0x10300
jmp 0x21ab2
movl -0xb54(%rbp), %edx
movl -0xb50(%rbp), %esi
leaq -0x90(%rbp), %rdi
leaq -0x6a0(%rbp), %rcx
callq 0x166c0
jmp 0x21ad3
leaq -0x6a0(%rbp), %rdi
callq 0x10460
leaq -0x6e0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x23c90
jmp 0x21af4
leaq 0x9acf9(%rip), %rdx     # 0xbc7f4
leaq -0x6c0(%rbp), %rdi
leaq -0x6e0(%rbp), %rsi
callq 0x23850
jmp 0x21b10
movq -0xad8(%rbp), %rdi
addq $0x40, %rdi
leaq -0x6c0(%rbp), %rsi
callq 0x108a0
leaq -0x6c0(%rbp), %rdi
callq 0x10460
leaq -0x6e0(%rbp), %rdi
callq 0x10460
jmp 0x21d26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x6a0(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x6e0(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq -0xad8(%rbp), %rdi
addq $0x40, %rdi
leaq 0x9a93d(%rip), %rsi     # 0xbc4d9
movq $-0x1, %rdx
callq 0x10650
movl %eax, -0x6e4(%rbp)
movl -0x6e4(%rbp), %eax
cmpq $-0x1, %rax
jne 0x21bc4
movl $0xffffffff, -0x6e4(%rbp) # imm = 0xFFFFFFFF
movq -0xad8(%rbp), %rsi
addq $0x40, %rsi
movl -0x6e4(%rbp), %eax
incl %eax
movl %eax, %edx
leaq -0x708(%rbp), %rdi
movq $-0x1, %rcx
callq 0x10740
jmp 0x21bee
leaq -0x748(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x23c90
jmp 0x21c03
leaq 0x9abea(%rip), %rdx     # 0xbc7f4
leaq -0x728(%rbp), %rdi
leaq -0x748(%rbp), %rsi
callq 0x23850
jmp 0x21c1f
leaq -0x708(%rbp), %rdi
leaq -0x728(%rbp), %rsi
callq 0x2b290
movb %al, -0xb55(%rbp)
leaq -0x728(%rbp), %rdi
callq 0x10460
leaq -0x748(%rbp), %rdi
callq 0x10460
movb -0xb55(%rbp), %al
testb $0x1, %al
jne 0x21c5f
jmp 0x21d07
movq 0x10f332(%rip), %rdi    # 0x130f98
leaq 0x9aaf0(%rip), %rsi     # 0xbc75d
callq 0x106c0
movq %rax, -0xb60(%rbp)
jmp 0x21c7b
movq -0xb60(%rbp), %rdi
movq -0xad8(%rbp), %rsi
addq $0x40, %rsi
callq 0x10600
movq %rax, -0xb68(%rbp)
jmp 0x21c9b
movq -0xb68(%rbp), %rdi
leaq 0x9ad64(%rip), %rsi     # 0xbca0d
callq 0x106c0
movq %rax, -0xb70(%rbp)
jmp 0x21cb7
movq -0xb70(%rbp), %rdi
leaq 0x9ad6c(%rip), %rsi     # 0xbca31
callq 0x106c0
jmp 0x21ccc
xorl %edi, %edi
callq 0x10890
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x21d15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x748(%rbp), %rdi
callq 0x10460
jmp 0x21d15
leaq -0x708(%rbp), %rdi
callq 0x10460
jmp 0x21d26
leaq -0x708(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq -0xad8(%rbp), %rdi
addq $0x60, %rdi
leaq 0x9ab54(%rip), %rsi     # 0xbc88c
callq 0x233d0
movb %al, -0xb71(%rbp)
jmp 0x21d45
movb -0xb71(%rbp), %al
testb $0x1, %al
jne 0x21d54
jmp 0x21e60
movq -0xad8(%rbp), %rsi
movl 0x100(%rsi), %eax
movl %eax, -0xb7c(%rbp)
movl 0x104(%rsi), %eax
movl %eax, -0xb78(%rbp)
addq $0xe0, %rsi
leaq -0x768(%rbp), %rdi
callq 0x10300
jmp 0x21d88
movl -0xb7c(%rbp), %edx
movl -0xb78(%rbp), %esi
leaq -0x118(%rbp), %rdi
leaq -0x768(%rbp), %rcx
callq 0x166c0
jmp 0x21da9
leaq -0x768(%rbp), %rdi
callq 0x10460
leaq -0x7a8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x23c90
jmp 0x21dca
leaq 0x9aa23(%rip), %rdx     # 0xbc7f4
leaq -0x788(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0x23850
jmp 0x21de6
movq -0xad8(%rbp), %rdi
addq $0x60, %rdi
leaq -0x788(%rbp), %rsi
callq 0x108a0
leaq -0x788(%rbp), %rdi
callq 0x10460
leaq -0x7a8(%rbp), %rdi
callq 0x10460
jmp 0x21ffc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x7a8(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq -0xad8(%rbp), %rdi
addq $0x60, %rdi
leaq 0x9a667(%rip), %rsi     # 0xbc4d9
movq $-0x1, %rdx
callq 0x10650
movl %eax, -0x7ac(%rbp)
movl -0x7ac(%rbp), %eax
cmpq $-0x1, %rax
jne 0x21e9a
movl $0xffffffff, -0x7ac(%rbp) # imm = 0xFFFFFFFF
movq -0xad8(%rbp), %rsi
addq $0x60, %rsi
movl -0x7ac(%rbp), %eax
incl %eax
movl %eax, %edx
leaq -0x7d0(%rbp), %rdi
movq $-0x1, %rcx
callq 0x10740
jmp 0x21ec4
leaq -0x810(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x23c90
jmp 0x21ed9
leaq 0x9a914(%rip), %rdx     # 0xbc7f4
leaq -0x7f0(%rbp), %rdi
leaq -0x810(%rbp), %rsi
callq 0x23850
jmp 0x21ef5
leaq -0x7d0(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
callq 0x2b290
movb %al, -0xb7d(%rbp)
leaq -0x7f0(%rbp), %rdi
callq 0x10460
leaq -0x810(%rbp), %rdi
callq 0x10460
movb -0xb7d(%rbp), %al
testb $0x1, %al
jne 0x21f35
jmp 0x21fdd
movq 0x10f05c(%rip), %rdi    # 0x130f98
leaq 0x9a81a(%rip), %rsi     # 0xbc75d
callq 0x106c0
movq %rax, -0xb88(%rbp)
jmp 0x21f51
movq -0xb88(%rbp), %rdi
movq -0xad8(%rbp), %rsi
addq $0x60, %rsi
callq 0x10600
movq %rax, -0xb90(%rbp)
jmp 0x21f71
movq -0xb90(%rbp), %rdi
leaq 0x9aa8e(%rip), %rsi     # 0xbca0d
callq 0x106c0
movq %rax, -0xb98(%rbp)
jmp 0x21f8d
movq -0xb98(%rbp), %rdi
leaq 0x9aa96(%rip), %rsi     # 0xbca31
callq 0x106c0
jmp 0x21fa2
xorl %edi, %edi
callq 0x10890
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x21feb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x810(%rbp), %rdi
callq 0x10460
jmp 0x21feb
leaq -0x7d0(%rbp), %rdi
callq 0x10460
jmp 0x21ffc
leaq -0x7d0(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq -0xad8(%rbp), %rax
testb $0x1, 0x130(%rax)
je 0x2201b
movl $0x1, -0x56c(%rbp)
jmp 0x224e4
jmp 0x2201d
leaq -0x90(%rbp), %rdi
xorl %esi, %esi
callq 0x23bb0
jmp 0x2202d
leaq -0x118(%rbp), %rdi
xorl %esi, %esi
callq 0x23bb0
jmp 0x2203d
movq -0xad8(%rbp), %rsi
addq $0x40, %rsi
leaq -0x848(%rbp), %rdi
callq 0x10300
jmp 0x22056
movq -0xad8(%rbp), %rsi
addq $0x60, %rsi
leaq -0x868(%rbp), %rdi
callq 0x10300
jmp 0x2206f
leaq -0x8e8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x23c90
jmp 0x22084
leaq 0x9a8bd(%rip), %rdx     # 0xbc948
leaq -0x8c8(%rbp), %rdi
leaq -0x8e8(%rbp), %rsi
callq 0x23850
jmp 0x220a0
leaq -0x908(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x23c90
jmp 0x220b5
leaq -0x8a8(%rbp), %rdi
leaq -0x8c8(%rbp), %rsi
leaq -0x908(%rbp), %rdx
callq 0x28320
jmp 0x220d1
leaq 0x9a97b(%rip), %rdx     # 0xbca53
leaq -0x888(%rbp), %rdi
leaq -0x8a8(%rbp), %rsi
callq 0x23850
jmp 0x220ed
movq -0xad8(%rbp), %rax
movsd 0x110(%rax), %xmm0
movsd 0x118(%rax), %xmm1
movq -0x578(%rbp), %r8
movl 0x100(%rax), %r9d
leaq -0x828(%rbp), %rdi
leaq -0x848(%rbp), %rsi
leaq -0x868(%rbp), %rdx
leaq -0x888(%rbp), %rcx
callq 0x18fe0
jmp 0x22135
leaq -0x5e0(%rbp), %rdi
leaq -0x828(%rbp), %rsi
callq 0x29630
leaq -0x828(%rbp), %rdi
callq 0x27ff0
leaq -0x888(%rbp), %rdi
callq 0x10460
leaq -0x8a8(%rbp), %rdi
callq 0x10460
leaq -0x908(%rbp), %rdi
callq 0x10460
leaq -0x8c8(%rbp), %rdi
callq 0x10460
leaq -0x8e8(%rbp), %rdi
callq 0x10460
leaq -0x868(%rbp), %rdi
callq 0x10460
leaq -0x848(%rbp), %rdi
callq 0x10460
movq -0xad8(%rbp), %rax
testb $0x1, 0x131(%rax)
je 0x222e5
movq -0x578(%rbp), %rax
movq %rax, -0xba0(%rbp)
cmpq $0x0, %rax
je 0x221ed
movq -0xba0(%rbp), %rdi
callq 0x26810
movq -0xba0(%rbp), %rdi
movl $0x30, %esi
callq 0x10710
movl $0x1, -0x56c(%rbp)
jmp 0x224e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x222d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x222c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x222bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x222b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x222a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x22298
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x888(%rbp), %rdi
callq 0x10460
leaq -0x8a8(%rbp), %rdi
callq 0x10460
leaq -0x908(%rbp), %rdi
callq 0x10460
leaq -0x8c8(%rbp), %rdi
callq 0x10460
leaq -0x8e8(%rbp), %rdi
callq 0x10460
leaq -0x868(%rbp), %rdi
callq 0x10460
leaq -0x848(%rbp), %rdi
callq 0x10460
jmp 0x2258f
jmp 0x22389
movq -0xad8(%rbp), %rsi
addq $0xc0, %rsi
leaq -0x940(%rbp), %rdi
callq 0x10300
jmp 0x22306
movq -0xad8(%rbp), %rax
movsd 0x110(%rax), %xmm0
movsd 0x118(%rax), %xmm1
movq -0x578(%rbp), %rdx
leaq -0x920(%rbp), %rdi
leaq -0x940(%rbp), %rsi
callq 0x19b30
jmp 0x22339
leaq -0x5e0(%rbp), %rdi
leaq -0x920(%rbp), %rsi
callq 0x29630
leaq -0x920(%rbp), %rdi
callq 0x27ff0
leaq -0x940(%rbp), %rdi
callq 0x10460
jmp 0x22389
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x940(%rbp), %rdi
callq 0x10460
jmp 0x2258f
movq -0xad8(%rbp), %rax
movl 0x108(%rax), %r8d
movsd 0x128(%rax), %xmm0
leaq -0x9e8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0x118(%rbp), %rdx
leaq -0x5e0(%rbp), %rcx
callq 0x1f830
jmp 0x223c2
movq -0xad8(%rbp), %rax
movq -0x578(%rbp), %rdx
movl 0x100(%rax), %r9d
movl 0x10c(%rax), %r8d
movsd 0x120(%rax), %xmm0
leaq -0x90(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x9e8(%rbp), %rcx
callq 0x20810
jmp 0x22402
leaq -0x90(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x9e8(%rbp), %rdx
callq 0x1f120
jmp 0x2241e
movq -0x578(%rbp), %rax
movq %rax, -0xba8(%rbp)
cmpq $0x0, %rax
je 0x2244f
movq -0xba8(%rbp), %rdi
callq 0x26810
movq -0xba8(%rbp), %rdi
movl $0x30, %esi
callq 0x10710
leaq -0xa90(%rbp), %rdi
leaq -0x9e8(%rbp), %rsi
callq 0x2b2c0
jmp 0x22464
leaq -0xab0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x23c90
jmp 0x22479
leaq -0xad0(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x23c90
jmp 0x2248e
leaq -0xa90(%rbp), %rdi
leaq -0xab0(%rbp), %rsi
leaq -0xad0(%rbp), %rdx
callq 0x1ee60
jmp 0x224aa
leaq -0xad0(%rbp), %rdi
callq 0x10460
leaq -0xab0(%rbp), %rdi
callq 0x10460
leaq -0xa90(%rbp), %rdi
callq 0x29ca0
leaq -0x9e8(%rbp), %rdi
callq 0x29ca0
movl $0x0, -0x56c(%rbp)
leaq -0x5e0(%rbp), %rdi
callq 0x27ff0
leaq -0x118(%rbp), %rdi
callq 0x23d50
leaq -0x90(%rbp), %rdi
callq 0x23d50
addq $0xbb0, %rsp            # imm = 0xBB0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x22583
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x22577
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x2256b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0xad0(%rbp), %rdi
callq 0x10460
leaq -0xab0(%rbp), %rdi
callq 0x10460
leaq -0xa90(%rbp), %rdi
callq 0x29ca0
leaq -0x9e8(%rbp), %rdi
callq 0x29ca0
leaq -0x5e0(%rbp), %rdi
callq 0x27ff0
leaq -0x118(%rbp), %rdi
callq 0x23d50
leaq -0x90(%rbp), %rdi
callq 0x23d50
movq -0x120(%rbp), %rdi
callq 0x10cc0
nop