// File: /workspace/github_cpp_makefile_star2_O1/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 0x8dca
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 0x8cbc
testq %rdx, %rdx
je 0x8e13
movq 0x8(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x2180
testl %eax, %eax
je 0x8e13
leaq 0x94ad(%rip), %rsi      # 0x12170
leaq 0xa8(%rsp), %rdi
callq 0x8f28
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x68(%rsp), %rdi
callq 0x9af0
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %rdi
callq 0x9af0
leaq 0x88(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x68(%rsp), %rdx
leaq 0x48(%rsp), %rcx
callq 0x9df4
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x8d3e
callq 0x2150
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x8d4d
callq 0x2150
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0x9274(%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 0x8da9
callq 0x2150
leaq 0xe8(%rsp), %rdi
callq 0x9380
leaq 0xb0(%rsp), %rdi
callq 0x9a5a
xorl %ebx, %ebx
jmp 0x8e5e
movq 0x9207(%rip), %rbx      # 0x11fd8
leaq 0x4248(%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 0x8e84
movq 0x91be(%rip), %rbx      # 0x11fd8
leaq 0x4234(%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 0x918c(%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 0x8e71
callq 0x2150
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8e84
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 0x8eaa
callq 0x2150
jmp 0x8eaa
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
jne 0x8edb
jmp 0x8ee0
movq %rax, %rbx
jmp 0x8ee0
jmp 0x8ec2
movq %rax, %rbx
jmp 0x8f0d
movq %rax, %rbx
jmp 0x8efa
movq %rax, %rbx
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8ee0
callq 0x2150
leaq 0xe8(%rsp), %rdi
callq 0x9380
leaq 0xb0(%rsp), %rdi
callq 0x9a5a
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f0d
callq 0x2150
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8f20
callq 0x2150
movq %rbx, %rdi
callq 0x2250