// File: /workspace/github_cpp_makefile_star2_O3/keyan[P]ev_routing_engine/main.cpp
// Function: main
int main(int argc, char **argv) {
  if (argc != 3) {
    std::cout << "Error: requires initial and final supercharger names" << std::endl;
    return -1;
  }

  std::string initial_charger_name = argv[1];
  std::string goal_charger_name = argv[2];

  if (initial_charger_name == goal_charger_name) {
    std::cout << "Error: initial and final superchargers cannot be identical" << std::endl;
    return -1;
  }

  Router routing_engine = Router(network);
  std::string result = routing_engine.route(initial_charger_name, goal_charger_name);
  std::cout << result << std::endl;

  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
cmpl $0x3, %edi
jne 0x921a
movq %rsi, %rbx
movq 0x8(%rsi), %rsi
leaq 0x28(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0x20a0
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0x20a0
movq 0x30(%rsp), %rdx
cmpq 0x10(%rsp), %rdx
jne 0x910c
testq %rdx, %rdx
je 0x9263
movq 0x8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x2180
testl %eax, %eax
je 0x9263
leaq 0x905d(%rip), %rsi      # 0x12170
leaq 0xa8(%rsp), %rdi
callq 0x9378
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x68(%rsp), %rdi
callq 0x9f24
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %rdi
callq 0x9f24
leaq 0x88(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x68(%rsp), %rdx
leaq 0x48(%rsp), %rcx
callq 0xa23c
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x918e
callq 0x2150
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x919d
callq 0x2150
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0x8e24(%rip), %rdi      # 0x11fd8
callq 0x21a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20f0
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x91f9
callq 0x2150
leaq 0xe8(%rsp), %rdi
callq 0x97b8
leaq 0xb0(%rsp), %rdi
callq 0x9e8e
xorl %ebx, %ebx
jmp 0x92ae
movq 0x8db7(%rip), %rbx      # 0x11fd8
leaq 0x3df8(%rip), %rsi      # 0xd020
movl $0x34, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20f0
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x92d4
movq 0x8d6e(%rip), %rbx      # 0x11fd8
leaq 0x3de4(%rip), %rsi      # 0xd055
movl $0x3a, %edx
movq %rbx, %rdi
callq 0x21a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq 0x8d3c(%rip), %rdi      # 0x11fd8
callq 0x2030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x20f0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x92c1
callq 0x2150
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x92d4
callq 0x2150
movl %ebx, %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x92fa
callq 0x2150
jmp 0x92fa
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
jne 0x932b
jmp 0x9330
movq %rax, %rbx
jmp 0x9330
jmp 0x9312
movq %rax, %rbx
jmp 0x935d
movq %rax, %rbx
jmp 0x934a
movq %rax, %rbx
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9330
callq 0x2150
leaq 0xe8(%rsp), %rdi
callq 0x97b8
leaq 0xb0(%rsp), %rdi
callq 0x9e8e
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x935d
callq 0x2150
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9370
callq 0x2150
movq %rbx, %rdi
callq 0x2250