// File: Kei18[P]pibt/./src/graph/pd.cpp
// Function: PD::getRandomStartGoal(int)
Paths PD::getRandomStartGoal(int num) {
  if (num > nodes.size()) {
    std::cout << "error@PD::getStartGoal, over node size, "
              << num << "\n";
    std::exit(1);
  }

  Paths points;
  Nodes ends(starts.size());
  std::copy(starts.begin(), starts.end(), ends.begin());
  std::shuffle(ends.begin(), ends.end(), *MT);
  for (int i = 0; i < num; ++i) points.push_back({ ends[i] });

  return points;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0xd8(%rbp)
movq %rdi, %rax
movq %rax, -0xd0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
movslq -0x14(%rbp), %rax
movq %rax, -0xc0(%rbp)
addq $0x10, %rdi
callq 0x3b0e0
movq %rax, %rcx
movq -0xc0(%rbp), %rax
cmpq %rcx, %rax
jbe 0x4938c
movq 0xb7c3c(%rip), %rdi     # 0x100f98
leaq 0x6bf76(%rip), %rsi     # 0xb52d9
callq 0x84d0
movq %rax, %rdi
movl -0x14(%rbp), %esi
callq 0x8860
movq %rax, %rdi
leaq 0x6a23a(%rip), %rsi     # 0xb35b7
callq 0x84d0
movl $0x1, %edi
callq 0x85d0
movq -0xd8(%rbp), %rdi
movb $0x0, -0x15(%rbp)
callq 0xd9c0
movq -0xc8(%rbp), %rdi
addq $0x68, %rdi
callq 0x3b0e0
movq %rax, -0xe8(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0xd730
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
leaq -0x30(%rbp), %rdi
callq 0x3f6c0
jmp 0x493dc
leaq -0x31(%rbp), %rdi
callq 0xd830
movq -0xc8(%rbp), %rdi
addq $0x68, %rdi
movq %rdi, -0xf8(%rbp)
callq 0x3b730
movq -0xf8(%rbp), %rdi
movq %rax, -0x50(%rbp)
callq 0x3b760
movq %rax, -0x58(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x3b730
movq %rax, -0x60(%rbp)
movq -0x50(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x60(%rbp), %rdx
callq 0x3f730
movq %rax, -0xf0(%rbp)
jmp 0x49437
movq -0xf0(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x3b730
movq -0x100(%rbp), %rdi
movq %rax, -0x70(%rbp)
callq 0x3b760
movq %rax, %rcx
movq -0xc8(%rbp), %rax
movq %rcx, -0x78(%rbp)
movq 0x60(%rax), %rdx
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x3f7c0
jmp 0x49483
movl $0x0, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x49590
movslq -0x7c(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0xda90
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
leaq -0xb0(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq $0x1, -0xa0(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0xd730
movq -0x108(%rbp), %rcx
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
leaq -0x98(%rbp), %rdi
callq 0xd750
jmp 0x494fc
movq -0xd8(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xd700
jmp 0x49511
leaq -0x98(%rbp), %rdi
callq 0xd7d0
leaq -0xb1(%rbp), %rdi
callq 0xd830
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x4948a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0xd830
jmp 0x495cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x495a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x49582
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x98(%rbp), %rdi
callq 0xd7d0
leaq -0xb1(%rbp), %rdi
callq 0xd830
jmp 0x495a5
movb $0x1, -0x15(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xd7d0
testb $0x1, -0x15(%rbp)
jne 0x495bc
jmp 0x495b0
leaq -0x30(%rbp), %rdi
callq 0xd7d0
jmp 0x495cc
movq -0xd8(%rbp), %rdi
callq 0xda10
movq -0xd0(%rbp), %rax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0xd8(%rbp), %rdi
callq 0xda10
movq -0x40(%rbp), %rdi
callq 0x8880
nopw %cs:(%rax,%rax)