// File: Luthaf[P]zeopp/networkanalysis.cc
// Function: TRAVERSAL_NETWORK::findMaxFreeSphere(std::map<int, int, std::less<int>, std::allocator<std::pair<int const, int>>>*, std::set<int, std::less<int>, std::allocator<int>>*)
pair<bool,PATH> TRAVERSAL_NETWORK::findMaxFreeSphere(map<int,int> *idAliases, set<int> *sourceNodes){
  PATH bestPath; bestPath.max_radius = -1;
  vector<bool> haveVisited = vector<bool> (dnet->nodes.size(), false);
  HEAP<PATH> heap (hasLowerMaxR);
  bool NtoN = false;
  
  // Initialize the stack with all nodes connected to the source nodes
  for(unsigned int i = 0; i < sourceNodeIDs.size(); i++){
    DIJKSTRA_NODE sourceNode = dnet->nodes.at(sourceNodeIDs.at(i));
    vector<CONN> viableConns = connectToSink.at(sourceNode.id);
    for(unsigned int j = 0; j <  viableConns.size(); j++){
      CONN nextConn = viableConns.at(j);
      DIJKSTRA_NODE nextNode = dnet->nodes.at(nextConn.to);
      PATH newPath = PATH(nextNode, nextConn.max_radius, max(sourceNode.max_radius, nextNode.max_radius), nextConn.length);
      newPath.visitedIDs.push_back(sourceNode.id);
      newPath.visitedSourceIDs.insert(idAliases->find(sourceNode.id)->second);
      heap.insert(newPath);
    }
  }
  
  while(heap.size() != 0){
    PATH best = heap.pop();
    
    //Done searching if max radius path leads to sink node
    if(best.toSink){
      best.visitedIDs.push_back(best.currentNode.id);
      bestPath = best;
      break;
    }
    
    // Mark nodes that have been visited or abandon current path if node
    // already visited
    if(haveVisited.at(best.currentNode.id))
      continue;
    else
      haveVisited.at(best.currentNode.id) = true;
    
    if(sourceNodes->find(best.currentNode.id) != sourceNodes->end()){
      int origID = idAliases->find(best.currentNode.id)->second;
      if(best.visitedSourceIDs.find(origID) != best.visitedSourceIDs.end()){
	best.visitedIDs.push_back(best.currentNode.id);
	bestPath = best;
	NtoN = true;
	break;
      }
      else{
	best.visitedSourceIDs.insert(origID);
      }	
    }
    best.visitedIDs.push_back(best.currentNode.id);
    
    // Add all nodes that are connected within the unit cell to the stack
    vector<CONN> regConns = regConnections.at(best.currentNode.id);
    for(unsigned int i = 0; i < regConns.size(); i++){
      CONN nextConn = regConns.at(i);
      if(!haveVisited.at(nextConn.to)){
	DIJKSTRA_NODE nextNode = dnet->nodes[nextConn.to];
	PATH nextPath = PATH(nextNode,min(best.max_radius,nextConn.max_radius), max(best.max_inc_radius, nextNode.max_radius), best.length + nextConn.length);
	nextPath.visitedSourceIDs = best.visitedSourceIDs;
	nextPath.visitedIDs = best.visitedIDs;
	heap.insert(nextPath);
      }
    }

    // Add all nodes that are connected in the sink to the stack
    vector<CONN> sinkConns = connectToSink.at(best.currentNode.id);
    for(unsigned int i = 0; i < sinkConns.size(); i++){
      CONN nextConn = sinkConns.at(i);
      DIJKSTRA_NODE nextNode = dnet->nodes[nextConn.to];
      PATH nextPath = PATH(nextNode, min(best.max_radius, nextConn.max_radius), max(best.max_inc_radius, nextNode.max_radius), best.length + nextConn.length);
      nextPath.toSink = true;
      nextPath.visitedIDs = best.visitedIDs;
      nextPath.visitedSourceIDs = best.visitedSourceIDs;
      heap.insert(nextPath);
    }
    
  }
  return pair<bool,PATH> (NtoN,bestPath);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb90, %rsp            # imm = 0xB90
movq %rdi, -0xa58(%rbp)
movq %rdi, %rax
movq %rax, -0xa50(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa48(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x5ce70
movq -0xa48(%rbp), %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, -0x88(%rbp)
movq 0x70(%rax), %rdi
callq 0x10100
movq %rax, -0xa40(%rbp)
movb $0x0, -0x111(%rbp)
leaq -0x112(%rbp), %rdi
movq %rdi, -0xa38(%rbp)
callq 0x64b50
movq -0xa40(%rbp), %rsi
movq -0xa38(%rbp), %rcx
leaq -0x110(%rbp), %rdi
leaq -0x111(%rbp), %rdx
callq 0x64b70
jmp 0x5e448
leaq -0x112(%rbp), %rdi
callq 0x64bf0
leaq -0x101b(%rip), %rsi     # 0x5d440
leaq -0x148(%rbp), %rdi
callq 0x64c10
jmp 0x5e469
movb $0x0, -0x149(%rbp)
movl $0x0, -0x150(%rbp)
movq -0xa48(%rbp), %rdi
movl -0x150(%rbp), %eax
movq %rax, -0xa60(%rbp)
callq 0x10090
movq %rax, %rcx
movq -0xa60(%rbp), %rax
cmpq %rcx, %rax
jae 0x5e89f
movq -0xa48(%rbp), %rdi
movq 0x70(%rdi), %rax
movq %rax, -0xa70(%rbp)
movl -0x150(%rbp), %eax
movl %eax, %esi
callq 0x101d0
movq %rax, -0xa68(%rbp)
jmp 0x5e4ce
movq -0xa70(%rbp), %rdi
movq -0xa68(%rbp), %rax
movslq (%rax), %rsi
callq 0x10130
movq %rax, -0xa78(%rbp)
jmp 0x5e4ed
movq -0xa78(%rbp), %rsi
leaq -0x198(%rbp), %rdi
callq 0x64400
jmp 0x5e502
movq -0xa48(%rbp), %rdi
addq $0x48, %rdi
movslq -0x198(%rbp), %rsi
callq 0x64a20
movq %rax, -0xa80(%rbp)
jmp 0x5e522
movq -0xa80(%rbp), %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x64a60
jmp 0x5e537
movl $0x0, -0x1b4(%rbp)
movl -0x1b4(%rbp), %eax
movq %rax, -0xa88(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x2a9e0
movq %rax, %rcx
movq -0xa88(%rbp), %rax
cmpq %rcx, %rax
jae 0x5e856
movl -0x1b4(%rbp), %eax
movl %eax, %esi
leaq -0x1b0(%rbp), %rdi
callq 0x64470
movq %rax, -0xa90(%rbp)
jmp 0x5e58a
movq -0xa48(%rbp), %rax
movq -0xa90(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq %rdx, -0x1c0(%rbp)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movaps %xmm1, -0x1d0(%rbp)
movaps %xmm0, -0x1e0(%rbp)
movq 0x70(%rax), %rdi
movslq -0x1dc(%rbp), %rsi
callq 0x10130
movq %rax, -0xa98(%rbp)
jmp 0x5e5d1
movq -0xa98(%rbp), %rsi
leaq -0x228(%rbp), %rdi
callq 0x64400
jmp 0x5e5e6
leaq -0x338(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x64400
jmp 0x5e5fb
movsd -0x1d0(%rbp), %xmm0
movsd %xmm0, -0xaa8(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x64c70
movq %rax, -0xaa0(%rbp)
jmp 0x5e627
movsd -0xaa8(%rbp), %xmm0
movq -0xaa0(%rbp), %rax
movsd (%rax), %xmm1
movsd -0x1d8(%rbp), %xmm2
leaq -0x2f0(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x5cfa0
jmp 0x5e657
leaq -0x338(%rbp), %rdi
callq 0x100e0
leaq -0x270(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xd1b0
jmp 0x5e678
leaq -0x258(%rbp), %rax
movq %rax, -0xab8(%rbp)
movq -0x18(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x102e0
movq %rax, -0xab0(%rbp)
jmp 0x5e69f
movq -0xab0(%rbp), %rax
movq %rax, -0x340(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x10350
movq -0xab8(%rbp), %rdi
movq %rax, %rsi
addq $0x4, %rsi
callq 0xf300
movb %dl, -0xac1(%rbp)
movq %rax, -0xac0(%rbp)
jmp 0x5e6db
movb -0xac1(%rbp), %al
movq -0xac0(%rbp), %rcx
movq %rcx, -0x350(%rbp)
movb %al, -0x348(%rbp)
leaq -0x418(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x64d10
jmp 0x5e70a
leaq -0x148(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x64cb0
jmp 0x5e71f
leaq -0x418(%rbp), %rdi
callq 0x10df0
leaq -0x2f0(%rbp), %rdi
callq 0x10df0
leaq -0x228(%rbp), %rdi
callq 0x100e0
movl -0x1b4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1b4(%rbp)
jmp 0x5e541
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x112(%rbp), %rdi
callq 0x64bf0
jmp 0x5f1fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5f1f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5f1e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5e88e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5e882
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5e848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x100e0
jmp 0x5e848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5e83c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x10df0
leaq -0x2f0(%rbp), %rdi
callq 0x10df0
leaq -0x228(%rbp), %rdi
callq 0x100e0
jmp 0x5e882
leaq -0x1b0(%rbp), %rdi
callq 0x11230
leaq -0x198(%rbp), %rdi
callq 0x100e0
movl -0x150(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x150(%rbp)
jmp 0x5e47a
leaq -0x1b0(%rbp), %rdi
callq 0x11230
leaq -0x198(%rbp), %rdi
callq 0x100e0
jmp 0x5f1e4
jmp 0x5e8a1
leaq -0x148(%rbp), %rdi
callq 0x64e00
movl %eax, -0xac8(%rbp)
jmp 0x5e8b5
movl -0xac8(%rbp), %eax
cmpl $0x0, %eax
je 0x5f18a
leaq -0x4e0(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x64e20
jmp 0x5e8d9
testb $0x1, -0x468(%rbp)
je 0x5e932
leaq -0x460(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0xd1b0
jmp 0x5e8f7
leaq -0xe8(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x64eb0
jmp 0x5e90c
movl $0x9, -0x4e4(%rbp)
jmp 0x5f12e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5f17c
movslq -0x4c8(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0xfff0
movq %rdx, -0xad8(%rbp)
movq %rax, -0xad0(%rbp)
jmp 0x5e955
movq -0xad8(%rbp), %rax
movq -0xad0(%rbp), %rcx
movq %rcx, -0x4f8(%rbp)
movq %rax, -0x4f0(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0x101a0
testb $0x1, %al
jne 0x5e983
jmp 0x5e992
movl $0x8, -0x4e4(%rbp)
jmp 0x5f12e
movslq -0x4c8(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0xfff0
movq %rdx, -0xae8(%rbp)
movq %rax, -0xae0(%rbp)
jmp 0x5e9b5
movq -0xae8(%rbp), %rax
movq -0xae0(%rbp), %rcx
movq %rcx, -0x508(%rbp)
movq %rax, -0x500(%rbp)
leaq -0x508(%rbp), %rdi
movl $0x1, %esi
callq 0x10040
movq -0x20(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0xf4e0
movq %rax, -0xaf0(%rbp)
jmp 0x5e9fb
movq -0xaf0(%rbp), %rax
movq %rax, -0x510(%rbp)
movq -0x20(%rbp), %rdi
callq 0xf520
movq %rax, -0x518(%rbp)
leaq -0x510(%rbp), %rdi
leaq -0x518(%rbp), %rsi
callq 0xf4b0
testb $0x1, %al
jne 0x5ea35
jmp 0x5eb4c
movq -0x18(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0x102e0
movq %rax, -0xaf8(%rbp)
jmp 0x5ea4e
movq -0xaf8(%rbp), %rax
movq %rax, -0x528(%rbp)
leaq -0x528(%rbp), %rdi
callq 0x10350
movl 0x4(%rax), %eax
movl %eax, -0x51c(%rbp)
leaq -0x448(%rbp), %rdi
leaq -0x51c(%rbp), %rsi
callq 0xf4e0
movq %rax, -0xb00(%rbp)
jmp 0x5ea8d
movq -0xb00(%rbp), %rax
movq %rax, -0x530(%rbp)
leaq -0x4e0(%rbp), %rdi
addq $0x98, %rdi
callq 0xf520
movq %rax, -0x538(%rbp)
leaq -0x530(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0xf4b0
testb $0x1, %al
jne 0x5eace
jmp 0x5eb0e
leaq -0x460(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0xd1b0
jmp 0x5eae3
leaq -0xe8(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x64eb0
jmp 0x5eaf8
movb $0x1, -0x149(%rbp)
movl $0x9, -0x4e4(%rbp)
jmp 0x5f12e
leaq -0x448(%rbp), %rdi
leaq -0x51c(%rbp), %rsi
callq 0xf300
movb %dl, -0xb09(%rbp)
movq %rax, -0xb08(%rbp)
jmp 0x5eb30
movb -0xb09(%rbp), %al
movq -0xb08(%rbp), %rcx
movq %rcx, -0x548(%rbp)
movb %al, -0x540(%rbp)
jmp 0x5eb4c
leaq -0x460(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0xd1b0
jmp 0x5eb61
movq -0xa48(%rbp), %rdi
addq $0x18, %rdi
movslq -0x4c8(%rbp), %rsi
callq 0x64a20
movq %rax, -0xb18(%rbp)
jmp 0x5eb81
movq -0xb18(%rbp), %rsi
leaq -0x560(%rbp), %rdi
callq 0x64a60
jmp 0x5eb96
movl $0x0, -0x564(%rbp)
movl -0x564(%rbp), %eax
movq %rax, -0xb20(%rbp)
leaq -0x560(%rbp), %rdi
callq 0x2a9e0
movq %rax, %rcx
movq -0xb20(%rbp), %rax
cmpq %rcx, %rax
jae 0x5ee63
movl -0x564(%rbp), %eax
movl %eax, %esi
leaq -0x560(%rbp), %rdi
callq 0x64470
movq %rax, -0xb28(%rbp)
jmp 0x5ebe9
movq -0xb28(%rbp), %rax
movq 0x20(%rax), %rcx
movq %rcx, -0x570(%rbp)
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movaps %xmm1, -0x580(%rbp)
movaps %xmm0, -0x590(%rbp)
movslq -0x58c(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0xfff0
movq %rdx, -0xb38(%rbp)
movq %rax, -0xb30(%rbp)
jmp 0x5ec33
movq -0xb38(%rbp), %rax
movq -0xb30(%rbp), %rcx
movq %rcx, -0x5a0(%rbp)
movq %rax, -0x598(%rbp)
leaq -0x5a0(%rbp), %rdi
callq 0x101a0
xorb $-0x1, %al
testb $0x1, %al
jne 0x5ec66
jmp 0x5ee4d
movq -0xa48(%rbp), %rax
movq 0x70(%rax), %rdi
movslq -0x58c(%rbp), %rsi
callq 0x2a4c0
movq %rax, %rsi
leaq -0x5e8(%rbp), %rdi
callq 0x64400
jmp 0x5ec8e
leaq -0x6f8(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
callq 0x64400
jmp 0x5eca3
leaq -0x480(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x64f50
movq %rax, -0xb40(%rbp)
jmp 0x5ecbf
movq -0xb40(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0xb50(%rbp)
leaq -0x478(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x64c70
movq %rax, -0xb48(%rbp)
jmp 0x5ecee
movsd -0xb50(%rbp), %xmm0
movq -0xb48(%rbp), %rax
movsd (%rax), %xmm1
movsd -0x470(%rbp), %xmm2
movsd -0x588(%rbp), %xmm3
addsd %xmm3, %xmm2
leaq -0x6b0(%rbp), %rdi
leaq -0x6f8(%rbp), %rsi
callq 0x5cfa0
jmp 0x5ed2a
leaq -0x6f8(%rbp), %rdi
callq 0x100e0
leaq -0x448(%rbp), %rsi
leaq -0x618(%rbp), %rdi
callq 0x21ca0
jmp 0x5ed4b
leaq -0x460(%rbp), %rsi
leaq -0x630(%rbp), %rdi
callq 0x17a10
jmp 0x5ed60
leaq -0x7c0(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x64d10
jmp 0x5ed75
leaq -0x148(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x64cb0
jmp 0x5ed8a
leaq -0x7c0(%rbp), %rdi
callq 0x10df0
leaq -0x6b0(%rbp), %rdi
callq 0x10df0
leaq -0x5e8(%rbp), %rdi
callq 0x100e0
jmp 0x5ee4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5f170
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5ee3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0x100e0
jmp 0x5ee3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5ee30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x10df0
leaq -0x6b0(%rbp), %rdi
callq 0x10df0
leaq -0x5e8(%rbp), %rdi
callq 0x100e0
jmp 0x5f170
jmp 0x5ee4f
movl -0x564(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x564(%rbp)
jmp 0x5eba0
movq -0xa48(%rbp), %rdi
addq $0x48, %rdi
movslq -0x4c8(%rbp), %rsi
callq 0x64a20
movq %rax, -0xb58(%rbp)
jmp 0x5ee83
movq -0xb58(%rbp), %rsi
leaq -0x7d8(%rbp), %rdi
callq 0x64a60
jmp 0x5ee98
movl $0x0, -0x7dc(%rbp)
movl -0x7dc(%rbp), %eax
movq %rax, -0xb60(%rbp)
leaq -0x7d8(%rbp), %rdi
callq 0x2a9e0
movq %rax, %rcx
movq -0xb60(%rbp), %rax
cmpq %rcx, %rax
jae 0x5f10c
movl -0x7dc(%rbp), %eax
movl %eax, %esi
leaq -0x7d8(%rbp), %rdi
callq 0x64470
movq %rax, -0xb68(%rbp)
jmp 0x5eeeb
movq -0xa48(%rbp), %rax
movq -0xb68(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq %rdx, -0x7f0(%rbp)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movaps %xmm1, -0x800(%rbp)
movaps %xmm0, -0x810(%rbp)
movq 0x70(%rax), %rdi
movslq -0x80c(%rbp), %rsi
callq 0x2a4c0
movq %rax, %rsi
leaq -0x858(%rbp), %rdi
callq 0x64400
jmp 0x5ef3a
leaq -0x968(%rbp), %rdi
leaq -0x858(%rbp), %rsi
callq 0x64400
jmp 0x5ef4f
leaq -0x480(%rbp), %rdi
leaq -0x800(%rbp), %rsi
callq 0x64f50
movq %rax, -0xb70(%rbp)
jmp 0x5ef6b
movq -0xb70(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0xb80(%rbp)
leaq -0x478(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x64c70
movq %rax, -0xb78(%rbp)
jmp 0x5ef9a
movsd -0xb80(%rbp), %xmm0
movq -0xb78(%rbp), %rax
movsd (%rax), %xmm1
movsd -0x470(%rbp), %xmm2
movsd -0x808(%rbp), %xmm3
addsd %xmm3, %xmm2
leaq -0x920(%rbp), %rdi
leaq -0x968(%rbp), %rsi
callq 0x5cfa0
jmp 0x5efd6
leaq -0x968(%rbp), %rdi
callq 0x100e0
movb $0x1, -0x8a8(%rbp)
leaq -0x460(%rbp), %rsi
leaq -0x8a0(%rbp), %rdi
callq 0x17a10
jmp 0x5effe
leaq -0x448(%rbp), %rsi
leaq -0x888(%rbp), %rdi
callq 0x21ca0
jmp 0x5f013
leaq -0xa30(%rbp), %rdi
leaq -0x920(%rbp), %rsi
callq 0x64d10
jmp 0x5f028
leaq -0x148(%rbp), %rdi
leaq -0xa30(%rbp), %rsi
callq 0x64cb0
jmp 0x5f03d
leaq -0xa30(%rbp), %rdi
callq 0x10df0
leaq -0x920(%rbp), %rdi
callq 0x10df0
leaq -0x858(%rbp), %rdi
callq 0x100e0
movl -0x7dc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7dc(%rbp)
jmp 0x5eea2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5f164
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5f0fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x968(%rbp), %rdi
callq 0x100e0
jmp 0x5f0fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0x5f0f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0xa30(%rbp), %rdi
callq 0x10df0
leaq -0x920(%rbp), %rdi
callq 0x10df0
leaq -0x858(%rbp), %rdi
callq 0x100e0
jmp 0x5f164
leaq -0x7d8(%rbp), %rdi
callq 0x11230
leaq -0x560(%rbp), %rdi
callq 0x11230
movl $0x0, -0x4e4(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x10df0
movl -0x4e4(%rbp), %eax
movl %eax, -0xb84(%rbp)
testl %eax, %eax
je 0x5f15f
jmp 0x5f14c
movl -0xb84(%rbp), %eax
subl $0x8, %eax
je 0x5e8a1
jmp 0x5f15d
jmp 0x5f18a
jmp 0x5e8a1
leaq -0x7d8(%rbp), %rdi
callq 0x11230
leaq -0x560(%rbp), %rdi
callq 0x11230
leaq -0x4e0(%rbp), %rdi
callq 0x10df0
jmp 0x5f1e4
movq -0xa58(%rbp), %rdi
leaq -0x149(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0x64f90
jmp 0x5f1a6
movl $0x1, -0x4e4(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x64fd0
leaq -0x110(%rbp), %rdi
callq 0xf9b0
leaq -0xe8(%rbp), %rdi
callq 0x10df0
movq -0xa50(%rbp), %rax
addq $0xb90, %rsp            # imm = 0xB90
popq %rbp
retq
leaq -0x148(%rbp), %rdi
callq 0x64fd0
leaq -0x110(%rbp), %rdi
callq 0xf9b0
leaq -0xe8(%rbp), %rdi
callq 0x10df0
movq -0x120(%rbp), %rdi
callq 0x58f0
nopw %cs:(%rax,%rax)