// File: /workspace/github_cpp_makefile_star2_O3/canzarlab[P]Trajan/src/main.cpp
// Function: MakeSolver(Graph&, Graph&, int, char**, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&)
Solver* MakeSolver(Graph& t1, Graph& t2, int argc, char** argv, std::map<string, string> & t1Label2Node, std::map<string, string> & t2Label2Node)
{
    int s = stoi(argv[argc - 1]);
    Solver::cf = stoi(argv[4 + (argc == 9) + 2 * (argc == 12)]);
    Solver::tt = argc == 12;
    string d = argv[5 + (argc == 9) + 2 * (argc == 12)];
    double k = stod(argv[6 + (argc == 9) + 2 * (argc == 12)]);
    double c = (s != 2) ? 0 : stod(argv[8 + 2 * (argc == 12)]);
    var_eps = (argc == 9) ? 0 : stod(argv[7 + 2 * (argc == 12)]);
    bool dag = argc == 9;

    assert(LP::cf >= 0 && LP::cf <= 2);
    assert(d == "j" || d == "s" || d == "e");
    assert(s >= 0 && s <= 9);

    string outFileName = argv[5];

    if (s == 0)
        return new Greedy(t1, t2, d, k, dag);
    else if (s == 1)
        return new LP(t1, t2, d, k, dag);
    else if (s == 2)
        EditDist(t1, t2, costMatrixFileName, outFileName, t1Label2Node, t2Label2Node, outScoreFile);
    else if (s == 3)
        return new LPCP(t1, t2, d, k, dag);
    else if (s == 4)
        return new DFBnBSolver(t1, t2, d, k, dag); // was test, to delete
    else if (s == 5)
        return new LPInt(t1, t2, d, k, dag);
    else if (s == 6)
        return new LPFInt(t1, t2, d, k, dag);
    else if (s == 7)
        return new BFBnBSolver(t1, t2, d, k, dag);
    else if (s == 8)
        return new DFBnBSolver(t1, t2, d, k, dag);
    else if (s == 9)
        return new HybridBnBSolver(t1, t2, d, k, dag);
    return nullptr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %r9, 0x80(%rsp)
movq %r8, 0x78(%rsp)
movq %rcx, %r14
movq %rsi, 0x18(%rsp)
movq %rdi, 0x10(%rsp)
movl %edx, 0xc(%rsp)
movslq %edx, %rax
movq -0x8(%rcx,%rax,8), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xd5dc
movq 0x20(%rsp), %rbx
callq 0x9060
movq %rax, %r13
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x48(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x94a0
cmpq %rbx, (%r15)
je 0xa999
movq %rax, %r12
movslq %r12d, %rax
cmpq %r12, %rax
jne 0xa9a5
movl (%r13), %eax
cmpl $0x22, %eax
je 0xa9a5
testl %eax, %eax
movl 0xc(%rsp), %ebx
jne 0xa203
movl %ebp, (%r13)
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa21e
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9350
xorl %eax, %eax
cmpl $0x9, %ebx
sete %al
xorl %ebp, %ebp
cmpl $0xc, %ebx
sete %bpl
leal (%rax,%rbp,2), %eax
movq %r14, 0x70(%rsp)
movq 0x20(%r14,%rax,8), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xd5dc
movq 0x20(%rsp), %rbx
movl (%r13), %r14d
movl $0x0, (%r13)
leaq 0x48(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x94a0
cmpq %rbx, (%r15)
je 0xa9b1
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
leaq -0x80000000(%rax), %rdx
cmpq %rcx, %rdx
jb 0xa9bd
movl (%r13), %ecx
cmpl $0x22, %ecx
je 0xa9bd
testl %ecx, %ecx
movl 0xc(%rsp), %ebx
jne 0xa2ad
movl %r14d, (%r13)
addl %ebp, %ebp
movl %eax, 0x7c153(%rip)     # 0x86408
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xa2d1
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9350
xorl %eax, %eax
cmpl $0x9, %ebx
sete %al
cmpl $0xc, %ebx
sete 0x7c129(%rip)           # 0x8640c
addl %ebp, %eax
movq 0x70(%rsp), %r14
movq 0x28(%r14,%rax,8), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0xd5dc
xorl %eax, %eax
cmpl $0x9, %ebx
sete %al
addl %ebp, %eax
movq 0x30(%r14,%rax,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0xd5dc
movq 0x48(%rsp), %rbx
movl (%r13), %r14d
movl $0x0, (%r13)
leaq 0x68(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x9290
movsd %xmm0, 0x40(%rsp)
cmpq %rbx, (%r15)
je 0xa9c9
movl (%r13), %eax
testl %eax, %eax
je 0xa369
cmpl $0x22, %eax
movl 0xc(%rsp), %ebx
jne 0xa371
leaq 0x51f33(%rip), %rdi     # 0x5c297
callq 0x94d0
movl %r14d, (%r13)
movl 0xc(%rsp), %ebx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa38c
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x9350
cmpl $0x2, %r12d
movq 0x70(%rsp), %r14
jne 0xa421
movl %ebp, %eax
movq 0x40(%r14,%rax,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0xd5dc
movq 0x48(%rsp), %rbx
movl (%r13), %r14d
movl $0x0, (%r13)
leaq 0x68(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x9290
cmpq %rbx, (%r15)
je 0xaa13
movl (%r13), %eax
testl %eax, %eax
je 0xa3f8
cmpl $0x22, %eax
movl 0xc(%rsp), %ebx
jne 0xa400
leaq 0x51ea4(%rip), %rdi     # 0x5c297
callq 0x94d0
movl %r14d, (%r13)
movl 0xc(%rsp), %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa41c
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x9350
movq 0x70(%rsp), %r14
cmpl $0x9, %ebx
jne 0xa439
leaq 0x7c03b(%rip), %rax     # 0x86468
movq $0x0, (%rax)
jmp 0xa4c5
movl %ebp, %eax
movq 0x38(%r14,%rax,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0xd5dc
movq 0x48(%rsp), %rbx
movl (%r13), %ebp
movl $0x0, (%r13)
leaq 0x68(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x9290
cmpq %rbx, (%r15)
je 0xaa1f
movl (%r13), %eax
testl %eax, %eax
je 0xa496
cmpl $0x22, %eax
movl 0xc(%rsp), %ebx
jne 0xa49e
leaq 0x51e06(%rip), %rdi     # 0x5c297
callq 0x94d0
movl %ebp, (%r13)
movl 0xc(%rsp), %ebx
leaq 0x7bfc3(%rip), %rax     # 0x86468
movsd %xmm0, (%rax)
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa4c5
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x9350
cmpl $0x3, 0x7bf3c(%rip)     # 0x86408
jae 0xa9d5
leaq 0x51bed(%rip), %rsi     # 0x5c0c6
leaq 0x20(%rsp), %rdi
callq 0x90e0
testl %eax, %eax
je 0xa515
leaq 0x51da2(%rip), %rsi     # 0x5c290
leaq 0x20(%rsp), %rdi
callq 0x90e0
testl %eax, %eax
je 0xa515
leaq 0x64738(%rip), %rsi     # 0x6ec3b
leaq 0x20(%rsp), %rdi
callq 0x90e0
testl %eax, %eax
jne 0xaa2b
cmpl $0xa, %r12d
jae 0xa9f4
movq 0x28(%r14), %rsi
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xd5dc
cmpl $0x8, %r12d
ja 0xa8d7
movl %r12d, %eax
leaq 0x51abe(%rip), %rcx     # 0x5c004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0xd0, %edi
callq 0x9340
movq %rax, %r14
leaq 0x198(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x188(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x315c4
movq 0x188(%rsp), %rdi
jmp 0xa93c
movl $0x178, %edi            # imm = 0x178
callq 0x9340
movq %rax, %r14
leaq 0x138(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x128(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x43a0a
movq 0x128(%rsp), %rdi
jmp 0xa93c
leaq 0x7bdbe(%rip), %rax     # 0x863e8
movq %rax, (%rsp)
leaq 0x7bd93(%rip), %rdx     # 0x863c8
leaq 0x48(%rsp), %rcx
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x78(%rsp), %r8
movq 0x80(%rsp), %r9
callq 0x565b4
xorl %r14d, %r14d
jmp 0xa94c
movl $0x118, %edi            # imm = 0x118
callq 0x9340
movq %rax, %r14
leaq 0x158(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x148(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x148(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x47f80
movq 0x148(%rsp), %rdi
jmp 0xa93c
movl $0x178, %edi            # imm = 0x178
callq 0x9340
movq %rax, %r14
leaq 0xd8(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0xc8(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0xc8(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x434c4
movq 0xc8(%rsp), %rdi
jmp 0xa93c
movl $0x118, %edi            # imm = 0x118
callq 0x9340
movq %rax, %r14
leaq 0x178(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x168(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x34354
movq 0x168(%rsp), %rdi
jmp 0xa93c
movl $0x118, %edi            # imm = 0x118
callq 0x9340
movq %rax, %r14
leaq 0x118(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x108(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x108(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x46244
movq 0x108(%rsp), %rdi
jmp 0xa93c
movl $0x118, %edi            # imm = 0x118
callq 0x9340
movq %rax, %r14
leaq 0xf8(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0xe8(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x4a7c8
movq 0xe8(%rsp), %rdi
jmp 0xa93c
movl $0x178, %edi            # imm = 0x178
callq 0x9340
movq %rax, %r14
leaq 0xb8(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0xa8(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x43a0a
movq 0xa8(%rsp), %rdi
jmp 0xa93c
movl $0x178, %edi            # imm = 0x178
callq 0x9340
movq %rax, %r14
leaq 0x98(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x88(%rsp), %rdi
callq 0xda46
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x88(%rsp), %rcx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x43d10
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xa94c
movq (%r15), %rsi
incq %rsi
callq 0x9350
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa968
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x9350
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xa984
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9350
movq %r14, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x518f2(%rip), %rdi     # 0x5c292
callq 0x91d0
leaq 0x518e6(%rip), %rdi     # 0x5c292
callq 0x94d0
leaq 0x518da(%rip), %rdi     # 0x5c292
callq 0x91d0
leaq 0x518ce(%rip), %rdi     # 0x5c292
callq 0x94d0
leaq 0x518c7(%rip), %rdi     # 0x5c297
callq 0x91d0
leaq 0x51657(%rip), %rdi     # 0x5c033
leaq 0x5166b(%rip), %rsi     # 0x5c04e
leaq 0x51671(%rip), %rcx     # 0x5c05b
movl $0x34, %edx
callq 0x9200
leaq 0x516ee(%rip), %rdi     # 0x5c0e9
leaq 0x5164c(%rip), %rsi     # 0x5c04e
leaq 0x51652(%rip), %rcx     # 0x5c05b
movl $0x36, %edx
callq 0x9200
leaq 0x5187d(%rip), %rdi     # 0x5c297
callq 0x91d0
leaq 0x51871(%rip), %rdi     # 0x5c297
callq 0x91d0
leaq 0x51696(%rip), %rdi     # 0x5c0c8
leaq 0x51615(%rip), %rsi     # 0x5c04e
leaq 0x5161b(%rip), %rcx     # 0x5c05b
movl $0x35, %edx
callq 0x9200
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xab8d
movq 0x98(%rsp), %rsi
jmp 0xab60
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
je 0xab8d
movq 0xb8(%rsp), %rsi
jmp 0xab60
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
cmpq %r15, %rdi
je 0xab83
movq 0xf8(%rsp), %rsi
jmp 0xab1c
movq %rax, %rbx
movq 0x108(%rsp), %rdi
cmpq %r15, %rdi
je 0xab83
movq 0x118(%rsp), %rsi
jmp 0xab1c
movq %rax, %rbx
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
je 0xab83
movq 0x178(%rsp), %rsi
jmp 0xab1c
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0xab8d
movq 0xd8(%rsp), %rsi
jmp 0xab60
movq %rax, %rbx
movq 0x148(%rsp), %rdi
cmpq %r15, %rdi
je 0xab83
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x9350
jmp 0xab83
movq %rax, %rbx
movq 0x188(%rsp), %rdi
cmpq %r15, %rdi
je 0xab77
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x9350
jmp 0xab77
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0xab8d
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x9350
jmp 0xab8d
jmp 0xab8a
jmp 0xab8a
jmp 0xab80
jmp 0xab80
jmp 0xab80
movq %rax, %rbx
movl $0xd0, %esi
jmp 0xab92
jmp 0xab8a
movq %rax, %rbx
movl $0x118, %esi            # imm = 0x118
jmp 0xab92
movq %rax, %rbx
movl $0x178, %esi            # imm = 0x178
movq %r14, %rdi
callq 0x9350
jmp 0xabc3
jmp 0xabd1
jmp 0xabd1
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xabc3
movl %ebp, (%r13)
jmp 0xabc3
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xabc3
movl %r14d, (%r13)
jmp 0xabc3
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
jmp 0xabf6
jmp 0xabd1
movq %rax, %rbx
jmp 0xac18
jmp 0xabda
jmp 0xabda
movq %rax, %rbx
jmp 0xac34
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xabed
movl %r14d, (%r13)
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xac18
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x9350
jmp 0xac18
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xac18
movl %r14d, (%r13)
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xac34
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9350
movq %rbx, %rdi
callq 0x9680
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xac4a
movl %ebp, (%r13)
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0xac22