// File: /workspace/github_cpp_makefile_star2_O1/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 $0x1c8, %rsp            # imm = 0x1C8
movq %r9, 0xa0(%rsp)
movq %r8, 0x98(%rsp)
movq %rcx, %r15
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 0x78(%rsp), %rdx
callq 0xd630
movq 0x20(%rsp), %rbx
callq 0x9060
movq %rax, %r13
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x50(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
movl $0xa, %edx
callq 0x9490
cmpq %rbx, (%r14)
je 0xa9b7
movq %rax, %r12
movslq %r12d, %rax
cmpq %r12, %rax
jne 0xa9c3
movl (%r13), %eax
cmpl $0x22, %eax
je 0xa9c3
testl %eax, %eax
movl 0xc(%rsp), %ebx
jne 0xa216
movl %ebp, (%r13)
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa231
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9340
xorl %eax, %eax
cmpl $0x9, %ebx
sete %al
xorl %ebp, %ebp
cmpl $0xc, %ebx
sete %bpl
leal (%rax,%rbp,2), %eax
movq %r15, 0x70(%rsp)
movq 0x20(%r15,%rax,8), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0xd630
movq 0x20(%rsp), %rbx
movl (%r13), %r15d
movl $0x0, (%r13)
leaq 0x50(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
movl $0xa, %edx
callq 0x9490
cmpq %rbx, (%r14)
je 0xa9cf
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
leaq -0x80000000(%rax), %rdx
cmpq %rcx, %rdx
jb 0xa9db
movl (%r13), %ecx
cmpl $0x22, %ecx
je 0xa9db
testl %ecx, %ecx
movl 0xc(%rsp), %ebx
jne 0xa2c0
movl %r15d, (%r13)
addl %ebp, %ebp
movl %eax, 0x7e138(%rip)     # 0x88400
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xa2e4
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9340
xorl %eax, %eax
cmpl $0x9, %ebx
sete %al
cmpl $0xc, %ebx
sete 0x7e10e(%rip)           # 0x88404
addl %ebp, %eax
movq 0x70(%rsp), %r14
movq 0x28(%r14,%rax,8), %rsi
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xd630
xorl %eax, %eax
cmpl $0x9, %ebx
sete %al
addl %ebp, %eax
movq 0x30(%r14,%rax,8), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0xd630
movq 0x50(%rsp), %rbx
movl (%r13), %r15d
movl $0x0, (%r13)
leaq 0x78(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9280
movsd %xmm0, 0x40(%rsp)
cmpq %rbx, (%r14)
je 0xa9e7
movl (%r13), %eax
testl %eax, %eax
je 0xa37c
cmpl $0x22, %eax
movl 0xc(%rsp), %ebx
jne 0xa384
leaq 0x51f20(%rip), %rdi     # 0x5c297
callq 0x94c0
movl %r15d, (%r13)
movl 0xc(%rsp), %ebx
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa39f
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x9340
cmpl $0x2, %r12d
movq 0x70(%rsp), %r15
jne 0xa434
movl %ebp, %eax
movq 0x40(%r15,%rax,8), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0xd630
movq 0x50(%rsp), %rbx
movl (%r13), %r15d
movl $0x0, (%r13)
leaq 0x78(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9280
cmpq %rbx, (%r14)
je 0xaa31
movl (%r13), %eax
testl %eax, %eax
je 0xa40b
cmpl $0x22, %eax
movl 0xc(%rsp), %ebx
jne 0xa413
leaq 0x51e91(%rip), %rdi     # 0x5c297
callq 0x94c0
movl %r15d, (%r13)
movl 0xc(%rsp), %ebx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xa42f
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x9340
movq 0x70(%rsp), %r15
cmpl $0x9, %ebx
jne 0xa44c
leaq 0x7e020(%rip), %rax     # 0x88460
movq $0x0, (%rax)
jmp 0xa4d8
movl %ebp, %eax
movq 0x38(%r15,%rax,8), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0xd630
movq 0x50(%rsp), %rbx
movl (%r13), %ebp
movl $0x0, (%r13)
leaq 0x78(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9280
cmpq %rbx, (%r14)
je 0xaa3d
movl (%r13), %eax
testl %eax, %eax
je 0xa4a9
cmpl $0x22, %eax
movl 0xc(%rsp), %ebx
jne 0xa4b1
leaq 0x51df3(%rip), %rdi     # 0x5c297
callq 0x94c0
movl %ebp, (%r13)
movl 0xc(%rsp), %ebx
leaq 0x7dfa8(%rip), %rax     # 0x88460
movsd %xmm0, (%rax)
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xa4d8
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x9340
cmpl $0x9, %ebx
cmpl $0x3, 0x7df1e(%rip)     # 0x88400
jae 0xa9f3
leaq 0x51bd7(%rip), %rsi     # 0x5c0c6
leaq 0x20(%rsp), %rdi
callq 0x90e0
testl %eax, %eax
je 0xa52b
leaq 0x51d8c(%rip), %rsi     # 0x5c290
leaq 0x20(%rsp), %rdi
callq 0x90e0
testl %eax, %eax
je 0xa52b
leaq 0x65a82(%rip), %rsi     # 0x6ff9b
leaq 0x20(%rsp), %rdi
callq 0x90e0
testl %eax, %eax
jne 0xaa49
cmpl $0xa, %r12d
jae 0xaa12
movq 0x28(%r15), %rsi
leaq 0x78(%rsp), %rdi
leaq 0x4f(%rsp), %rdx
callq 0xd630
cmpl $0x8, %r12d
ja 0xa8f0
movl %r12d, %eax
leaq 0x51aa8(%rip), %rcx     # 0x5c004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0xd0, %edi
callq 0x9330
movq %rax, %r15
leaq 0x1b8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1a8(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x1a8(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x32110
movq 0x1a8(%rsp), %rdi
jmp 0xa955
movl $0x178, %edi            # imm = 0x178
callq 0x9330
movq %rax, %r15
leaq 0x158(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x148(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x148(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x441ce
movq 0x148(%rsp), %rdi
jmp 0xa955
leaq 0x7dda0(%rip), %rax     # 0x883e0
movq %rax, (%rsp)
leaq 0x7dd75(%rip), %rdx     # 0x883c0
leaq 0x78(%rsp), %rcx
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x98(%rsp), %r8
movq 0xa0(%rsp), %r9
callq 0x56c31
xorl %r15d, %r15d
jmp 0xa965
movl $0x118, %edi            # imm = 0x118
callq 0x9330
movq %rax, %r15
leaq 0x178(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x168(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x48710
movq 0x168(%rsp), %rdi
jmp 0xa955
movl $0x178, %edi            # imm = 0x178
callq 0x9330
movq %rax, %r15
leaq 0xf8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0xe8(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x43c60
movq 0xe8(%rsp), %rdi
jmp 0xa955
movl $0x118, %edi            # imm = 0x118
callq 0x9330
movq %rax, %r15
leaq 0x198(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x188(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x34da8
movq 0x188(%rsp), %rdi
jmp 0xa955
movl $0x118, %edi            # imm = 0x118
callq 0x9330
movq %rax, %r15
leaq 0x138(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x128(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x46a94
movq 0x128(%rsp), %rdi
jmp 0xa955
movl $0x118, %edi            # imm = 0x118
callq 0x9330
movq %rax, %r15
leaq 0x118(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x108(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0x108(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x4ae08
movq 0x108(%rsp), %rdi
jmp 0xa955
movl $0x178, %edi            # imm = 0x178
callq 0x9330
movq %rax, %r15
leaq 0xd8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0xc8(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0xc8(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x441ce
movq 0xc8(%rsp), %rdi
jmp 0xa955
movl $0x178, %edi            # imm = 0x178
callq 0x9330
movq %rax, %r15
leaq 0xb8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0xda94
xorl %r8d, %r8d
cmpl $0x9, %ebx
sete %r8b
leaq 0xa8(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movsd 0x40(%rsp), %xmm0
callq 0x444bc
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa965
movq (%r14), %rsi
incq %rsi
callq 0x9340
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa986
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x9340
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xa9a2
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9340
movq %r15, %rax
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x518d4(%rip), %rdi     # 0x5c292
callq 0x91d0
leaq 0x518c8(%rip), %rdi     # 0x5c292
callq 0x94c0
leaq 0x518bc(%rip), %rdi     # 0x5c292
callq 0x91d0
leaq 0x518b0(%rip), %rdi     # 0x5c292
callq 0x94c0
leaq 0x518a9(%rip), %rdi     # 0x5c297
callq 0x91d0
leaq 0x51639(%rip), %rdi     # 0x5c033
leaq 0x5164d(%rip), %rsi     # 0x5c04e
leaq 0x51653(%rip), %rcx     # 0x5c05b
movl $0x34, %edx
callq 0x9200
leaq 0x516d0(%rip), %rdi     # 0x5c0e9
leaq 0x5162e(%rip), %rsi     # 0x5c04e
leaq 0x51634(%rip), %rcx     # 0x5c05b
movl $0x36, %edx
callq 0x9200
leaq 0x5185f(%rip), %rdi     # 0x5c297
callq 0x91d0
leaq 0x51853(%rip), %rdi     # 0x5c297
callq 0x91d0
leaq 0x51678(%rip), %rdi     # 0x5c0c8
leaq 0x515f7(%rip), %rsi     # 0x5c04e
leaq 0x515fd(%rip), %rcx     # 0x5c05b
movl $0x35, %edx
callq 0x9200
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0xabab
movq 0xb8(%rsp), %rsi
jmp 0xab7e
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
cmpq %r14, %rdi
je 0xabab
movq 0xd8(%rsp), %rsi
jmp 0xab7e
movq %rax, %rbx
movq 0x108(%rsp), %rdi
cmpq %r14, %rdi
je 0xaba1
movq 0x118(%rsp), %rsi
jmp 0xab3a
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r14, %rdi
je 0xaba1
movq 0x138(%rsp), %rsi
jmp 0xab3a
movq %rax, %rbx
movq 0x188(%rsp), %rdi
cmpq %r14, %rdi
je 0xaba1
movq 0x198(%rsp), %rsi
jmp 0xab3a
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
je 0xabab
movq 0xf8(%rsp), %rsi
jmp 0xab7e
movq %rax, %rbx
movq 0x168(%rsp), %rdi
cmpq %r14, %rdi
je 0xaba1
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x9340
jmp 0xaba1
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
cmpq %r14, %rdi
je 0xab95
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x9340
jmp 0xab95
movq %rax, %rbx
movq 0x148(%rsp), %rdi
cmpq %r14, %rdi
je 0xabab
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x9340
jmp 0xabab
jmp 0xaba8
jmp 0xaba8
jmp 0xab9e
jmp 0xab9e
jmp 0xab9e
movq %rax, %rbx
movl $0xd0, %esi
jmp 0xabb0
jmp 0xaba8
movq %rax, %rbx
movl $0x118, %esi            # imm = 0x118
jmp 0xabb0
movq %rax, %rbx
movl $0x178, %esi            # imm = 0x178
movq %r15, %rdi
callq 0x9340
jmp 0xabeb
jmp 0xac08
jmp 0xac08
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xabdc
movl %ebp, (%r13)
jmp 0xabdc
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xabdc
movl %r15d, (%r13)
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
jmp 0xac2d
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xac4f
movq 0x88(%rsp), %rsi
jmp 0xac37
jmp 0xac08
movq %rax, %rbx
jmp 0xac4f
jmp 0xac11
jmp 0xac11
movq %rax, %rbx
jmp 0xac6b
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xac24
movl %r15d, (%r13)
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xac4f
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x9340
jmp 0xac4f
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xac4f
movl %r15d, (%r13)
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xac6b
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x9340
movq %rbx, %rdi
callq 0x9670
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0xac81
movl %ebp, (%r13)
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0xac59